it-swarm-eu.dev

Was ist die realistische und sicherste Krypto für Chiffren mit symmetrischem, asymmetrischem, Hash- und Nachrichtenauthentifizierungscode?

Ich bin daran interessiert, diese zweigleisige Frage für 2011 zu aktualisieren:

  1. Welche Kryptologie eignet sich am besten für Geräte mit geringem Stromverbrauch (z. B. ein Mobiltelefon) und ist dennoch effektiv?

  2. Welche Kryptologie ist für einen .NET-Entwickler am sichersten?

Im November '08 Rasmus Faber beantwortet dies ähnliche Stapelüberlauf-Frage mit dieser Antwort:

  • Symmetrische Verschlüsselung: AES-256

  • Asymmetrische Verschlüsselung: RSA mit 4096-Bit-Schlüssel (ich glaube, das ist das Maximum in .NET) oder ECDSA mit 571-Bit-Schlüssel (dies wird jedoch nur in .NET 3.5 unterstützt)

  • Hash: SHA-512

  • Nachrichtenauthentifizierungscode: HMAC mit SHA-512

Davon abgesehen sind diese für die meisten Anwendungen übertrieben, und Sie sollten AES-128, RSA mit 2048-Bit-Schlüssel, SHA-256 und HMAC mit SHA-256 verwenden.

Treffen diese Empfehlungen heute noch zu?

24

Die Empfehlungen, die Sie zitieren, sind irgendwie übertrieben. Ein zu berücksichtigender Punkt ist, dass ab einer bestimmten Ebene (z. B. bei der Schlüsselgröße oder der Ausgabegröße der Hash-Funktion) alle Funktionen "mit vorhersehbarer Technologie unzerbrechlich" sind und es etwas schwierig ist, sie zu vergleichen. Die Aussage, dass SHA-512 "robuster" als SHA-256 ist, bedeutet, dass Sie sich vorstellen, dass SHA-256 beschädigt werden könnte, was, soweit wir dies jetzt und in den nächsten 40 Jahren beurteilen können, nicht zutrifft (über 40 Jahre hinaus) Der Versuch, sich vorzustellen, welche Technologie wir haben könnten, ist riskant. Vor 40 Jahren stellte sich niemand das Internet so vor, wie es heute ist, aber die meisten Menschen gingen davon aus, dass wir bis 2010 alle fliegende Autos fahren würden.

AES-128 ist bereits sicher genug und kostengünstiger (AES-256 verwendet 14 Runden, während AES-128 10 Runden verwendet).

Der derzeit größte kaputte RSA-Schlüssel ist ein 768-Bit-Modul, und es hat einige enorme Anstrengungen gekostet (vier Jahre und wirklich große Köpfe). 1024-Bit-Schlüssel werden für die kurzfristige Sicherheit als verwendbar angesehen, obwohl größere Schlüssel empfohlen werden. 2048-Bit-Schlüssel sind angemessen. Die Verwendung eines doppelt so großen Schlüssels bedeutet achtmal mehr Arbeit für das Signieren oder Entschlüsseln, sodass Sie ihn nicht übertreiben möchten. Unter diese Site finden Sie eine Übersicht darüber, wie die Länge des RSA-Schlüssels mit der Sicherheit in Beziehung gesetzt werden kann.

ECDSA über eine 256-Bit-Kurve erreicht bereits ein "unzerbrechliches" Sicherheitsniveau (d. H. Ungefähr das gleiche Niveau wie AES mit einem 128-Bit-Schlüssel oder SHA-256 gegen Kollisionen). Beachten Sie, dass es auf Primfeldern elliptische Kurven und auf Binärfeldern Kurven gibt. Welche Art am effizientesten ist, hängt von der verwendeten Hardware ab (bei Kurven ähnlicher Größe bevorzugt ein PC die Kurven in einem Hauptfeld, dedizierte Hardware lässt sich jedoch leichter mit Binärfeldern erstellen; die CLMUL Anweisungen auf den neueren Intel- und AMD-Prozessoren können dies ändern.

SHA-512 verwendet 64-Bit-Operationen. Dies ist auf einem PC schnell, auf einer Smartcard nicht so schnell. SHA-256 ist häufig ein besseres Angebot für kleine Hardware (einschließlich 32-Bit-Architekturen wie Heimrouter oder Smartphones).

Im Moment sind billige RFID-Systeme zu stromsparend, um eines der oben genannten zu verwenden (mit anderen Worten, RFID-Systeme, die nicht so billig sein können, wie sie sein könnten). RFID-Systeme verwenden immer noch benutzerdefinierte Algorithmen mit häufig fragwürdiger Sicherheit. Mobiltelefone hingegen verfügen über ausreichend CPU-Leistung, um eine ordnungsgemäße Kryptografie mit AES oder RSA durchzuführen (ja, sogar billige Nicht-Smartphones).

38
Thomas Pornin

Die zitierte Antwort ist meine Antwort auf die sicherste Krypto in .NET.

Meine Empfehlungen (sowohl für Geräte mit hoher als auch mit niedriger Leistung):

  • Symmetrische Verschlüsselung: AES-128

  • Asymmetrische Verschlüsselung: RSA mit 2048-Bit-Schlüssel oder ECDSA/ECDH mit 256-Bit-Schlüssel

  • Hash: SHA-256

  • Nachrichtenauthentifizierungscode: HMAC mit SHA-256

  • Stream-Verschlüsselung: AES-128 im CTR-Modus

11
Rasmus Faber

In Bezug auf die Sicherheit sind diese Empfehlungen immer noch gültig und das gleiche, was ich machen würde.

Bei asymmetrischen Chiffren gibt es drei Dinge, mit denen Sie sich befassen: Verschlüsselung, Schlüsselaustausch und Signaturen. RSA kann sowohl ein Verschlüsselungs- als auch ein Signaturschema sein, während ECDSA speziell eine Signatur ist. Es gibt jedoch auch Versionen mit elliptischer Kurve für Verschlüsselung und Schlüsselaustausch (nicht sicher, was gemeinfrei ist). Die Parametergrößen sind jedoch für alle drei gleich.

Die einzige andere Kavette ist, dass SHA-256/512 bald ersetzt wird, in diesem Fall jedoch "bald" 2012.

In Bezug auf den Stromverbrauch hängt es wirklich davon ab, wie wenig Strom verbraucht wird. Wenn Sie mit Handy ein Smartphone meinen, sind alle diese angemessen. Für eine Smartcard, RFID, ein Sensornetzwerk usw. ist das eine andere Geschichte. Außerdem befinden sich die meisten Algorithmen mit geringem Stromverbrauch nicht in einer Standardbibliothek. Ich würde Sie jedoch zu den Parametergrößen im letzten Satz "nicht übertrieben" lenken.

6
PulpSpy

Für die Sicherheit bis zum Jahr 2030 empfehlen die versierten Mitarbeiter von NIST, mindestens SHA-224, 2048 Bit für RSA oder DSA, 224-Bit-EDCSA und AES-128 oder 3-Schlüssel-Triple-DES zu verwenden.

Basierend auf ihrer Arbeit hat die US-Regierung Ende 2010 diese Algorithmen abgelehnt: SHA-1, 1024-Bit-RSA oder DSA, 160-Bit-ECDSA (elliptische Kurven), 80/112-Bit-2TDEA (Two Key Triple DES) )

Weitere Informationen finden Sie in diesem Beitrag und in den NIST-Dokumenten, auf die verwiesen wird: http://securitymusings.com/article/1587/algorithm-and-key-length-deprecation

6
nealmcb

Cryptographic Right Answers von Colin Percival aus dem Jahr 2009 ist meiner Meinung nach immer noch ziemlich aktuell und deckt die Frage und mehr ab.

5
Bruno Rohée

Bei symmetrischen Chiffren ist es möglicherweise besser, AES-128 anstelle von AES-256 zu verwenden, da der Schlüsselplan für AES-256 möglicherweise Schwachstellen aufweist: http://www.schneier.com/blog/archives/2009/) 07/another_new_aes.html

2
Justin Clarke

Wir haben mehrere Verschlüsselungs- und Hashing-Methoden ausgewählt und die gesamte Ausgabe in ein gemeinsames Hex-Format konvertiert. Unsere sensibelsten Daten verwenden SHA-256 und DES-3, während weniger sensible Daten, die leicht erraten werden können, MD5 und RC4 verwenden und wir für einige Dinge auch eine direkte XOR -Konvertierung) verwenden. Jede symmetrische Verschlüsselung hat ein eigenes Passwort und alle verschlüsselten Daten sind mit einer Prüfsumme versehen. Es ist gefährlich, sich für alles auf eine Verschlüsselung zu verlassen.

0
Dave