Kryptographie #1 - Symmetrische Verschlüsselungsverfahren

in #deutsch7 years ago

3bc9b7_70057339b08340079d7b984039d051df~mv2 (Kopie).jpg.png

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:
220px-Tux.png
Als erstes wird ECB angewand. Die Datenblöcke werden unabhängig voneinander verschlüsselt.
TUX.ecb (Kopie).png
Der Pinguin ist noch erkennbar.
Anschließend wird CBC angewand.
Dabe wird jeder Datenblock mit dem voranliegenden verrechnet.
TUX.cbc.png
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'
Sort:  

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