2010-01-05 15 views
6

Für meine iPhone-Anwendung möchte Apple wissen, ob meine Passwortverschlüsselung (md5) größer als 64-Bit-symmetrisch oder größer als 1024-Bit-symmetrisch ist. Ich konnte es nicht online finden, also frage ich mich, ob jemand die Antwort kennt. Wird dies auch als eine geeignete Verschlüsselungstechnologie für Passwörter angesehen, oder sollte ich etwas anderes verwenden?Ist die Md5-Verschlüsselung symmetrisch oder asymmetrisch?

Danke für jede Hilfe!

Antwort

32

MD5 ist eine Hash-Funktion, also per Definition nicht reversibel. Dies gilt nicht für die Verschlüsselung (entweder symmetrisch oder asymmetrisch), die reversibel sein muss, um nützlich zu sein.

Um genauer zu sein, Hashes sind Einwegfunktionen, in denen eine unendliche Anzahl von Eingängen zu einem einzigen Ausgang zugeordnet werden kann, so ist es unmöglich, die genaue Eingabe zu erhalten, die zu einer bestimmten Ausgabe führte.

Es kann jedoch möglich sein, einen anderen Eingang zu finden, der auf den gleichen Ausgang hasht. Dies wird als Kollision bezeichnet.

Im Allgemeinen ist das Hashing von Passwörtern anstelle des Speicherns von Klartext (sogar verschlüsselt) eine gute Idee. (Noch besser, wenn ein Salz verwendet wird) MD5 hat jedoch bekannte Schwächen (und große Sammlungen von Rainbow-Tabellen, die beim Auffinden von Kollisionen helfen), daher wäre es eine gute Idee, zu etwas wie SHA-1 oder einem der SHA-2 zu wechseln Familie von Hashes.

Um jedoch Ihre ursprüngliche Frage zu beantworten, gibt es wirklich keine Möglichkeit, MD5 oder Hash gegen jede Art von Verschlüsselung zu vergleichen; Sie haben keine Entsprechungen, weil es ist, als ob man Äpfel und Orangen vergleicht.

+3

Hallo Peter: Bedeutet dies, dass meine App nicht "Verschlüsselung" enthält? – PF1

+1

Streng genommen, nein. Die Verwendung von MD5 oder einer anderen Hash-Funktion, so dass das tatsächliche Passwort nicht gespeichert wird, wird manchmal als "Einwegverschlüsselung" bezeichnet, obwohl die Verwendung des Begriffs Verschlüsselung falsch ist: (Obligatorischer Wikipedia-Link: http: //en.wikipedia .org/wiki/One-way_encryption) – Peter

+0

Ich weiß, das ist spät, aber nur um hinzuzufügen ... Anstatt SHA-1 oder SHA-2 zu verwenden, könntest du auch versuchen, einen Hash zu salzen oder sogar MD5 und SHA zu verwenden -1. –

7

md5 ist nicht wirklich symmetrische oder asymmetrische Verschlüsselung, weil sie weder symmetrisch noch asymmetrisch reversibel ist. Es ist ein Message Digest (sicherer Hash) -Algorithmus.

2

Es ist NICHT Verschlüsselung überhaupt.

5

Es ist keine Verschlüsselung, es ist ein Digest. Wenn Sie es nicht gesalzen haben, ist es nicht besonders sicher, aber sie stellen Ihnen die falsche Frage.

Was genau machst du mit MD5 und Passwörter? Es gibt hier Standardmethoden, und es ist immer besser, eine zu verwenden, aber ohne zu wissen, was Sie tun wollen, ist es schwierig, Sie auf einen relevanten Standard hinzuweisen.

0

Ich denke, dass MD5 für bessere Sicherheit verwendet wird .... wenn wir über irgendeinen Verschlüsselungs- oder Entschlüsselungsalgorithmus erzählen, sind sie nur zum Konvertieren irgendeines einfachen Textes in verschlüsselten Text ... aber auf der anderen Seite bietet MD5 eine Einzigartigkeit an dieser Klartext, der von einer beliebigen Quelle (Alice) gesendet werden würde ... so können wir sagen, dass für eine bessere Sicherheit oder zum Bereitstellen von Umgehung im Klartext MD5 verwendet werden sollte, bevor Sie eine Verschlüsselung Algothim (symmetrisch oder asymmetrisch) verwenden.

0

Wie die zahlreichen anderen Leute hier erwähnt haben, ist MD5 kein symmetrischer oder asymmetrischer Algorithmus.

Stattdessen kommt es unter einem anderen Zweig in der Kryptographie alle zusammen. Es ist einer der kleinsten Hashing-Algorithmen, die im .Net-Framework verfügbar sind. Bei nur 16 Bytes für seine Schlüsselgrößen, die 128 Bit sein sollten. Etwas, mit dem du dein Brot und Butter lernst.

Also ja, es ist größer als 64bit, die nur 8 Bytes groß ist.

Die maximale Schlüssellänge, die die üblichen Symmec 'enc' algs verwenden, ist 256bit (Rijndael Managed).

Wenn Sie größere Schlüsselgrößen suchen, können Sie die RC2 Symm 'enc' algs verwenden, die variable Schlüsselgrößen unterstützen. Etwas, mit dem du experimentieren kannst?

Wenn Sie höher als 1024bit wollen, dann müssen Sie auf Asymm 'Enc' Algs wie die RSACryptoServiceProvider-Klasse, die Schlüsselgrößen unterstützt bis zu 16K Bits gehen, denke ich?

Wenn Sie Passwörter verwenden möchten, dann müssen Sie Keyed Hashing Algs, wie alles HMAC 'etwas, sie sollten Keyed Hashing-Algorithmen oder MacTripleDes sein. Diese verwenden alle geheime Schlüssel, um den Hash zu verschlüsseln, der aus den von Ihnen gelieferten Daten generiert wird. Die Schlüssel werden mithilfe von Kennwörtern und Salt-Werten über die RFC2898DerivesBytes-Klasse erstellt. < - Vergessen Sie nicht, dass RC2, Rijndael, AES, DES und etc alle eingerichtet werden können, um Passwörter zu verwenden, um die geheimen Schlüssel abzuleiten. Falls Sie denken, dass der Anfangssatz dieses Absatzes ein wenig irreführend ist. Also habe ich das hinzugefügt, um sicher zu sein, falls Hashing nicht das ist, was Sie überhaupt brauchen.

* ERINNERN SIE SICH, DASS EINZIGARTIGE VERERBUNGEN HIERARCHIEN IN. Cryptography NameSpace .net sind. Also MD5 ist die Basis-Abstract-Klasse, von der alle MD5-abgeleiteten Klassen abgeleitet werden sollen. .Net stellt eine solche abgeleitete Klasse zur Verfügung, die als MD5CryptoServiceProvider-Klasse bezeichnet wird. Dies ist im Wesentlichen eine verwaltete Wrapper-Klasse, die den Aufruf der unmanaged Crypto-Libraries-API für Windows aufruft. MD5 ist in offiziellen MS-Lehrbüchern unter dem Überbegriff "Non-Keyed Hashing Algorithm" bekannt. *

Es gibt viele Möglichkeiten für Sie.

:) Viel Spaß!

2

Apple stellt die Frage nach der Verwendung von MD5 für das Hashing von Kennwörtern, um festzustellen, ob für den Export eine Genehmigung vom Handelsministerium/Büro für Industrie und Sicherheit erforderlich ist. Die Antwort für diesen Zweck ist, dass die Verwendung von MD5 für den Passwortschutz nicht als starke Verschlüsselung (wie symmetrische Algorithmen mit mehr als 64 Bit) gemäß der technischen Anmerkung zu 15 CFR Teil 774, Anhang 1, ECCN 5A002, gesteuert wird. Absatz a.1, der die Verschlüsselung für den Passwortschutz beschreibt. Es kann jedoch immer noch unter ECCN 5A992 kontrolliert werden.

http://www.bis.doc.gov/encryption/ccl5pt2.pdf

Die anderen Antworten sind nicht hilfreich im Zusammenhang mit der, warum die Frage gestellt wurde.

Sie können auch das Department of Commerce/Bureau of Industry and Security unter 202-482-0707 anrufen und nach Ihrer spezifischen Anwendung fragen.

1

Hash-Funktion die meiste Zeit ist eine Möglichkeit, Ihre Daten zu komprimieren. Sie sind Einweg-Hash-Funktionen, was bedeutet, dass sie schwer zu reversieren sind (mit der Hash-Funktion = Digest einer Nachricht ist es schwierig, die ursprüngliche Nachricht zu finden, die in den spezifischen Hash-Wert konvertiert wird). Auf der anderen Seite sind sehr einfach zu implementieren, da keine Art von Schlüssel benötigt wird.

Es ist kein symmetrischer oder asymmetrischer Algorithmus. Diese Art von Algorithmen werden verwendet, um Daten zu verschlüsseln und nicht zu hashen. Die Verschlüsselung wird aus Gründen der Vertraulichkeit verwendet, um Daten vor Angreifern zu schützen, die versuchen, die Daten von anderen zu lesen.

Verschlüsselung oder Verschlüsselungsalgorithmen benötigen Schlüssel, um ihre Aufgaben im Gegensatz zu Hashes auszuführen, wo sie keine Art von Schlüssel benötigen. Hashes werden nicht aus Gründen der Vertraulichkeit, sondern aus Integritätsgründen verwendet, auch wenn sie nicht stark genug sind.MD5 ist ein Typ einer Hash-Funktion, wo viele andere existieren, weil MD5 nicht stark genug ist

Verwandte Themen