Symmetrische Kryptographie auf GPUs

Ähnliche Dokumente
Kryptographische Verfahren. zur Datenübertragung im Internet. Patrick Schmid, Martin Sommer, Elvis Corbo

Projekt u23 Symmetrische Kryptografie, Betriebsmodi von Blockchiffren

Betriebsarten von Blockchiffren. ECB Electronic Code Book Mode. Padding. ECB Electronic Code Book Mode

Algorithmische Anwendungen Prof. Dr. Heinrich Klocke

Advanced Encryption Standard. Copyright Stefan Dahler 20. Februar 2010 Version 2.0

9 Rechnergestütze Blockchiffren

Methoden der Kryptographie

3 Betriebsarten bei Blockverschlüsselung

Institut für Kryptographie und Sicherheit Jun.-Prof. Dr. D. Hofheinz. Stammvorlesung Sicherheit im Sommersemester 2013.

Netzwerktechnologien 3 VO

monoalphabetisch: Verschiebechiffren (Caesar), multiplikative Chiffren polyalphabetisch: Vigenère-Chiffre

Kurze Einführung in kryptographische Grundlagen.

Betriebsarten für Blockchiffren

Wiederholung. Symmetrische Verschlüsselung klassische Verfahren: moderne Verfahren: DES (Feistel-Chiffre) mehrfache Wiederholung einer Kombination aus

Vorlesung Datensicherheit. Sommersemester 2010

IT-Sicherheit: Kryptographie

Symmetrische Verschlüsselung. Blockchiffren, DES, IDEA, Stromchiffren und andere Verfahren

ESecur Die einfache verschlüsselung

Kryptographische Systeme (M, C, K, e, d) Symmetrische Verfahren (gleicher Schlüssel zum Verschlüsseln und Entschlüsseln):

Kryptographische Systeme (M, C, K, E, D) Symmetrische Verfahren (gleicher Schlüssel zum Verschlüsseln und Entschlüsseln):

Kapitel 2.6: Einführung in Kryptographie

Sicherheit von PDF-Dateien

Praktikum IT-Sicherheit

FH Schmalkalden Fachbereich Informatik. Kolloquium 21. März 2002

Klassische Verschlüsselungsverfahren

Symmetrische und Asymmetrische Kryptographie. Technik Seminar 2012

Datenkommunikation Prof. Dr. Marke SS 2001 Seminar-Thema: Kryptographie

SICHERE DATENHALTUNG IN DER CLOUD VIA HANDY. Tuba Yapinti Abschlussvortrag der Bachelorarbeit Betreuer: Prof. Reinhardt, Dr.

Übungen zur Vorlesung Systemsicherheit

Wireless Security. IT Security Workshop Moritz Grauel Matthias Naber

AES. Jens Kubieziel 07. Dezember Friedrich-Schiller-Universität Jena Fakultät für Mathem atik und Informatik


8. Von den Grundbausteinen zu sicheren Systemen

AES und Public-Key-Kryptographie

Grafikkarten-Architektur

High Definition AV Inhaltsschutz für Netzwerkübertragungen

FREIHEIT GESTALTEN VERSCHLÜSSELUNG ALS FREIHEIT IN DER KOMMUNIKATION. Christian R. Kast, Rechtsanwalt und Fachanwalt für IT Recht

Kryptographie oder Verschlüsselungstechniken

Algorithmische Anwendungen

Eine Praxis-orientierte Einführung in die Kryptographie

Das Verschlüsseln verstehen

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Härtere Crypto für unsere Services

Einführung Verschlüsselung Mag. Dr. Klaus Coufal

Nachtrag vom zur Fortschreibung der 301-Vereinbarung vom

Mobilkommunikationsnetze Security -

Vorlesung IT-Sicherheit FH Frankfurt Sommersemester 2007

Kryptografische Algorithmen

KRYPTOSYSTEME & RSA IM SPEZIELLEN

Was heißt Kryptographie I? Understanding Cryptography Christof Paar und Jan Pelzl

Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks

Grundbegriffe der Kryptographie II Technisches Seminar SS 2012 Deniz Bilen

Benutzer- und Datensicherheit. Ralf Abramowitsch Vector Informatik GmbH

Hochschule Wismar Fachbereich Wirtschaft

Client/Server-Systeme

Kapitel 1.6: Einführung in Kryptographie

Sicherheit in Wireless LANs

Kryptographische Verschlüsselung mithilfe des DES-Verfahrens und die Übersetzung eines Textes durch ein selbstgeschriebenes Delphi-Programm

Stefan Lucks Krypto und Mediensicherheit (2009) 4: Stromchiffren

Grundlagen der Kryptographie

Kryptologische Methoden und Alternativen

NTFS Encrypting File System

IT-Sicherheitsmanagement Teil 11: Symmetrische Verschlüsselung

Vorlesung Sicherheit

Diffie-Hellman, ElGamal und DSS. Vortrag von David Gümbel am

Einführung in die Kryptographie ,

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Kryptographische Verfahren und ihre Anwendung 3. Teil: Symmetrische Verfahren II

Visualisierung paralleler bzw. verteilter Programme

Asymmetrische. Verschlüsselungsverfahren. erarbeitet von: Emilia Winkler Christian-Weise-Gymnasium Zittau

Netzwerk-Sicherheit. Verschlüsselung, Vertraulichkeit, Authentisierung

Name: Matr.-Nr.: Seite: Geben Sie drei Klassifizierungsmerkmale aus dem Kurstext für den Begriff

Verschlüsselung und Signatur

Secure Sockets Layer (SSL) Prof. Dr. P. Trommler

Grundlagen der Verschlüsselung und Authentifizierung (1): symmetrische Verschlüsselung und Authentifizierung

Erstellen sicherer ASP.NET- Anwendungen

11. Das RSA Verfahren und andere Verfahren

Kryptographische Algorithmen

Sicherheit in Netzwerken. Leonard Claus, WS 2012 / 2013

10. Kryptographie. Was ist Kryptographie?

Wiederholung: Informationssicherheit Ziele

WLAN-SICHERHEIT. Florian Geier, Alexander Rothschadl, Maximilian Scholderer. 8. Juni 2012

IT-Security Neuere Konzepte II

Diplomarbeit. Rada Kancheva Betreuer: Dr. B. Borchert Prof. K. Reinhardt

Kryptographie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik

Datenschutz an der Schule. Datenschutzbestimmungen. Schützenswerte Daten sicher handhaben. Die Verwaltungsvorschrift und ihre Umsetzung

Sicherheit in mobiler Kommunikation

MAC Message Authentication Codes

PeDaS Personal Data Safe. - Bedienungsanleitung -

Einführung in die moderne Kryptographie

Sommersemester 2002 Konzepte von Betriebssystem-Komponenten: Schwerpunkt Sicherheit (KVBK)

Kryptographische Zufallszahlen. Schieberegister, Output-Feedback

Übungen zu. Grundlagen der Kryptologie SS Hochschule Konstanz. Dr.-Ing. Harald Vater. Giesecke & Devrient GmbH Prinzregentenstraße 159

8. Advanced Encryption Standard

Kapitel 6 Anfragebearbeitung

Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009

Transkript:

Symmetrische Kryptographie auf GPUs Mikael Voss 15. Juli 2009 Die folgende Seminararbeit erläutert verschiedene Verfahren der symmetrischen Datenverschlüsselung vor dem Hintergrund der Nutzbarkeit auf GPUs und stellt anschließend ein Paper vor, das dieses Wissen praktisch anwendet. 1

Inhaltsverzeichnis 1 Einführung 3 1.1 Stromverschlüsselung.............................. 3 1.2 Blockverschlüsselung.............................. 3 1.2.1 Rijndael................................. 4 1.2.2 Betriebsmodi.............................. 4 2 Anwendung 8 2.1 Architektur.................................... 8 2.1.1 Lookup-Tabellen............................. 9 2.1.2 Deskriptoren............................... 9 2.2 Performanz.................................... 10 2.2.1 Parallele Betriebsmodi.......................... 11 2.2.2 Serielle Betriebsmodi.......................... 12 3 Fazit 13 2

1 Einführung 1.1 Stromverschlüsselung Stromverschlüsselungsalgorithmen erzeugen aus dem Schlüssel, abhängig von einem internen Zustand, einen sogenannten Schlüsselstrom, der bitweise mit dem Klartext XOR-verknüpft wird und so den Geheimtext erzeugt. Zur Enschlüsselung wird dieser erneut mit dem Schlüsselstrom verknüpft und erzeugt so den Klartext. Da bei den meisten Algorithmen dieser Art jeder Zustand des Verschlüsselungsalgorithmus vom vorherigen abhängt [3], sind sie von Natur aus seriell. Eine Implementation auf der Graphikkarte wäre also sinnlos, da sie keine Steigerung des Durchsatzes bewirken, jedoch die Latenz (durch den Transfer zur Graphikkarte) enorm erhöhen würde. Verschlüsselung G i = K i T Si für i = 1... n Entschlüsselung K i = G i T Si für i = 1... n (a) Verschlüsselung (b) Entschlüsselung Abbildung 1: Stromverschlüsselung Der bekannteste Stromverschlüsselungsalgorithmus dürfte RC4 sein, der zur Verschlüsselung in drahtlosen Netzwerken nach IEEE 802.11 verwendet wird. 1.2 Blockverschlüsselung Blockverschlüsselungsalgorithmen verschlüsseln Klartexte blockweise (üblicherweise in Größen von 64 bis 256 Bits), indem sie diese abhängig vom Schlüssel transformieren. Da jeder Block unabhängig ver- und entschlüsselt werden kann, können Blockchiffre enorm von einer Portierung auf die Graphikkarte profitieren. Verbreitete Blockverschlüsselungsalgorithmen sind Lucifer (DES), Rijndael (AES) und Twofish, die zur Verschlüsselung von Datenübertragungen (SSL/TLS), Dokumenten, Nachrichten (OpenPGP) und Datenträgern verwendet werden. 3

1.2.1 Rijndael Der Rijndael-Algorithmus wurde 1998 von Vincent Rijmen und Joan Daemen entwickelt und arbeitet mit Block- und Schlüsselgrößen von 128, 192 und 256 Bit und ist wie folgt gegliedert: 1. Schlüsselexpansion 2. Vorrunde a) Rundenschlüssel hinzufügen 3. Hauptrunden a) Substitution b) Transposition c) Mischen d) Rundenschlüssel hinzufügen 4. Schlussrunde a) Substitution b) Transposition c) Rundenschlüssel hinzufügen Bei der Schlüsselexpansion werden die Rundenschlüssel erzeugt, die im späteren Verlauf (Schritte 2a, 3d und 4c) mit dem Block verknüpft werden. Darauf folgen eine Vorrunde, abhängig von der Schlüssellänge acht, zehn oder zwölf Hauptrunden und eine Schlussrunde. Im Substitutionsschritt (3a und 4a) werden jeweils acht Bit des Blocks an Hand einer Lookup- Tabelle (auch Substitutionsbox genannt) ersetzt, bei der anschließenden Transposition nach einem bestimmten Schema verschoben und schließlich beim Mischen mit Konstanten multipliziert und die Ergebnisse verknüpft. [4] Diese drei Schritte lassen sich durch eine Reihe von Tabellen-Lookups ersetzen und so beschleunigen. Auf einem System mit einer Wortbreite von 32 Bit, kann eine Verschlüsselungsrunde so auf 16 Lookups und 12 XOR-Verknüpfungen reduziert werden. [4] [5] Der Advanced Encryption Standard spezifiziert den Rijndael-Algorithmus mit einer Blockgröße von 128 Bit. 1.2.2 Betriebsmodi Wird jeder Block unabhängig von den anderen verschlüsselt (Electronic Code Book-Verfahren), so ergibt sich das Problem, dass die Struktur des Klartextes möglicherweise aus der Struktur des Geheimtextes ersichtlich ist, weil ein Klartext immer den gleichen Geheimtext erzeugt. Verschlüsselung G i = f S (K i ) für i = 1... n Entschlüsselung K i = fs 1 i) für i = 1... n 4

(a) Original [1] (b) Verschlüsselt [2] Abbildung 2: Electronic Code Book-Verfahren Cipher Block Chaining Im Cipher Block Chaining-Verfahren (kurz CBC) wird dieses Problem beseitigt, indem jeder Klartextblock einer Nachricht vor seiner Verschlüsselung mit dem vorherigen Geheimtextblock XOR-verknüpft wird. Da der erste Block einer Nachricht keinen vorherigen besitzt, wird dieser mit einem zufällig generierten Initialisierungsvektor verknüpft, der zusammen mit der Nachricht übertragen wird. Weil jeder Block erst verschlüsselt werden kann, wenn alle vorherigen verschlüsselt wurden, ist das Verfahren nicht parallelisierbar. Verschlüsselung G 1 = f S (K 1 IV ) G i = f S (K i G i 1 ) für i = 2... n Entschlüsselung K 1 = fs 1 1) IV K i = fs 1 i) G i 1 für i = 2... n 5

Abbildung 3: Cipher Block Chaining Counter-Modus Ein weiteres Verfahren, das die Schwächen des ECB-Modus beseitigt, ist der Counter-Modus (kurz CTR), bei dem ein Zähler verschlüsselt und anschließend mit dem entsprechenden Klartextblock XOR-verknüpft wird. Die Parallelisierbarkeit hängt hierbei entscheidend vom verwendeten Zähler ab. Üblicherweise besteht dieser aus der Blocknummer, die mit einer zufälligen Nonce 1 verknüpft wird, sodass alle Blöcke unabhängig verschlüsselt werden können. Zähler Z i = N i für i = 1... n Verschlüsselung G i = f S (Z i ) K i für i = 1... n Entschlüsselung K i = fs 1 i) G i für i = 1... n 1 Amalgation aus Number used once 6

Abbildung 4: Counter-Modus 7

2 Anwendung Dass die genannten Parallelisierungsmöglichkeiten bei der symmetrischen Verschlüsselung auch in der Praxis ausnutzen lassen, demonstrieren Owen Harrison und John Waldron in ihrem Paper Practical Symmetrical Key Cryptography on Modern Graphics Hardware [7], in dem sie eine Architektur beschreiben, mit deren Hilfe Nachrichten auf der Graphikkarte verschlüsselt werden können. Als Verschlüsselungsalgorithmus wird eine optimierte Rijndael- Variante mit einer Blockgröße von 128 Bit sowohl in parallelen, als auch in seriellen Betriebsmodi eingesetzt, von denen exemplarisch CTR und CBC vorgestellt werden. Als Hardwareplattform dient den Autoren eine Nvidia G80-GPU (8800GTX-Graphikkarte), die mit Hilfe des CUDA-Framework programmiert wird. 2.1 Architektur Abbildung 5: Architektur Wie aus Abbildung 5 ersichtlich, findet die Schlüsselexpansion auf dem Hauptprozessor statt, weil sie von serieller Natur ist und deshalb nicht von einer Verlagerung auf die GPU profitiert. Die erzeugten Rundenschlüssel werden zusammen mit Nachrichtendeskriptoren im Texturspeicher abgelegt, deren Struktur in Abschnitt 2.1.2 näher beleuchtet werden soll, während die Nachrichten selbst in den Global memory geladen werden. 8

Die eigentliche Verschlüsselung findet auf der GPU statt, wo bei parallelen Betriebsmodi jeder Klartextblock einer Nachricht durch einen eigenen Thread bearbeitet wird, während bei seriellen Modi jeder Thread eine ganze Nachricht verarbeiten muss 2. 2.1.1 Lookup-Tabellen Da die Geschwindigkeit der optimierten Rijndael-Variante stark von der Zugriffszeit auf die notwendigen Lookup-Tabellen 3 abhängt, werden diese im Shared memory abgelegt, der die kürzesten Zugriffszeiten bei wahlfreiem Lesen verspricht [7, Seiten 3 und 4]: kohärent wahlfrei Shared memory 0, 204s 0, 433s Constant memory 0, 176s 0, 960s Texture memory 0, 702s 1, 238s Tabelle 1: Ausführungszeit für 5 10 9 Lesezugriffe Weiterhin werden die Tabellen in Form von vier Arrays gespeichert, um sich die interne Aufteilung des Shared memory in gleichzeitig ansprechbare Bänke zu nutze zu machen. Es zeigt sich ein deutlicher Unterschied im Verschlüsselungsdurchsatz: Shared memory Constant memory Texture memory 1 4KiB 5, 945 Gb s 4, 123 Gb s 4, 200 Gb s 4 1KiB 6, 914 Gb s 4, 085 Gb s 4, 197 Gb s Tabelle 2: Durchsatz im CTR-Modus 2.1.2 Deskriptoren Um die Arbeit der GPU-Threads zu koordinieren, werden Deskriptoren verwandt, die jedem Thread abhängig von einer logischen Identifikationsnummer einen Klartextblock (parallele Modi) oder eine ganze Nachricht (serielle Modi) zuweisen. Die Deskriptoren sind in über Referenzen in einem sparse array (siehe Abbildung 6) angeordnet, das jedem Thread erlaubt, mit einer quadratischen Suche die von ihm zu verschlüsselnden Nachrichtenblöcke zu ermitteln. Durch die Verwendung eines sparse array, muss nicht für jeden Block ein Eintrag gespeichert werden. Die Threads müssen nur nach dem Eintrag mit der größten Thread-ID suchen, die kleiner oder gleich ihrer eigenen ist und können durch Subtraktion der beiden auf die ihnen zugewiesene Blocknummer der Nachricht schließen. 2 vergleiche Cipher Block Chaining im Abschnitt 1.2.2 3 vergleiche Abschnitt 1.2.1 9

Abbildung 6: Übersetzung der Thread-IDs [7, Seite 8] 2.2 Performanz Abbildung 7: Durchsatz im CTR-Modus [7, Seite 5] Abbildung 7 vergleicht die Durchsätze verschiedener AES/CTR-Implementationen, darunter eine für die Nvidia 7900GT-Graphikkarte, die 2007 von Harrison und Waldron im Paper AES 10

Encryption Implementation and Analysis on Commodity Graphics Processing Units vorgestellt wurde und eine für das obsolete Close To Metal-Interface von AMD, die im Paper Symmetric Key Cryptography on Modern Graphics Hardware von Yang und Goodman aus dem selben Jahr beschrieben wird, sowie zwei weitere für 2008 übliche x86-64-prozessoren. Es zeigt sich, dass sich der Verschlüsselungs-Durchsatz im Vergleich zu bisherigen GPUund CPU-basierten Implementationen enorm steigern lässt, jedoch wird deutlich, dass eine gewisse Mindestdatenmenge notwendig ist, um die GPU ausreichend zu sättigen. Daneben wird deutlich, dass die Übertragung der Daten aus dem Hauptspeicher auf die Graphikkarte einen erheblichen Flaschenhals darstellt: Vernachlässigt man diese, kann die Datenrate im Vergleich zur schnellsten CPU-Implementation verzehnfacht werden, während man unter Berücksichtigung der Transfers nur eine Vervierfachung beobachten kann. [7, Seiten 5 und 6] Zukünftige Graphikkarten werden dieses Problem durch eine bessere Anbindung an das Host-System möglicherweise abmildern. 2.2.1 Parallele Betriebsmodi Abbildung 8: Durchsatz paralleler Betriebsmodi [7, Seite 10] Wie Abbildung 8 zeigt, können in parallelen Betriebsmodi die höchsten Durchsätze bei möglichst großen Nachrichten erreicht werden. Hier steigt der Durchsatz fast proportional 11

zur Zahl der Nachrichten und flacht ab, wenn die GPU sich ihrer Sättigungsgrenze nähert. Wählt man kleinere Nachrichten, steigt der Durchsatz nur gemächlich und erreicht niedrigere Maximalwerte. Dies ist möglicherweise durch schlechteres Cacheing-Verhalten durch die Zahl der Nachrichtendeskriptoren zu erklären. [7, Seite 10] 2.2.2 Serielle Betriebsmodi Abbildung 9: Durchsatz serieller Betriebsmodi [7, Seite 11] Im Gegensatz zu parallelen Betriebsmodi, ist es in seriellen Modi schwieriger, die GPU zu sättigen, da jeder Block einer Nachricht vom selben Thread bearbeitet werden muss. Es ist also eine große Zahl an Nachrichten notwendig, um angemessene Verschlüsselungsdurchsätze zu erreichen. Ab einer Nachrichtengröße von mehr als 512 Blöcken zeigt sich ein starker Performance- Zusammenbruch bei einer großen Zahl von Nachrichten, dessen Ursache nicht ausreichend geklärt werden konnte. [7, Seite 11] 12

3 Fazit Owen Harrison und John Waldron haben mit ihrer Arbeit gezeigt, dass es dank moderner Programmiermethoden wie CUDA möglich und sinnvoll ist, symmetrische Datenverschlüsselung auf Graphikkarten durchzuführen. Durch eine geschickte Konzeption von Programm und Datenstrukturen ist es ihnen gelungen, sowohl in parallelen, als auch in seriellen Betriebsmodi, einen enormen Geschwindigkeitsvorteil gegenüber rein CPU-basierten Rijndael- Implementationen zu erreichen, der durch zukünftige Graphikkarten noch gesteigert werden wird. Literatur [1] Larry Ewing, Linux 2.0 Penguins, http://www.isc.tamu.edu/ lewing/linux/ [2] Imagen de Tux cifrada por método ECB, Wikimedia commons, 20. Mai 2006, http://commons.wikimedia.org/wiki/file:tux ecb.jpg [3] K. Kaukonen, R. Thayer, A Stream Cipher Encryption Algorithm Arcfour, IETF Draft, 1999, http://tools.ietf.org/html/draft-kaukonen-cipher-arcfour-03 [4] Advanced Encryption Standard, Wikipedia, Revision 299459468, 2009, http://en.wikipedia.org/wiki/advanced Encryption Standard [5] G. Bertoni et al., Efficient Software Implementation of AES on 32-Bit Platforms, Springer, 2003 [6] M. Dworkin, Recommendation for Block Cipher Modes of Operation, NIST Special Publication 800-38A, 2001, http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf [7] Owen Harrison, John Waldron, Practical Symmetrical Key Cryptography on Modern Graphics Hardware, 17th USENIX Security Symposium, 2008, https://www.cs.tcd.ie/publications/tech-reports/reports.08/tcd-cs-2008-20.pdf 13