Kriptografiyaga Kirish
Ma'lumotlarni himoya qilish fani — qadimdan bugunga
Kriptografiya (yunoncha: kryptos — yashirin, graphein — yozish) — ma'lumotni ruxsatsiz o'qishdan himoya qilish fani. Miloddan avvalgi Misr ierogliflaridan tortib, zamonaviy kvant kriptografiyasigacha — bu fan ming yillar davomida rivojlanib kelgan. Bugungi internet, bank tizimi, messenjerlardagi barcha xavfsizlik kriptografiya asosida qurilgan.
Kriptografiya Tarixi
Shifrlash vs Encoding vs Hashing — Farqlar
Maxfiy kalit yordamida ma'lumotni o'zgartirish. Faqat kalitga ega bo'lgan kimsa o'qiy oladi.
Formatni o'zgartirish, KALIT KERAK EMAS. Maxfiylik maqsadi yo'q — faqat format o'zgarishi.
Bir tomonlama o'zgartirish. Aslga qaytarish IMKONSIZ. Parol saqlash, butunlikni tekshirish uchun.
| Xususiyat | Shifrlash | Encoding | Hashing |
|---|---|---|---|
| Maqsad | Maxfiylik | Format | Butunlik |
| Kalit kerakmi? | Ha | Yo'q | Yo'q |
| Teskari yo'l | Ha (kalit bilan) | Ha (har doim) | Yo'q |
| Misollar | AES, RSA | Base64, Hex | SHA-256, MD5 |
Simmetrik va Assimmetrik Shifrlash
Kriptografiyaning 4 Asosiy Maqsadi
Faqat ruxsat etilgan shaxslar ma'lumotni o'qiy olsin. Shifrlash bilan ta'minlanadi.
Ma'lumot uzatish jarayonida o'zgartirilmasin. Hash funksiyalar va HMAC bilan ta'minlanadi.
Kimlikning haqiqiyligini tasdiqlash. Raqamli imzolar va sertifikatlar.
Yuboruvchi "men yubormadim" deb inkor eta olmasin. Raqamli imzo bilan ta'minlanadi.
CTF da Kriptografiya — Eng Ko'p Uchraydigan Topshiriqlar
- • Caesar/ROT13 — harflar siljishi
- • Vigenere — kalit so'z
- • Atbash — teskari alifbo
- • Rail Fence — zigzag
- • RSA kichik e/d
- • AES ECB mode (oracle)
- • Padding oracle
- • Hash extension
- • CyberChef (online)
- • pycryptodome (Python)
- • hashcat (crack)
- • dcode.fr (classic)
# Python — Kriptografiya bilan ishlash
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64, hashlib
# Base64 decode
data = base64.b64decode("SGVsbG8gV29ybGQ=")
print(data) # b'Hello World'
# SHA-256 hash
h = hashlib.sha256(b"secret").hexdigest()
print(h) # 2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b
# Hex <-> bytes
b = bytes.fromhex("48656c6c6f")
print(b) # b'Hello'
print(b.hex()) # 48656c6c6f
# XOR
ct = bytes([0x41, 0x62, 0x63])
key = 0x20
pt = bytes([c ^ key for c in ct])
print(pt) # b'abc' XOR 0x20 = ABC
Bilimingizni Sinang
1. Base64 qaysi kategoriyaga kiradi?
- A) Shifrlash — chunki o'qib bo'lmaydi
- B) Encoding — kalit kerak emas, har doim qaytariladi
- C) Hashing — bir tomonlama
- D) Simmetrik shifrlash
2. TLS (HTTPS) qaysi yondashuvdan foydalanadi?
- A) Faqat simmetrik
- B) Faqat assimmetrik
- C) Gibrid — RSA/ECC bilan kalit almashinib, keyin AES ishlatiladi
- D) Faqat hashing