In gewisser Weise können Sie die Stärke eines bestimmten Verschlüsselungsalgorithmus definieren¹: Grob gesagt ist die Stärke die Anzahl der Versuche, die unternommen werden müssen, um die Verschlüsselung zu unterbrechen. Genauer gesagt ist die Stärke der Rechenaufwand, der durchgeführt werden muss, um das Geheimnis zu finden. Im Idealfall ist die Stärke eines Algorithmus die Anzahl der Brute-Force-Versuche, die durchgeführt werden müssen (gewogen durch die Komplexität jedes Versuchs oder reduziert, wenn eine Art Parallelisierung mehrere Versuche ermöglicht, einen Teil der Arbeit zu teilen). Wenn sich Angriffe auf den Algorithmus verbessern, nimmt die tatsächliche Stärke ab.
Es ist wichtig zu wissen, dass der „bestimmte Verschlüsselungsalgorithmus“ die Berücksichtigung einer bestimmten Schlüsselgröße umfasst. Das heißt, Sie stellen nicht RSA gegen AES, sondern 1024-Bit-RSA (mit einem bestimmten Auffüllmodus) mit AES-256 (mit einem bestimmten Verkettungsmodus, IV usw.). In diesem Sinne können Sie fragen: Wenn ich eine Kopie meiner mit Algorithmus A verschlüsselten Daten mit vorgegebenen Werten der Parameter P und Q (insbesondere der Schlüsselgröße) und eine mit Algorithmus B mit den Parametern P und R verschlüsselte Kopie habe, dann Welches von (A, Pval₁, Qval₁) und (B, Pval₂, Rval₂) wird wahrscheinlich zuerst geknackt?
In der Praxis beinhalten viele Protokolle die Verwendung mehrerer kryptografischer Grundelemente. Unterschiedliche Grundelemente haben unterschiedliche Verwendungsmöglichkeiten, und selbst wenn mehrere Grundelemente eine bestimmte Funktion erfüllen können, kann es eines geben, das besser geeignet ist als andere. Bei der Auswahl eines kryptografischen Grundelements für einen bestimmten Zweck sieht der Entscheidungsprozess folgendermaßen aus:
- Welche Algorithmen können die Aufgabe übernehmen? → Ich kann A oder B oder C verwenden.
- Welche Stärke brauche ich? → Ich möchte 2 N-Operationen, daher benötige ich die Schlüsselgröße L A für Primitiv A, L B für Primitiv B, L C. sub> für primitives C.
- Angesichts meiner Einschränkungen (rohe Geschwindigkeit, Latenz, Speichereffizienz,…), welche von diesen (L A sub> -Bit A oder L B sub> -Bit B oder L C sub> -Bit C) ist am besten?
ol>
Angenommen, Ihre Anforderung ist ein Protokoll für den Datenaustausch mit einer Partei, der Sie nicht vertrauen. Dann kann die symmetrische Kryptografie den Job nicht alleine erledigen: Sie benötigen eine Möglichkeit, den Schlüssel gemeinsam zu nutzen. Asymmetrische Kryptografie wie RSA kann die Aufgabe übernehmen, wenn Sie die Parteien im Voraus öffentliche Schlüssel austauschen lassen. (Dies ist nicht die einzige Möglichkeit, aber ich werde hier nicht auf Details eingehen.) Sie können also entscheiden, welche RSA-Schlüssellänge die richtige Stärke für Ihre Anwendung hat. RSA ist jedoch langsam und umständlich (zum Beispiel gibt es keine Standardprotokolle, um die RSA-Verschlüsselung auf einen Stream anzuwenden - hauptsächlich, weil sich niemand darum gekümmert hat, weil sie so langsam wären). Viele gängige Protokolle zur Kryptografie mit öffentlichem Schlüssel verwenden sie nur, um ein Geheimnis von begrenzter Dauer auszutauschen: einen Sitzungsschlüssel für einen symmetrischen Kryptografiealgorithmus. Dies wird als Hybridverschlüsselung bezeichnet. Auch hier wählen Sie die Länge des Sitzungsschlüssels entsprechend der gewünschten Stärke. In diesem Szenario haben die beiden beteiligten Grundelemente tendenziell die gleiche Stärke.
¹ Der gleiche Begriff gilt für andere Verwendungen der Kryptographie, wie z. B. Signieren oder Hashing. Sub>