© Creative Thoughts/Shutterstock.com
Teil 1: Symmetrische Verschlüsselung

Rubinrote Sicherheit


Sicherheit geht vor – das gilt auch in Ruby. Das Bauchgefühl kann jedoch trügen, wenn es um sichere Lösungen geht. Darum lohnt es sich, die zur Verfügung stehenden Optionen einmal genauer unter die Lupe zu nehmen.

Artikelserie

Teil 1: Symmetrische Verschlüsselung

Teil 2: Nicht symmetrische Verschlüsselung

Die Standard-Library in Ruby bietet mit dem OpenSSL-Modul ein leistungsfähiges Interface zum Verschlüsseln. Wie der Name schon andeutet, handelt es sich hierbei um einen Wrapper der nativen OpenSSL Library, garniert mit dem syntaktischen Zucker, den die Programmiersprache von Haus aus mitbringt.

Auf OpenSSL als De-facto-Standard bei Kryptographie im Open-Source-Bereich zu setzen, ist natürlich naheliegend – es birgt aber auch einige Gefahren. OpenSSL versteht sich als ein Werkzeugkasten für kryptographische Algorithmen und legt seinen Fokus auf Vollständigkeit, was jedoch zur Folge hat, dass es eine Vielzahl von Optionen mit sich bringt, die nach aktuellsten Kriterien leider nicht immer alle als sicher gelten. Man ist als Entwickler deshalb dazu verdammt, unter der Vielzahl der Optionen diejenigen herauszupicken, die für den jeweiligen Anwendungsfall passen und dabei so sicher wie möglich sind.

Dies ist natürlich nicht immer einfach und deshalb möchte ich Ihnen konkret zum Thema Verschlüsselung einen Überblick verschaffen, was es aus historischer Sicht an Möglichkeiten gab und gibt, was die Nachteile sind, wie sich die Dinge weiterentwickelt haben und wie Stand heute eine moderne Verschlüsselung aussieht, die Sie dann auch in Ihren Projekten einsetzen können und sollten.

Es gibt zwei prominente Ansätze, um symmetrische Verschlüsselung zu betreiben: den Stream Cipher [1] und den Block Cipher [2]. Beides sind Varianten, die mit unterschiedlichen Ansätzen sichere Verschlüsselungsverfahren liefern können. Wir konzentrieren uns vorerst auf die Stream Cipher, die in ihrer Konstruktion einfacher sind, bevor wir uns den komplexeren Block Ciphern widmen.

Was bedeutet „sicher“ im Kontext von Verschlüsselung?

Wer kennt das nicht? Der Chef verlangt, dass wir aufgrund von erhöhten Sicherheitsanforderungen bestimmte Daten verschlüsseln sollen, damit das Ganze „sicher“ wird. Alle Beteiligten nicken daraufhin eifrig, aber bei den Armen, die das dann ausbaden – sprich implementieren – sollen, macht sich schnell ein ungutes Gefühl breit, weil sich eigentlich keiner so sicher ist, was „sicher“ in diesem Zusammenhang wirklich bedeutet. Tatsächlich ist es schwierig, das al...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang