Seminararbeit Kryptographie

Größe: px
Ab Seite anzeigen:

Download "Seminararbeit Kryptographie"

Transkript

1 Seminararbeit Kryptographie OCB: A Block-Cipher Mode of Operation for Efficient Authenticated Encryption von Phillip Rogway Mihir Bellare John Black Ted Krovetz Alexander Brunner

2 Übersicht: Im folgenden Papier wird die neue Betriebsart für Blockchiffren, OCB (Offset CodeBook), beschrieben. Diese garantiert gleichzeitig Geheimhaltung und Integrität und ist im gegensatz zu z.b. CBC parallelisierbar. OCB verschlüsselt und authentifiziert einen nichtleeren String M {0,1} * durch M /n +2 Aufrufe der Blockchiffre, wobei n die Blocklänge der zugrunde liegenden Blockchiffre und M die Länge der Nachricht ist. Der zusätzliche Overhead ist hierbei gering. OCB verfeinert einen Entwurf von Jutla, IAPM. Die wünschenswerten Eigenschaften von OCB schließen dabei ein: Verschlüsselung einer Nachricht beliebiger Länge zu einem minimalen Chiffretext, günstige Offset- Berechnungen, günstige Schlüssel-Vorbereitung, Verwendung eines einzigen Schlüssels, nahezu optimale Anzahl an Aufrufen der Blockchiffre, kein zufälliger Initialisierungsvektor (IV) notwendig. 1. Einführung: Ein beglaubigtes Verschlüsselungs-Schema ist ein Schema, dessen Ziel es ist Geheimhaltung und Echtheit zu gewährleisten. Der Verschlüsselungsalgorithmus nimmt einen Schlüssel, einen Klartext und einen IV entgegen und gibt einen Chiffretext zurück. Der Entschlüsselungsalgorithmus nimmt einen Schlüssel, einen Chiffretext und einen IV entgegen und gibt entweder einen Klartext oder einen Fehler ( INVALID ) zurück, falls die Integrität verletzt wurde. Zusätzlich zur Geheimhaltung sorgt der Algorithmus also auch für die Echtheit, d.h. wenn ein Angreifer einen Chiffretext erzeugt (also nicht mittels des Schlüssel eine Nachricht verschlüsselt), wird dies bei der Entschlüsselung fast sicher entdeckt und eine Fehlermeldung ausgegeben. So ein beglaubigtes Verschlüsselungs-Schema kann dadurch erreicht werden, indem man ein Verschlüsselungs-Schema und einen MAC angemessen kombiniert, was in der Praxis auch gemacht wird. Ein Schema das beides auf einmal macht verursacht signifikant geringere Kosten, als zuerst verschlüsseln und dann den MAC erzeugen. Der klassische Ansatz dabei ist die Verschlüsselung mit Redundanz, wobei vor der Verschlüsselung eine Checksumme an den Klartext angehängt wird, typischerweise wird dabei CBC eingesetzt. Viele dieser Entwürfe wurden geknackt; in jüngster Zeit wurde jedoch ein beweisbar sicheres Schema von Jutla vorgestellt. MODUS: OCB vereinigt folgende Merkmale: - Nachrichten willkürlicher Länge werden zu einem Chiffretext minimaler Länge verschlüsselt - nahezu optimale Anzahl von Blockchiffre-Aufrufen (2 mehr als Blöcke) - minimal Anforderungen an den IV - effiziente Offset-Berechnungen - es wird nur ein einziger Schlüssel gebraucht Alexander Brunner Seminar Kryptographie - 2 -

3 Performance: Exprimente auf einem Pentium III haben gezeigt, daß OCB gerade mal 6,5% langsamer als CBC ist, der nur die Geheimhaltung garantiert. Gegenüber CBC + CBC MAC benötigt OCB nur 54% der Zeit, die Zahlen beruhen auf der zugrunde liegenden Blockchiffre AES mit 128 Bit Schlüssel. Hat man die Möglichkeit zur Parallelisierung ist OCB schneller als CBC. Hohe Verschlüsselungsgeschwindigkeiten (z.b. 10 Gbits/sek.) unter CBC + CBC MAC kann man mit heutiger Hardware nicht erreichen, dazu muß man OCB verwenden. Sicherheitseigenschaften: Es wird die Sicherheit von OCB beweisen, speziell die Ununterscheidbarkeit unter chosen-plaintext Angriff und Echtheit des Chiffretextes. Diese Kombination schließt Ununterscheidbarkeit unter der stärksten Angriffsform, chosen-ciphertext Angriff (CCA) ein. Der Geheimhaltungsbeweis geht davon aus, daß die zugrunde liegende Blockchiffre gut im Sinne von pseudozufälligen Permutation ist, während unser Beweis der Echtheit annimmt, daß die Blockchiffre stark ist. Es wird betont, daß OCB stärkere Sicherheitseigenschaften als andere Betriebsarten besitzt. Im besonderen hat OCB Eigenschaften, die CBC und den anderen Standards fehlen, z.b. Ununterscheidbarkeit gegenüber chosen-ciphertext Angriffe. Ausblick: In den meisten Fällen, in denen Geheimhaltung verlangt wird, wird auch die Echtheit gewünscht. Als Konsequenz daraus, wird sich schnelle zuverlässige Verschlüsselung rasch durchsetzen. 2. Mathematische Grundlagen a <= b, dann [a b] ist {a, a+1,, b-1, b} ntz(i) = Anzahl der endständigen Nullen in der Binärdarstellung (Bsp.: = 0, = 3) String: endliche Sequenz aus 0- bzw. 1-bits, leerer String heißt ε {0,1}* Menge aller Strings AB bzw. A B ist Verkettung von A, B {0,1}* firstbit(a) bzw. lastbit(a) bezeichnet die ersten bzw. letzten Bits von A, wenn A {0,1}* und A ε i, n positive Zahlen, dann sind 0 i und 1 i Strings der Länge i bestehend aus 0- bzw. 1- bits {0,1} n Menge aller Strings der Länge n A Länge des Strings A, falls A {0,1}* A n = max (1, A /n ), Größe von A in n-bit Blocks, leerer String zählt als ein Block A < n, d.h. Stringlänge ist kleiner als die Blocklänge Alexander Brunner Seminar Kryptographie - 3 -

4 zpad n (A) ist der String A0 n- A, d.h. String A aufgefüllt mit 0 bis ganzer Block gefüllt A {0,1}* und τ [0 A ] Dann gilt A[first τ Bits] und A[last τ Bits] geben die ersten bzw. letzten τ Bits von A an; falls τ = 0 sind beide Strings leer falls A, B {0,1}*, dann ist A B das bitweise XOR von A und B = min( A, B ), d.h. es werden bei A B nur die ersten Bits verknüpft (ε A = A ε = ε), Bsp.: = = 01 A = a n a n-1.a 1 a 0 {0,1} n str2num = ein Bitstring wird in eine Zahl im Dezimalsystem umgewandelt num2str n (a) = Binärdarstellung von a, Auffüllen mit führenden Nullen, bis Stringlänge n erreicht wurde len a (A) = num2str n ( A ) = Anzahl der Zeichen von A in, evtl. aufgefüllt mit 0-bits A = a n-1.a 1 a 0 {0,1} n A<<1 = Linksshift a n-2 a n-3.a 1 a 0 0, d.h. das erste Bit wird weggelassen, dafür wird am Ende eine 0 angehängt A>>1 = Rechtsshift 0a n-1 a n-2.a 1, d.h. das letzte Bit wird weggelassen, dafür wird am Anfang eine 0 eingefügt Partition M into M[1]M[2] M[m], teilt die Nachricht M in m Blöcke auf Partition into C[1]C[2] C[m]T, teilt die Chiffretext in m Blöcke auf C = [first ( - τ) Bits], T = [last τ Bits] Der endliche Körper GF(2 n ): Multiplikation: (a*b) : p(x) das gesuchte Ergebnis ist der Rest nach der Division durch Polynom p(x); p 128 (x) = x 128 +x 7 +x 2 +x+1 Multiplikation mit x: a geg. a * x = a<<1 falls firstbit(a) = 0 (a<<1) falls firstbit(a) = 1 Division: Division durch Multiplikation mit dem multiplikativen Inversen von x x -1 a * x -1 = a>>1 falls lastbit(a) = 0 (a>>1) falls lastbit(a) = 1 L {0,1} n und i 0, L(i) kurz für L * x i L(0) = L, L(1) = L * x, L(2) L * x 2 = L(1) * x = (L * x) * x L(i) = L(i-1) * x Alexander Brunner Seminar Kryptographie - 4 -

5 Gray-Code: alternative Binärdarstellung, benachbarte Zahlen unterscheiden sich nur in einem einzigen Bit (im Sinne des Hammingabstandes) γ 0 = 0, γ 1 = 1 γ i = γ i-1 0 n-1 1 << ntz(i) L {0,1} n : γ i* L = (γ i-1* L) L(ntz(i)), wobei gilt: L(i) = L * x i 3. Schema: Zuerst man muß die verwendete Blockchiffre und die Lange des tag spezifizieren. Die Blocklänge n kann willkürlich gewählt werden, sollte aber zwischen 64 und 128 bit betragen. Die Länge des tag wird mit τ bezeichnet und sollte zwischen 0 n bit betragen (hängt von der Anwendung ab). Eine Länge von 64 bit ist vernünftig, tags über 80 Bit führen zu einem zweifelhaftem Sicherheitsgewinn, dadurch wird auch der Chiffretext länger. Ein Angreifer kann mit einer Wahrscheinlichkeit von 2 -τ einen Chiffretext fälschen, d.h. je länger der tag, dest geringer die Wahrscheinlichkeit für einen Angreifer einen Chiffretext zu fälschen. Es gibt zwei Varianten von OCB: OCB-E: OCB mit Blockchiffre E und unspezifizierter Länge τ OCB[E, τ]: OCB mit Blockchiffre E und tag der Länge τ Nonce: Zur Verschlüsselung braucht man einen n-bit Wert N (ähnlich einem IV oder Counter), dieser wird vom Sender bestimmt. Dieser muß nicht notwendig geheim sein. Die Sicherheit ist auch gewährleistet, wenn ein Angreifer N kontrollieren kann, solange N nur einmal in der aktuellen Sitzung (d.h. unter dem gleichen Schlüssel) verwendet wird. N braucht man für die Ver- und Entschlüsselung und wird normalerweise wird N im Klartext übertragen. Beschreibung des Schemas: Schlüsselerzeugung: Wähle einen zufälligen Schlüssel aus der Schlüsselraum der zugrunde liegenden Blockchiffre, dieser wird zur Ver- und Entschlüsselung benötigt, muß also auch dem Empfänger der Nachricht mitgeteilt werden Schlüsselvorbereitung: Für die Ver- und Entschlüsselung muß man den Schlüssel gemäß der zugrunde liegenden Blockchiffre vorbereiten. Alexander Brunner Seminar Kryptographie - 5 -

6 Berechne L = E K (0 n ), m = maximale Anzahl an n-bit Blöcken, der Nachricht. Seien µ = log 2 n, L(0) = L und für i [1...µ], berechne L(i) = L(i-1) * x mittels Shift und XOR Operationen. Berechne L(-1) = L * x -1 ; speichere die Werte von L(-1), L(0),..., L(µ) in einer Tabelle. Verschlüsselung: Um den Klartext M {0,1} * unter dem Schlüssel K, und der Nonce N {0,1} n zu dem Chiffretext zu verschlüsseln, muß man folgendes tun. Sei m M /n ; falls m = 0, setze m =1, teile M in m n-bit Blöcke auf, dabei muß der Block M[m] nicht komplett gefüllt sein. Offset E K (N L); Checksum 0 n, Für i = 1 m-1 tue: Checksum Checksum M[i] Offset Offset L(ntz(i)) C[i] E K (M[i] Offset) Offset Offset Offset L(ntz(m)) Y[m] E K (len(m[m]) L(-1) Offset) C[m] M[m] first M[m] bits von (Y[m]) Checksum Checksum Y[m] C[m]0 * T first τ bits von E K (Checksum Offset) Chiffretext ist = C[1] C[m-1]C[m]T, dieser muß zusammen mit der Nonce übertragen werden. Entschlüsselung: Um einen Chiffretext {0,1} * unter einem Schlüssel K und einer Nonce N zu dem Klartext M {0,1} * zu entschlüsseln oder die Fehlermeldung INVALID zu bekommen, muß man folgendendermaßer vorgehen. Falls < τ, dann weise den Chiffretext zurück. Anderenfalls sei C = first ( - τ) Bits und T = die restlichen Bits. Sei m C /n. Falls m = 0, dann setze m = 1. Teile in m n-bit blöcke auf. Offset E K (N L); Checksum 0 n, für i = 1 m-1 tue: Offset Offset L(ntz(i)) M[i] E K -1 (C[i] Offset) Offset Checksum Checksum M[i] Offset Offset L(ntz(m)) Y[m] E K (len(c[m]) L(-1) Offset) M[m] C[m] first C[m] bits von (Y[m]) Checksum Checksum Y[m] C[m]0 * T = first τ bits von (Checksum Offset) Falls T T, dann ist ein Fehler aufgetreten (Chiffretext wurde zurückgewiesen), sonst ist der Klartext M = M[1] M[m-1]M[m]. Alexander Brunner Seminar Kryptographie - 6 -

7 4. Diskussion: OCB hat eine Vielzahl von wünschenswerten Vorteilen: Beliebige Nachrichtenlängen: Jede Nachricht kann ver- und entschlüsselt werden, unabhängig von deren Länge, d.h. letzter Nachrichtblock muß im Gegensatz zu CBC nicht aufgefüllt werden. Der Chiffretext hat Länge M + τ. Ein einziger Schlüssel: Es wird nur ein einziger Schlüssel verwendet, alle Aufrufe der Blockchiffre benutzen diesen Schlüssel; dies führt zu einer Einsparung von Speicherplatz und Vorbereitungszeit. Geringe Anforderungen an die Nonce: Es ist sehr aufwendig einen IV wirklich zufällig zu erzeugen, darauf muß man bei OCB nicht achten, denn Nonce kann dem Angreifer bekannt sein. Man muß die Nonce auch nicht extra verschlüsseln, sondern kann sie im Klartext übertragen. Bearbeitung: Ver- und Entschlüsselung in Reihe, d.h man muß die Länge der Nachricht nicht im vorhinein kennen; man kann die Nachricht bearbeiten, bis man auf eine Markierung trifft, die das Ende anzeigt Bedeutsame Ineffizienz: Ungefähr ein Drittel aller Nachrichten im Internet haben nur 43 Bytes. Wenn man solche kurzen Nachrichten verschlüsselt, muß man vorsichtig mit der Expansion umgehen, denn dabei gibt es eine beträchtliche prozentuale Ineffizienz. Endian-Neutralität: OCB bevorzugt weder Big Endian (RISC, Motorola) noch Little Endian (Intel) Systeme. Optionale Berechnung im voraus: Die einzelnen Implementierungen können selbst bestimmen, wie viele L(i) Werte sie im voraus berechnet werden. Tradeoff zwischen Speicherplatz und Geschwindigkeit. Da nur ein einziger Schlüssel benötigt wird, um diese Werte zu berechnen - plus einige Shift- und XOR-Operationen - ist es machbar auf das Preprocessing zu verzichten. Alexander Brunner Seminar Kryptographie - 7 -

8 Beweisbare Sicherheit: Beweisbare Sicherheit ist wichtiges Ziel geworden; es ist die beste Möglichkeit um sicherzustellen, daß das kryptographische Schema auch das tut, was es soll. Wurde die Sicherheit bewiesen, braucht man keine Angriffe mehr auf das Schema in Betracht zu ziehen. Mit der Behauptung OCB sei sicher wird die Existenz von zwei Lehrsätzen festgestellt. Der erste besagt, daß wenn es einem ein Angreifer A gelingt, einen Chiffretext unter OCB[E, τ] zu fälschen (er schafft das mit einer größeren Wahrscheinlichkeit als 2 -τ ), dann gibt es auch einen Angreifer B, der (E K (. ), E -1 K(. )) unter einem zufälligen Schlüssel von (π(. ), π -1 (. )) unter einer zufälligen Permutation unterscheiden kann. Der zweite Satz besagt, daß wenn ein Angreifer A mit OCB[E, τ] verschlüsselte Nachrichten von einem zufälligen String unterscheiden kann, dann gibt es auch einen Angreifer B, der E K (. ) unter einem zufälligen Schlüssel von π(. ) für eine zufällige Permutation unterscheiden kann. Ein Angreifer kann immer mit der Wahrscheinlichkeit von 2 -τ eine Nachricht fälschen. Sein maximaler Vorteil beträgt dabei σ 2 /2 n, wobei σ die Anzahl der Blöcke ist, die der Angreifer zu Gesicht bekommt. OCB ist sicher, wenn die zugrunde liegende Blockchiffre sicher ist und σ (Anzahl der Blöcke, die der Angreifer sieht) ist klein verglichen mit 2 n/2. Einfachheit: Ein zentrales Ziel von OCB war die Einfachheit; einige Merkmale, die dies verdeutlichen: - alle Nachrichten werden unabhängig von ihrer Länge (und ob letzter Block volständig) gleich behandelt - nur die einfachste Art des Auffüllens (padding) wird angewendet: man hängt einfach eine minimale Anzahl an 0-bits an, bis der String ein Vielfaches der Blocklänge hat - nur eine algebraische Struktur wird verwendet:, der endliche Körper GF(2 n ) - um die Folgen des Offset zu bilden, werden die Koeffizienten des Gray-Code monoton beginnend mit der 1 und endend bei m verwendet. Es werden niemals vorherigen Offsets verwendet oder mehr Offsets gebildet als man Blöcke hat. Nicht festgelegt wie Nonce übermittelt wird: Es wird nicht festgelegt auf welche Weise die Nonce bestimmt und übertragen wird. Formal gesehen ist sie nicht ein Teil des Chiffretextes (obwohl sie zum Entschlüsseln gebraucht wird). Länge des tag nicht festgelegt: Wenn man nur einen kurzen tag verwendet ist OCB besser geeignet als MACs. Die Länge des tag hängt auch von der Art der Anwendung ab. Alexander Brunner Seminar Kryptographie - 8 -

9 Ein vertrauliches Dokument braucht einen längeren tag, als z.b. ein Videostream, bei dem ein Angreifer dabei viele Frames fälschen muß, um eine spürbare Veränderung hervorzurufen. Vermeidung der mod-2 n Addition: Frühere Entwürfe von OCB basierten auf einer mod 2 n Addition. Diese war zwar einfacher zu implementieren, hatte aber auch einige Nachteile: - die Endian-Neutralität ging verloren (AES so entworfen, daß er sich neutral verhält) - Addition unangenehm in Hochsprachen zu implementieren - die Addition kann man nicht parallelisieren - die konkreten Sicherheitsgrenzen schienen bei der Addition schlechter als beim XOR zu sein Definition der Checksumme: Jutla, alle Nachrichten mit einem positiven Mehrfachen der Blocklänge OCB, alle Nachrichten beliebiger Länge Checksumme: M[1] M[2] M[m-1] C[m]0 * Y[m]. Wenn man den letzten Block lediglich mit 0-bits aufgefüllt hätte, wäre dies zu leicht angreifbar. Vermeidung von pretag Kollisionen: OCB wurde so gestaltet, daß ein Angreifer keine Pretag-Kollisionen erzwingen kann. 5. Theoreme: Sicherheitsdefinition: Dem Angreifer wird ein größerer Vorteil als im wirklichen Leben gegeben; er darf die Nonce selbst wählen, jedoch nicht mehrfach unter dem gleichen Schlüssel verwenden Syntax: sei endliche Menge, und deterministische Algorithmen benutzt K, N {0,1} * und M {0,1} * und gibt K (N, M) zurück D benutzt K, N {0,1} * und {0,1} * und gibt D K (N, M) zurück, was entweder ein String M {0,1} * oder ein Fehler ist, falls K (N, M) dann ist D K (N, ) = M Geheimhaltung: Alexander Brunner Seminar Kryptographie - 9 -

10 Es wird eine besonders strenge Definition von Geheimhaltung angewandt, eine die die Ununterscheidbarkeit von zufälligen Strings feststellt. Man betrachte einen Angreifer A, der über zwei Arten von Orakeln verfügt: ein echtes und ein falsches. Das echte Orakel, K (. ), nimmt als Input N, M und gibt als Output K (N, M) zurück. Weiter gilt, daß = ( M ) nur von M abhängt. Das falsche Orakel, $(. ), nimmt auch N, M als Input, gibt aber eine zufällige Zeichenfolge R {0,1} l( M ) zurück. Für einen Angreifer A und ein Verschlüsselungs-Schema π = (,, ), definiere Adv priv R π (A) = Pr[K : A K (.,.) R = 1] Pr[K : A $ K(.,.) = 1]. Ein Angreifer respektiert die Nonce, wenn er die Nonce niemals wiederholt, d.h. wenn er das Orakel nach (N, M) befragt, wird er später nicht auch (N, M ) erfragen. Es wird davon ausgegangen, daß alle Angreifer die Nonce respektieren. Echtheit: Man nehme das Verschlüsselungs-Schema π = (,, ) und führe einen Angriff mit einem Orakel K(.,. ), für einen Schlüssel K durch. Der Angreifer A fälscht (in diesem Durchlauf), gibt (N, ) aus, wobei D K (N, ) INVALID und Angreifer hat keine frühere Anfrage (N,M) gestellt, die in der Antwort resultierte. Sei Adv auth R π (A) = Pr[K : A K (.,.) gefälscht]. Es wird betont, daß die Nonce bei dem Fälschungsversuch mit einer Nonce übereinstimmen kann, die in einem früheren Versuch benutzt wurde. Blockchiffren und Pseudozufallsfunktionen: Eine Familie von Funktionen von n-bit nach n-bit nennt man eine Abbildung E: x {0,1} n {0,1} n, wobei eine endliche Menge von Strings ist Es ist eine Blockchiffre, falls jedes E K (. ) = E(K,. ) eine Permutation ist Rand(n) bezeichnet die Menge aller Funktionen von {0,1} n nach {0,1} n Perm(n) bezeichnet die Menge aller Permutationen von {0,1} n nach {0,1} n Diese Mengen können aufgefaßt werden als Familie von Funktionen, indem man sich vorstellt, daß jedes Mitglied durch einen String spezifiziert wird. Für π Perm(n), π -1 (Y), der einzigartige String, so daß π (x) = Y. Weiter gelte: Adv prf E (A) = Pr[K R Adv prp R E (A) = Pr[K Adv sprp R E (A) = Pr[K : A E K( ). = 1] Pr[ρ R Rand(n) : A ρ(.) = 1 ] : A E K( ). = 1] Pr[π R Perm(n) : A π (.) = 1 ] : A E K(. ),E-1 (.) K = 1] Pr[π R Perm(n) : A π (.),π 1(.) = 1 ] Alexander Brunner Seminar Kryptographie

11 5.2 Begründung der Theoreme: Theorem 1 (Echheit): Fixiere n und τ, sei A ein Angreifer der q Fragen stellt und dann seinen Fälschungsversuch unternimmt. Die q Anfragen haben eine aggregierte Blocklänge von σ Blöcken und der Fälschungsversuch des Angreifers hat maximal c Blöcke. Sei σ = σ +2q +5c +11, dann gilt: Adv auth OCB[Perm(n), τ] (A) 1,5σ 2 / 2 n + 1 / 2 τ Theorem 2 (Geheimhaltung): Fixiere n und τ, sei A ein Angreifer der q Fragen mit einer aggregierten Blocklänge von σ Blöcken. Sei σ = σ + 2q + 3. dann gilt Adv priv OCB[Perm(n), τ] (A) 1,5σ 2 / 2 n 6. Performance: OCB nutzt M /n + 2 Aufrufe der Blockchiffre für die Verschlüsselung einer nichtleeren Nachricht (ein leerer String braucht 3 Aufrufe). Dies wird verglichen mit CBC und CBC MAC: Die Grundform des CBC (zufälliger IV, Nachricht Vielfaches der Blocklänge) nutzt zwei Aufrufe weniger also M /n. Für einen fairen Vergleich setzt man IV = E K (N), also benutzen beide Schemen einen nicht-notwendig zufälligen Nonce und benutzen 10 * padding, damit willkürliche Strings behandelt werden können. CBC ( M +1)/n + 1 Aufrufe, d.h. 1 Aufruf weniger als bei OCB und genauso gut wie OCB, falls die Nachrichten ein Vielfaches der Blocklänge sind. Kombination von CBC und MAC; CBC braucht so viele Aufrufe wie besprochen, CBC MAC zw. M /n + 1 und ( M +1)/n + 3 Aufrufe, abhängig von padding und optionale Bearbeitung des letzten Blockes, d.h. CBC + MAC braucht zw. 2* M /n - 1 und 2* ( M +1)/n + 4 Aufrufe. OCB spart zw. M /n - 1 und M /n + 3 Aufrufe gegenüber getrennter CBC- Verschlüsselung und CBC MAC Berechnung. Experimentelle Ergebnisse: Tabelle mit Vergleichen von OCB, ECB, CBC und CBC MAC auf einem Pentium 3 - die letzten 3 ohne Auffüllen - unter der Annahme, daß die Nachricht ein Vielfaches der Blocklänge ist. Für CBC ist der IV fest. Zugrunde liegende Blockchiffre ist AES mit 128-bit Blöcken. Tabelle zeigt Zyklen pro Byte (pro 16-Byte Block), je weniger, desto besser. Alexander Brunner Seminar Kryptographie

12 OCB erscheint manchmal etwas unvorteilhaft, dies liegt aber daran, daß man als Nachrichtenlänge ein Vielfaches der Blocklänge verwendet hat. Trifft dies nicht zu, braucht man für CBC und CBC MAC zusätzliche Modifikationen und zusätzliche Operationen. 7. Beweise: Der Beweis von Theorem 1 basiert auf drei Lemma. Das Aufbau-Lemma bringt die Echtheit in Verbindung mit mit drei Funktionen: die Wahrscheinlichkeit für M- Kollisionen, MM-Kollisionen und CM-Kollisionen. Beweisidee: Es werden verschiedene Simulationen ( Games genannt) durchgeführt und dabei die unterern und oberen Grenzen der Sicherheit ermittelt. Bei den Simulationen wird geschaut, wann z.b. ein Wert fälschlicherweise auf wahr gesetz wird und dadurch der Chiffretext nicht verworfen wird. Durch die verschiedenen Simulationen kommt man dann auch zu den genannten sicherheitsgrenzen. Alexander Brunner Seminar Kryptographie