Falšování RSA podpisů podle Bleichenbachera

V uplynulých dnech zastínily chyby bash interpreteru zvané Shellshock ostatní zprávy včetně chyby v NSS ovlivňující verifikaci certifikátů ve Firefoxu a Chrome. Jedná se o další instanci ne celkem běžné zranitelnosti, která se ale opakovaně vyskytuje: Bleichenbacherův útok na RSA s malým veřejným exponentem, typicky 3.

Používání veřejného exponentu 3 u RSA je ještě celkem populární, protože zašifrování a ověřování podpisu je s tímto exponentem rychlé. Sám exponent 3 není nebezpečný, ale právě kvůli náchylnosti implementací na Bleichenbacherovu chybu se už nedoporučuje.

Pro zopakování si popíšeme, jak se ověřuje RSA podpis. Máme veřejný klíč, který se skládá z modulu N a veřejného exponentu e=3. Máme zprávu M, ke které je vygenerován podpis S. Pro ověření podpisu spočítáme:

c = S3 mod N

Výsledné číslo c by mělo být shodné s M. V praxi musí mít zpráva M specifický tvar, aby nebylo možné uplatnit „učebnicové“ útoky. Používá se PKCS#1 v1.5 padding, který vypadá následovně:

00 01 FF FF ... FF FF 00 ASN.1_blob hash

FF bajtů je tolik, aby „zarovnaly“ hash vpravo tak, aby celý blok měl velikost modulu (např. 256 bajtů pro 2048-bit modulus). ASN.1_blob je struktura, která specifikuje typ hashe, a poslední položkou je samotný hash původní zprávy, ke které podpis patří.

Bleichenbacherova chyba nastane, když dovolíme, aby za hashem bylo ještě nějaké smetí, které chybný ASN.1 parser odignoruje (zníží se nám počet vyplňujících FF FF bajtů a hash se posune doleva).

Smetí vpravo nám umožňuje vypočítat obyčejnou třetí odmocninu zaokrouhlenou dolů, takže se při umocňování podpis „neprotočí“ přes modulus N – na modulu klíče tedy podpis nebude vůbec záviset. Falešný podpis S2 vytvoříme následovně (M2 i S2 je v big-endian zápisu):

M2 = 00 01 FF FF FF FF FF FF FF FF 00 ASN.1_blob hash FF ... FF
S2 = floor(cube_root(M2))

Osm FF bajtů vlevo od ASN.1 blobu je zvoleno kvůli tomu, že to je minimální počet vyplňujících bajtů vyžadovaných od většiny implementací. Když se bude S2 kontrolovat jako podpis, umocní se na třetí a dostaneme:

c = S2^3 = 00 01 FF FF FF FF FF FF FF FF 00 ASN.1_blob hash smetí

Protože ale chybný parser ignoruje smetí za hashem, vyloupne si jenom hash, porovná ho proti hashi zprávy a prohlásí, že sedí. To „smetí“ místo původních FF bajtů na konci vzniklo tak, že jsme po odmocnění zaokrouhlili výsledek ve falešném podpisu.

Chyba v NSS je variantou tohoto útoku. V případě NSS se bajty nevyplňovaly vpravo od hashe, ale dovnitř ASN.1 blobu kvůli celočíselnému přetečení ve formátování ASN.1 struktur. Podrobný a velmi technický rozbor chyby v interpretaci ASN.1 blobu popisuje zápisek od Adama Langleyho.

Autor:

Komentáře (2)

  1. Petr Dušejovský říká:

    Dobrý den, obdržel jsem následující e-mail. Po předchozích zkušenostech s pokusy o podvod, prosím o info, zda mám nějak reagovat. Přeji hezký večer. Petr Dušejovský

    PRO: Petr Dušejovský

    Vážená paní, vážený pane,

    v souvislosti s registrací / prodloužením vaší domény .cz vás žádáme o provedení souhlasu

    s pravidly centrálního registru CZ.NIC z.s.p.o.. Tento souhlas se vztahuje na veškerá doménová jména, pro která je jako identifikátor kontaktu držitele použito ID SB:PETR-DUSEJOVSKY-66541590-HAM-HAM (viz. Whois databáze na http://www.nic.cz )

    UPOZORNĚNÍ! Dne 1.1.2014 vstoupila v platnost nová pravidla CZ.NICu. Je tedy nutné provést váš nový souhlas, přestože jste již případně dříve s pravidly pro tuto doménu souhlasili!

    Identifikátor souhlasu: 5Y6BR6QGDB3P

    Verze pravidel: 20140101

    Úplná znění pravidel naleznete na

    http://www.nic.cz/files/nic/doc/Pravidla_registrace_CZ_DSDng_20140101.pdf

    Tato pravidla si, prosím, pročtěte. Pro provedení souhlasu odpovězte na

    tento e-mail (se zachováním celé původní zprávy) a do předmětu e-mailu

    připište na konec velkými písmeny slovo „SOUHLAS“. Tato odpověď MUSÍ

    být odeslána z e-mailové adresy penzion@ham-ham.cz. V subjektu musí být zachován

    identifikátor této žádosti v hranatých závorkách.

    Změnu potvrďte nejpozději do 7 dní od zaslání tohoto požadavku.

    Pokud souhlas s pravidly nepotvrdíte, není možno domény registrovat, prodlužovat

    a ani u nich provádět některé další změny.

    Náhradním řešením pro provedení souhlasu je zaslat nám toto potvrzení pozemní

    poštou na adresu: INTERNET CZ, a.s., správa domén, Ktiš 2, 38403 Ktiš.

    Na této papírové žádosti musí být uveden identifikátor souhlasu (5Y6BR6QGDB3P),

    vyjádření výslovného souhlasu s „Pravidly registrace doménových jmen v doméně .cz“,

    podpis oprávněné osoby držitele domény a v případe firmy je treba připojit razítko. Vzor

    souhlasu naleznete na konci tohoto e-mailu.

    POZOR! Pokud máte jakékoliv dotazy, neodpovídejte na tento e-mail, ale pište

    na adresu domain@forpsi.com.

    Faxové číslo: +420 383835354

    vzor papírového / faxového souhlasu s pravidly:

    ———————————————————————-

    Identifikátor držitele: SB:PETR-DUSEJOVSKY-66541590-HAM-HAM

    Identifikátor souhlasu: 5Y6BR6QGDB3P

    Verze pravidel: 20140101

    Datum: 17.10.2014

    Jméno a příjmení: Petr Dušejovský

    Souhlasím s Pravidly registrace doménových jmen v doméně .cz, verze 20140101,

    jejichž úplné znění se nachází na:

    http://www.nic.cz/files/nic/doc/Pravidla_registrace_CZ_DSDng_20140101.pdf

    Podpis:

    Razítko:

    • Vilém Sládek říká:

      Dobrý den,

      s největší pravděpodobností se jedná o e-mail od registrátora, ve kterém jste žádán o souhlas s Pravidly registrace. Tato pravidla se měnila a proto je nový souhlas nutný.

      Pokud však máte pochybnosti, obraťte se přímo na daného registrátora:

      INTERNET CZ, a. s.
      http://www.forpsi.com
      E-mail: admin@forpsi.com
      telefon: +420 383 835 353 (nonstop), +420 383 835 355
      telefon: +421 252 623 007 (nonstop Slovensko)

      —-

      S pozdravem,

      Vilém Sládek

Zanechte komentář