Simmetrik Şifrələmə AES (Praktiki İzahla)
Kriptoqrafiya nədir? Kriptoqrafiyanın əsasları nələrdir? Hashing nədir? Hashing əsasları nələrdir?Alqoritm nədir?AES nədir? Simmetrik Şifrələmə nədir? Şifrələmə nədir?
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
Şifrələmənin Əsasları
Şifrələmənin iki növü vardır: simmetrik və asimmetrik. Simmetrik şifrələmədə mesajın şifrələnməsi və deşifrələnməsində eyni gizli açardan istifadə edilir. Asimmetrik-də isə bu funksiyanı həyata keçirmək üçün ayrı və unikal ümumi (public) və gizli (private) açarlardan istifadə olunacaqdır.
Simmetrik Şifrələmə
Bu tip şifrələmə növü qədim zamanlardan istifadə olunur, hətta kompüter yaradılmamışdan əvvəl də bu üsuldan geniş istifadə edilirdi. Müasir dövrümüzdə də bu tip şifrələmədən istifadə olunur.
Simmetrik Şifrələmə o deməkdir ki, məlumatın şifrələnməsində və əldə olunan şifrəli məlumatın deşifrələnməsi üçün eyni açardan istifadə olunacaqdır.
AES (Advanced Ecryption Standard)
Təkmilləşdirilmiliş Şifrələmə Standartı (AES) – NİST tərəfindən simmetrik şifrələmənin təhlükəsiz olaması üçün tövsiyyə olunur.Biz bu paylaşımda AES necə işdəyini öyrənəcəyik və AES hansı problemləri həll edə biləcəyini görəcəyik.
İlkin olaraq, açar sabit bir uzunluğa malik olmalıdır:128,192 və ya 256 bit. Bizim misalımızda açarı 128 bit olaraq təyin edəcəyik, əgər istəsəniz daha təhlükəsiz olması üçün daha uzun təyin edə biləsiniz.
Problem 1: Təsəvvür edinki, bizdə mətn tipində olan parol mövcuddur. Biz necə edə bilərikki, açar uzunluğu 128 bit olsun?
Həll1: Bu halda MD5 istifadə edərək biz açarın 128 bit olmağını təmin edə bilərik. Əvvəldən bildiyimiz kimi MD5 128 bitlik nəticə verir və bu da açarın uzunluğunu 128 bit olmasını qarantiyalayır.
Problem 2: İV (İnitialization Vector) – Bəs biz inisilazasiya vektorunu necə təmin edəcəyik? İV nədir?
Həll 2: İV – simmetrik şifrələmənin müxtəlif və random olmasını təmin edir. Başqa sözlə buna fərqli bir açar kimi düşünə bilərik.Diqqət etmək lazımdırki, İV təsadüfi və random olmalıdır.Əgər İV zəif kodlaşdırılmışdırsa və təkrar istifadə olunarsa, o zaman o rahatlıqla sındırıla bilər. Məsələn: WIFI WEP.
WIFI WEP rahat sındırılmasının səbəbi İV bir neçə seansda yenidən təkrar istifadə olunurdu,xaker şəbəkəni dinləyir və İV təyin edir. Brute force hücumundan istifadə edərək açarı deşifrə edir.
Problem 3: Bildiyimiz kimi AES 128 bit informasiyanı açıq mətnin daxil edilməsi üçün istifadə edir.Bəs bizim 128 bit tam dolmarsa?
Həll 3: Bu problemi həll etmək üçün Python proqramlaşdırma dilində, doldurma metodologiyasından istifadə edəcəyik.(Yəni Random)
Nəhayət heç bir problem yoxdur və biz Python dilində AES simmetrik şifrələmənin kodlarını yaza bilərik:
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Hash import MD5
from Crypto.Util.Padding import pad, unpad
def md5_key(password: str) -> bytes:
return MD5.new(password.encode()).digest()
def encrypt(plaintext: str, password: str) -> tuple:
key = md5_key(password)
iv = get_random_bytes(16)
cipher = AES.new(key, AES.MODE_CBC, iv)
ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
return iv, ciphertext
def decrypt(iv: bytes, ciphertext: bytes, password: str) -> str:
key = md5_key(password)
cipher = AES.new(key, AES.MODE_CBC, iv)
plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size)
return plaintext.decode()
# Test
if __name__ == "__main__":
mesaj = "Salam. Bu bir mesajdır!"
sifre = "supersecret"
iv, sifrelenmis = encrypt(mesaj, sifre)
print("IV:", iv.hex())
print("Şifrələnmiş:", sifrelenmis.hex())
acilmis = decrypt(iv, sifrelenmis, sifre)
print("Deşifrə olunmuş:", acilmis)
Son olaraq nəticəni görə bilərik:
└─# python3 aes.py
IV: 7b31fea2b74b1cd8f36d265b59afc5fe
Şifrələnmiş: 15d753860958a702591061dfac21bc66cb60445e51a2d7355e89b035d3801cd6
Deşifrə olunmuş: Salam. Bu bir mesajdir!
Ümid varam faydalı olmuşdur! Oxuduğunuz üçün təşəkkürlər!
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat