it-swarm-eu.dev

Jaká jsou realistická a nejbezpečnější krypta pro šifry Symmetric, Asymmetric, Hash, Message Authentication Code?

Mám zájem o aktualizaci této dvou otázek s tématem pro rok 2011:

  1. Jaká kryptologie je nejvhodnější pro zařízení s nízkým výkonem (jako je mobilní telefon) a přesto účinná?

  2. Jaká kryptologie je pro vývojáře .NET nejbezpečnější?

V listopadu z '08 Rasmus Faber odpověděl toto podobná otázka přetečení zásobníku s touto odpovědí:

  • Symetrická šifra: AES-256

  • Asymetrická šifra: RSA s 4096 bitovým klíčem (věřím, že je maximum v .NET) nebo ECDSA s 571 bitovým klíčem (ale to je podporováno pouze v .NET 3.5)

  • Hash: SHA-512

  • Ověřovací kód zprávy: HMAC s SHA-512

Jak již bylo řečeno, tyto aplikace jsou pro většinu aplikací nadměrné a měli byste to udělat dobře pomocí AES-128, RSA s 2048 bitovým klíčem, SHA-256 a HMAC s SHA-256.

Platí tato doporučení i dnes?

24

Doporučení, která citujete, jsou trochu nadměrná. Jeden bod, který je třeba vzít v úvahu, je, že za určitou úrovní (např. Na velikosti klíče nebo velikosti výstupní funkce hash) jsou všechny funkce „nerozbitné s předvídatelnou technologií“ a je trochu delikátní je porovnat. Prohlášení, že SHA-512 je „robustnější“ než SHA-256, znamená, že si představujete, že by se SHA-256 mohla rozbít, což, pokud můžeme prozradit prozatím a následujících 40 let, není pravda (za 40 let) , pokusit se představit si, jaká technologie bychom mohli mít, je riskantní; před 40 lety si nikdo nepředstavoval internet tak, jak je dnes, ale většina lidí předpokládala, že do roku 2010 budeme všichni řídit létající auta).

AES-128 je již dostatečně bezpečný a levnější (AES-256 používá 14 kol, zatímco AES-128 používá 10 kol).

V současné době největší zlomený klíč RSA je 768bitový modul a vyžádalo si to obrovské úsilí (čtyři roky a opravdu velké mozky). 1024bitové klíče jsou považovány za použitelné pro krátkodobé zabezpečení, i když jsou podporovány větší klíče. Vhodné jsou 2048bitové klíče. Použití klíče dvakrát větší znamená 8krát více práce při podepisování nebo dešifrování, takže jej nechcete přehánět. Viz tento web , kde je uveden přehled toho, jak může délka klíče RSA souviset s bezpečností.

ECDSA na 256bitové křivce již dosahuje „nerozbitné“ úrovně zabezpečení (tj. Zhruba stejnou úroveň jako AES s 128bitovým klíčem nebo SHA-256 proti kolizím). Všimněte si, že existují eliptické křivky na prvočíslech a křivky na binárních polích; který druh je nejúčinnější záleží na použitém hardwaru (pro křivky podobné velikosti bude PC preferovat křivky na hlavním poli, ale vyhrazený hardware bude jednodušší vytvořit pomocí binárních polí; CLMUL instrukce pro novější procesory Intel a AMD to mohou změnit).

SHA-512 používá 64bitové operace. To je rychlé na PC, ne tak rychlé na smartcard. SHA-256 je často výhodnější řešení pro malý hardware (včetně 32bitových architektur, jako jsou domácí směrovače nebo smartphony).

Právě teď jsou levné systémy RFID příliš slabé na to, aby mohly používat některou z výše uvedených možností (jinými slovy, systémy RFID, které nemohou být tak levné, jak by mohly být). Systémy RFID stále používají vlastní algoritmy často pochybného zabezpečení. Na druhé straně mají mobilní telefony dostatek výkonu procesoru, aby mohly provádět správnou kryptografii pomocí AES nebo RSA (ano, dokonce i levné nenáročné telefony).

38
Thomas Pornin

Citovaná odpověď je moje odpověď na to, co je nejbezpečnější krypto v .NET.

Moje doporučení (pro zařízení s vysokým i nízkým výkonem):

  • Symetrická šifra: AES-128

  • Asymetrická šifra: RSA s 2048 bitovým klíčem nebo ECDSA/ECDH s 256 bitovým klíčem

  • Hash: SHA-256

  • Ověřovací kód zprávy: HMAC s SHA-256

  • Proudová šifra: AES-128 v režimu CTR

11
Rasmus Faber

Pokud jde o bezpečnost, tato doporučení jsou stále platná a stejná, jaká bych učinil.

Pro asymetrické šifry jsou to opravdu tři věci, které vás zajímají: šifrování, výměna klíčů a podpisy. RSA může být jak schéma šifrování, tak podpis, zatímco ECDSA je konkrétně podpis. Existují však i verze eliptické křivky šifrování a výměny klíčů (není však jisté, co je ve veřejné doméně). To znamená, že velikosti parametrů jsou pro všechny tři stejné.

Jediná další větev je, že SHA-256/512 bude brzy nahrazena, ale „brzy“ v tomto případě bude 2012.

Pokud jde o nízký výkon, opravdu záleží na tom, jak nízký výkon. Pokud máte na mysli chytrý telefon, máte na mysli všechny tyto možnosti. Pro čipovou kartu, RFID, senzorovou síť atd. Je to jiný příběh. Většina algoritmů s nízkým výkonem také nebude ve standardní knihovně. Nicméně bych vás nasměroval k velikostem parametrů v poslední větě „není nadměrná“.

6
PulpSpy

Pro zabezpečení do roku 2030 důvtipní lidé v NIST doporučují použít alespoň SHA-224, 2048 bitů pro RSA nebo DSA, 224-bit EDCSA a AES-128 nebo 3-klíčové triple-DES.

Na základě své práce americká vláda na konci roku 2010 tyto algoritmy odmítá: SHA-1, 1024bitový RSA nebo DSA, 160bitový ECDSA (eliptické křivky), 80/112bitový 2TDEA (dva klíčové trojité DES) )

Další informace naleznete v tomto příspěvku a v dokumentech NIST, na které odkazuje: http://securitymusings.com/article/1587/algorithm-and-key-length-deprecation

6
nealmcb

Cryptographic Right Answers od Colina Percivala v roce 2009 je do značné míry aktuální IMHO a pokrývá otázku a další.

5
Bruno Rohée

Pokud jde o symetrické šifry, může být lepší použít AES-128 místo AES-256 kvůli možným slabinám v plánu klíčů pro AES-256: http://www.schneier.com/blog/archives/2009/ 07/other_new_aes.html

2
Justin Clarke

Udělali jsme to, že jsme vybrali několik metod šifrování a hašování a převedli veškerý výstup na běžný hexadecimální formát. Naše nejcitlivější data používají SHA-256 a DES-3, zatímco méně citlivá data, která lze snadno uhodnout, používají MD5 a RC4 a také u některých věcí používáme přímou XOR) konverzi. Každá symetrická šifra má své vlastní heslo a všechna zašifrovaná data jsou opatřena kontrolním součtem. Spoléhat se na jedno šifrování je pro všechno nebezpečné.

0
Dave