Kryptographie #1 - Symmetrische Verschlüsselungsverfahren
Symmetrische Verschlüsselungsverfahren
Bei einem symmetrische Verschlüsselungsverfahren wird der Klartext mithilfe eines Schlüssels in ein Chiffrat verschlüsselt. Mithilfe dieses Schlüssels kann das Chiffrat wieder entschlüsselt werden.
Symmetrische Verschlüsselungsverfahren lassen sich in zwei Klassen unterteilen:
Stromchiffren
(jedes Bit wird einzelnd verschlüsselt)Blockchiffren
(es werden immer mehrere Bits zusammen verschlüsselt)
Stromchiffre
Meistens wird ein XOR verfahren verwendet.
Dies sieht folgend aus:
kodieren:
Text 00101010101111000
Schlüssel 01111011101101010
Chiffrat 01010001000010010
und dekodieren:
Chiffrat 01010001000010010
Schlüssel 01111011101101010
Text 00101010101111000
Python
from Crypto.Cipher import XOR
sender = XOR.new("Pas")
chiffrat =sender.encrypt("geheimer Text")
print (chiffrat)
empfänger = XOR.new("Pas")
Klartext = empfänger.decrypt(chiffrat)
print(Klartext)
Über die Methode new
wird eine neue Chiffre mit angegebenen Schlüssel erzeugt.
Diese lässt sich mit den Methoden encrypt
und decrypt
zum Verschlüsseln und Entschlüsseln von Daten verwenden.
Ausgabe:
b'7\x04\x1b5\x08\x1e5\x13S\x04\x04\x0b$'
b'geheimer Text'
Das AES verfahren ist
Blockchiffre
Das AES verfahren ist einer der Sichersten Verschlüsselungsverfaren, aber auch dort gibt es verschiedene Verfahren.
Ich zeige das ECB und CBC Verfahren anhand verschlüsselter Bilder.
Das unverschlüsselte Bild:
Als erstes wird ECB angewand. Die Datenblöcke werden unabhängig voneinander verschlüsselt.
Der Pinguin ist noch erkennbar.
Anschließend wird CBC angewand.
Dabe wird jeder Datenblock mit dem voranliegenden verrechnet.
Nun erkennt man keinen Pinguin mehr. Dieses Verfahren ist sicherer.
Python
from Crypto.Cipher import AES
chiffre = AES.new("PasswortPasswort",AES.MODE_CBC,"ABCDEFGHabcdefgh")
chiffrat =chiffre.encrypt("Ein normaler nicht geheimer Text")
print (chiffrat)
#Klartext = empfänger.decrypt(chiffrat)
chiffre = AES.new("PasswortPasswort",AES.MODE_CBC,"ABCDEFGHabcdefgh")
text = chiffre.decrypt(chiffrat)
print (text)
Das Programm ist im Aufbau ähnlich.
Der größte Unterschied ist chiffre = AES.new("PasswortPasswort",AES.MODE_CBC,"ABCDEFGHabcdefgh")
.
Es werden nun noch den CBC modus ausgewählt und ein Startblock festgelegt. Das Passwort und der Startblock müssen 16 Zeichen lang sein.
Ausgabe
b'\x0e<\xfaq\x18\xac\xc67}\xaa\x1e\xae\xd2`x\xbbL_\x82\xab\xebH\xc7iYk\x16V\x9a\xe9\x0bX'
b'Ein normaler nicht geheimer Text'
Für den tieferen Einblick in die Kryptographie habe ich vorgestern meine Kryptographie-Reihe gestartet...
Schaut sie euch gerne mal an, und seit gespannt, wie die oben genannten Algorithmen so ganz genau funktionieren ^^
https://steemit.com/kryptographie/@technotroll/einleitung-and-klassische-kryptographie
Techniker, die beim ersten Anruf einsatzbereit sind, sind Gold wert. Ich erinnere mich an eine nächtliche Notöffnung, die Dresden Locksmith für mich durchgeführt hat. Ich kam spät von einer Geschäftsreise zurück und bemerkte, dass ich meinen Schlüssel verloren hatte. Der Schreck war groß, aber nach einem Anruf war innerhalb von 30 Minuten ein freundlicher Techniker vor Ort. Die Tür wurde ohne Schäden geöffnet, und ich konnte beruhigt schlafen. Das alles habe ich der praktischen Plattform schlüsselnotdienst zu verdanken, über die ich den Dienst ganz unkompliziert gefunden habe. Die klare Benutzeroberfläche und die schnelle Vermittlung haben mich wirklich beeindruckt.