Lab 8: RSA - Public Key Cryptography
Target: Generate RSA key pair, encrypt, decrypt, dan memahami matematika di baliknya
Tools:openssl,python3
Konsep
RSA menggunakan sepasang kunci: public (untuk enkripsi) dan private (untuk dekripsi). Ini memungkinkan:
- Siapa pun bisa mengenkripsi dengan public key
- Hanya pemilik private key yang bisa mendekripsi
- Juga bisa untuk digital signature
Praktikum
cd ~ && mkdir crypto-lab8 && cd crypto-lab8
# 1. Generate RSA key pair
echo "=== Generate RSA Key Pair ==*"
openssl genrsa -out private.pem 2048 2>/dev/null
openssl rsa -in private.pem -pubout -out public.pem 2>/dev/null
echo "Private key: private.pem"
echo "Public key: public.pem"
echo ""
# 2. Encrypt & decrypt
echo "=== Enkripsi & Dekripsi ==*"
echo "Pesan rahasia untuk Anda" > /tmp/message.txt
openssl pkeyutl -encrypt -pubin -inkey public.pem -in /tmp/message.txt -out /tmp/message.enc
openssl pkeyutl -decrypt -inkey private.pem -in /tmp/message.enc -out /tmp/message_dec.txt
echo "Original: $(cat /tmp/message.txt)"
echo "Decrypted: $(cat /tmp/message_dec.txt)"
echo ""
# 3. RSA dengan Python
python3 << 'PYEOF'
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# Generate key pair
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
print("Private key (PEM):")
print(private_key.decode()[:200] + "...")
print()
# Encrypt
message = b"Ini pesan rahasia dengan RSA!"
cipher = PKCS1_OAEP.new(key.publickey())
ciphertext = cipher.encrypt(message)
print(f"Plaintext: {message}")
print(f"Ciphertext: {ciphertext.hex()[:50]}...")
print()
# Decrypt
cipher_dec = PKCS1_OAEP.new(key)
decrypted = cipher_dec.decrypt(ciphertext)
print(f"Decrypted: {decrypted.decode()}")
PYEOF
️ Analisis
| Aspek | RSA | AES |
|---|---|---|
| Key | Public + Private (asymmetric) | Single key (symmetric) |
| Kecepatan | Lambat (ribuan kali) | Sangat cepat |
| Ukuran key | 2048+ bit | 128-256 bit |
| Penggunaan | Key exchange, signature | Bulk encryption |
Refleksi: RSA lambat untuk data besar - biasanya digunakan untuk mengenkripsi kunci AES, lalu AES mengenkripsi data. Ini disebut hybrid encryption (digunakan di HTTPS/TLS).
Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy