Kriptografi Simetris dan Asimetris
Pada bab ini, mari kita bahas secara detail tentang kriptografi simetris dan asimetris.
Kriptografi Simetris
Pada tipe ini, proses enkripsi dan dekripsi menggunakan kunci yang sama. Itu juga disebut sebagaisecret key cryptography. Fitur utama dari kriptografi simetris adalah sebagai berikut -
- Ini lebih sederhana dan lebih cepat.
- Kedua pihak bertukar kunci dengan cara yang aman.
Kekurangan
Kelemahan utama dari kriptografi simetris adalah jika kunci bocor ke penyusup, pesan dapat dengan mudah diubah dan ini dianggap sebagai faktor risiko.
Standar Enkripsi Data (DES)
Algoritme kunci simetris paling populer adalah Data Encryption Standard (DES) dan Python menyertakan paket yang menyertakan logika di balik algoritme DES.
Instalasi
Perintah untuk instalasi paket DES pyDES dengan Python adalah -
pip install pyDES
Implementasi program sederhana dari algoritma DES adalah sebagai berikut -
import pyDes
data = "DES Algorithm Implementation"
k = pyDes.des("DESCRYPT", pyDes.CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=pyDes.PAD_PKCS5)
d = k.encrypt(data)
print "Encrypted: %r" % d
print "Decrypted: %r" % k.decrypt(d)
assert k.decrypt(d) == data
Itu memanggil variabel padmode yang mengambil semua paket sesuai implementasi algoritma DES dan mengikuti enkripsi dan dekripsi dengan cara tertentu.
Keluaran
Anda dapat melihat output berikut sebagai hasil dari kode yang diberikan di atas -
Kriptografi Asimetris
Itu juga disebut sebagai public key cryptography.Ia bekerja dengan cara kebalikan dari kriptografi simetris. Ini menyiratkan bahwa itu membutuhkan dua kunci: satu untuk enkripsi dan lainnya untuk dekripsi. Kunci publik digunakan untuk mengenkripsi dan kunci privat digunakan untuk mendekripsi.
Kekurangan
- Karena panjang kuncinya, ini berkontribusi pada kecepatan enkripsi yang lebih rendah.
- Manajemen kunci sangat penting.
Kode program berikut dengan Python menggambarkan cara kerja kriptografi asimetris menggunakan algoritma RSA dan implementasinya -
from Crypto import Random
from Crypto.PublicKey import RSA
import base64
def generate_keys():
# key length must be a multiple of 256 and >= 1024
modulus_length = 256*4
privatekey = RSA.generate(modulus_length, Random.new().read)
publickey = privatekey.publickey()
return privatekey, publickey
def encrypt_message(a_message , publickey):
encrypted_msg = publickey.encrypt(a_message, 32)[0]
encoded_encrypted_msg = base64.b64encode(encrypted_msg)
return encoded_encrypted_msg
def decrypt_message(encoded_encrypted_msg, privatekey):
decoded_encrypted_msg = base64.b64decode(encoded_encrypted_msg)
decoded_decrypted_msg = privatekey.decrypt(decoded_encrypted_msg)
return decoded_decrypted_msg
a_message = "This is the illustration of RSA algorithm of asymmetric cryptography"
privatekey , publickey = generate_keys()
encrypted_msg = encrypt_message(a_message , publickey)
decrypted_msg = decrypt_message(encrypted_msg, privatekey)
print "%s - (%d)" % (privatekey.exportKey() , len(privatekey.exportKey()))
print "%s - (%d)" % (publickey.exportKey() , len(publickey.exportKey()))
print " Original content: %s - (%d)" % (a_message, len(a_message))
print "Encrypted message: %s - (%d)" % (encrypted_msg, len(encrypted_msg))
print "Decrypted message: %s - (%d)" % (decrypted_msg, len(decrypted_msg))
Keluaran
Anda dapat menemukan output berikut ketika Anda menjalankan kode yang diberikan di atas -