TDCTF Academy Logo TDCTF ACADEMY

Lab 10: ️ Digital Signatures - Menandatangani & Memverifikasi

Target: Membuat dan memverifikasi tanda tangan digital dengan RSA
Tools: openssl, python3


Konsep

Digital signature memberikan integritas + autentikasi:

  • Sign dengan private key - hanya pemilik yang bisa sign
  • Verify dengan public key - semua orang bisa verify
  • Jika dokumen diubah, signature jadi invalid

Praktikum

cd ~ && mkdir crypto-lab10 && cd crypto-lab10

# 1. Sign & verify dengan OpenSSL
echo "=== OpenSSL Digital Signature ==*"

# Generate key
openssl genrsa -out key.pem 2048 2>/dev/null

# Buat dokumen
echo "Kontrak: A setuju membayar B Rp 1.000.000" > contract.txt

# Sign
openssl dgst -sha256 -sign key.pem -out contract.sig contract.txt

# Verify
openssl dgst -sha256 -verify <(openssl rsa -in key.pem -pubout 2>/dev/null) \
-signature contract.sig contract.txt 2>/dev/null

echo "✅ Signature valid!"
echo ""

# 2. Demonstrasi: dokumen diubah
echo "Kontrak: A setuju membayar B Rp 10.000.000" > contract_modified.txt
openssl dgst -sha256 -verify <(openssl rsa -in key.pem -pubout 2>/dev/null) \
-signature contract.sig contract_modified.txt 2>/dev/null

echo "❌ Signature INVALID - dokumen telah diubah!"
echo ""

# 3. Python implementation
python3 << 'PYEOF'
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA

# Load key
key = RSA.generate(2048)

# Sign
doc = b"Laporan keuangan Q2 2026: Laba bersih Rp 5M"
h = SHA256.new(doc)
signature = pkcs1_15.new(key).sign(h)

print(f"Document: {doc}")
print(f"Signature (hex): {signature.hex()[:40]}...")

# Verify
try:
pkcs1_15.new(key.publickey()).verify(h, signature)
print("✅ Signature VALID - dokumen asli & tidak diubah")
except (ValueError, TypeError):
print("❌ Signature INVALID - dokumen dipalsukan!")
PYEOF

️ Analisis

Konsep Arti
Sign Hash dokumen → encrypt hash dengan private key
Verify Decrypt signature dengan public key → bandingkan hash
Integritas Jika dokumen berubah, hash berbeda → signature invalid
Non-repudiation Penandatangan tidak bisa menyangkal

Refleksi: Digital signature = tanda tangan elektronik yang tidak bisa dipalsukan. Inilah dasar dari kontrak digital, software signing, dan sertifikat SSL/TLS. Lebih kuat dari tanda tangan basah!


Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy

PADA HALAMAN INI