Bài thực hành này giúp sinh viên:
- Nhận biết lỗ hổng Signature Malleability trong thuật toán ECDSA
- Hiểu ảnh hưởng của nó trong giao dịch blockchain (Ethereum, Bitcoin)
- Biết cách phát hiện và phòng tránh tấn công này
- Nắm kiến thức cơ bản về ECDSA, chữ ký số, txid và hashing\
- Có kỹ năng đọc/ghi tệp JSON\
- Sử dụng terminal và thao tác cơ bản trong môi trường Labtainers
imodule https://github.com/NKTriS/labtainer/raw/main/imodule.tar
labtainer malleabilityLưu ý: Sinh viên nhập tên tài khoản (MSV) khi được yêu cầu trong terminal để lưu kết quả chấm điểm.
sudo chmod 777 /shared
python3 signer.pyKết quả: - /shared/original_signature.json - /shared/public_key.txt - /shared/original_txid.txt
python3 attacker.py- Nếu đã chuẩn hóa low-s → dừng và báo lỗi\
- Nếu chưa → tạo malleable_signature.json và malleable_txid.txt
python3 verify.py
cat /shared/verify_result.txtComment đoạn:
# if s > SECP256k1.order // 2:
# print("Rejected: Signature has high-s value → vulnerable to malleability")
# return FalseChạy lại signer → attacker → verify.
python3 plot_sig_diff.pyQuan sát: - r giống nhau\
- s đảo dấu\
- txid khác nhau
python3 blockchain.py --safeLog: - blockchain_log.txt - replay_log.txt
stoplab
labtainer -r malleability
checkwork <tên bài lab>