การประยุกต์ใช้ Cryptography Tools ร่วมกับ Python

ในการทำ Digital Signature for Document Authentication

โปรเจคนี้เป็นส่วนหนึ่งของรายวิชา ITDS272 Security Lab ภาคเรียนที่ 2 ปีการศึกษา 2567
คณะเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยมหิดล

ฐิตารีย์ กองแก้ว 6687015
ศุกลภัทร ภิสัชเพ็ญ 6687052

เสนอ: ผศ.ดร. Korakoch WilaiLux

รายวิชา: ITDS272 Security Lab ภาคเรียนที่ 2 ปีการศึกษา 2567

รายงานผลการทำงาน


ผลลัพธ์การทดสอบ Digital Signature

กรณีที่ 1: ข้อความเหมือนเดิม (ลายเซ็นถูกต้อง)

ลายเซ็นถูกต้อง
หมายถึงข้อมูลไม่ถูกแก้ไข

กรณีที่ 2: ข้อความถูกเปลี่ยนแปลง (ลายเซ็นไม่ถูกต้อง)
message = b"This document has been modified."

ลายเซ็นไม่ถูกต้อง
หมายถึงมีการปลอมแปลงไฟล์

สรุปผลการทดสอบ

กระบวนการทำงานของ Digital Signature

  1. สร้าง Key Pair
    • ใช้ rsa.generate_private_key() สร้าง Private Key
    • ใช้ private_key.public_key() สร้าง Public Key
  2. ลงลายเซ็นดิจิทัล
    • ใช้ private_key.sign() ลงลายเซ็นให้ข้อมูล
    • ใช้ SHA-256 เพื่อสร้างค่า Hash ของข้อมูล
    • ใช้ PSS Padding เพื่อเพิ่มความปลอดภัย
  3. ตรวจสอบลายเซ็น
    • ใช้ public_key.verify() เพื่อตรวจสอบลายเซ็น
    • ข้อมูลไม่เปลี่ยนแปลง → ลายเซ็นตรงกัน
    • ข้อมูลถูกแก้ไข → ลายเซ็นไม่ตรงกัน

ประโยชน์ของ Digital Signature

  • ป้องกันการปลอมแปลงเอกสาร
  • ยืนยันความถูกต้องของเอกสาร
  • ใช้ใน E-Signature, Blockchain และระบบความปลอดภัยข้อมูล

รายละเอียด Project : การสร้างระบบ Digital Signature ด้วย Python

โครงการนี้เป็นการทดลองประยุกต์ใช้ เครื่องมือเข้ารหัสข้อมูล (Cryptography Tools) โดยใช้ Python สำหรับสร้างและตรวจสอบลายเซ็นดิจิทัล (Digital Signature) ซึ่งมีบทบาทสำคัญในการตรวจสอบความถูกต้องของเอกสารในโลกดิจิทัล

วัตถุประสงค์หลักของโครงการ

เทคโนโลยีที่ใช้

กระบวนการทำงานของโปรแกรม

  1. สร้าง Key Pair
    สร้างคู่กุญแจ RSA ด้วย Web Crypto API
    Private Key: ใช้ลงลายเซ็น เก็บไว้เป็นความลับ
    Public Key: แจกจ่ายให้ผู้ตรวจสอบลายเซ็น
  2. ลงลายเซ็นข้อความ
    • แปลงข้อความเป็นค่าแฮชด้วย SHA-256
    • เข้ารหัสค่าแฮชด้วย Private Key → ได้เป็นลายเซ็นดิจิทัล
  3. ตรวจสอบลายเซ็น
    • ถอดรหัสลายเซ็นด้วย Public Key
    • เปรียบเทียบกับค่าแฮชของข้อความเดิม
    ✅ ถ้าตรงกัน → ข้อความไม่ถูกแก้ไข
    ❌ ถ้าไม่ตรง → อาจมีการปลอมแปลง