Kryptographie #2 - Asymmetrische Verschlüsselungsverfahren

in #deutsch7 years ago

3bc9b7_70057339b08340079d7b984039d051df~mv2 (Kopie).jpg.png

Ein asymmetrische Verschlüsselungsverfahren umgeht die größte Schwachstelle symmetrischer Verschlüsselungsverfahren: den Schlüsselaustausch.
Bei den in den 1970er-Jahren entwickelten asymmetrische Verschlüsselungsverfahren gibt es keinen gemeinsamen geheimen Schlüssel, sondern jeder Kommunikationspartner besitzt einen privaten Schlüssel und einen öffentlichen Schlüssel.

Der öffentliche Schlüssel ist jedem bekannt und wird zum Verschlüsseln benutzt. Die verschlüsselte Nachricht kann nur der Empfänger mit dem passenden privaten Schlüssel entschlüsseln.

Asymmetrische Verschlüsselungsverfahren können können häufig nicht nur zum Verschlüsseln, sondern auch zum Signieren von Nachrichten angewand werden.
Die in PyCrypto.PuplicKey enthaltene asymmetrische Verschlüsselungsverfahren werden in Tabelle vorgestellt.

NameVerschlüsselnSignieren
RSAjaja
ElGamaljaja
DSAneinja
qNEWneinja

Einen Schlüssel erzeugen

from Crypto.PublicKey import RSA
key = RSA.generate(1024)
puplic_key = key.publickey()

Zunächst wird ein Schlüsselpaar mit generate() erzeugt.
Daraus wird der öffentliche schlüssel in puplic_key geschpeichert.


Verschlüsseln

chiffre =  PKCS1_OAEP.new(puplic_key)
chiffrat = chiffre.encrypt(b"Dies ist ein geheimer Text")

Entschlüsseln

chiffre =  PKCS1_OAEP.new(key)
print(chiffre.decrypt(chiffrat))

Gesamter Code

from Crypto.PublicKey import RSA
key = RSA.generate(1024)
puplic_key = key.publickey()
from Crypto.Cipher import PKCS1_OAEP
chiffre =  PKCS1_OAEP.new(puplic_key)
chiffrat = chiffre.encrypt(b"Dies ist ein geheimer Text")
chiffre =  PKCS1_OAEP.new(key)
print(chiffre.decrypt(chiffrat))

Ausgabe

b'Dies ist ein geheimer Text'