TDCTF Academy Logo TDCTF ACADEMY

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

PADA HALAMAN INI