Cryptology Academy · บทเรียน

ลายมือชื่อ RSA: การลงนามและการตรวจสอบ

ศึกษาทีละขั้นตอนเกี่ยวกับคณิตศาสตร์ของการลงนามค่าแฮชเอกสารด้วยคีย์ส่วนตัว

บทเรียน 2 จาก 413 ขั้นตอน

ลายมือชื่อ RSA: การลงนามและการตรวจสอบ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

ลายมือชื่อ RSA สลับบทบาทของคีย์: คีย์ส่วนตัวใช้ลงนาม และคีย์สาธารณะใช้ตรวจสอบ ทำให้ทุกคนสามารถตรวจสอบตัวตนของคุณโดยใช้คีย์สาธารณะของคุณได้

คณิตศาสตร์ของการลงนาม RSA

หากต้องการลงนามข้อความ M ด้วยคีย์ส่วนตัว (d, n): 1. H = SHA256(M) 2. sig = H^d mod n ลายมือชื่อเป็นจำนวนที่มีความยาวบิตเท่ากับ n

คณิตศาสตร์ของการตรวจสอบ RSA

หากต้องการตรวจสอบลายมือชื่อ sig ด้วยคีย์สาธารณะ (e, n): 1. H' = sig^e mod n 2. H = SHA256(M) 3. ถูกต้องเมื่อ H == H' ใครก็ตามที่มีคีย์สาธารณะก็ตรวจสอบได้ โดยไม่ต้องใช้ความลับ

การเติมข้อมูลลายมือชื่อ PKCS#1 v1.5

ลายมือชื่อ RSA แบบดิบสามารถดัดแปลงได้ PKCS#1 v1.5 จึงเติมข้อมูลลงในแฮชก่อนลงนาม: 0x00 0x01 [ข้อมูลเติม 0xFF] 0x00 [DigestInfo] [แฮช] การตรวจสอบจะตรวจสอบโครงสร้างการเติมข้อมูลที่ถูกต้องทุกประการ

RSA-PSS: การเติมข้อมูลที่ดีกว่า

RSA-PSS (โครงร่างลายมือชื่อเชิงความน่าจะเป็น) ใช้ค่าข้อมูลเติมแบบสุ่ม ทำให้ลายมือชื่อแต่ละรายการแตกต่างกันแม้ใช้กับข้อความเดียวกัน มีความปลอดภัยที่พิสูจน์ได้ในแบบจำลองออราเคิลสุ่ม และเป็นตัวเลือกที่แนะนำมากกว่า PKCS#1 v1.5

การลงนาม RSA ด้วย Python (PSS)

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes signature = private_key.sign( message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() )

การตรวจสอบ RSA ด้วย Python

try: public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print('Valid!') except InvalidSignature: print('Invalid!')

ความยาวลายมือชื่อ

ลายมือชื่อ RSA-2048: 256 ไบต์ RSA-4096: 512 ไบต์ ลายมือชื่อ ECDSA-256: ประมาณ 71 ไบต์ (การเข้ารหัส DER ที่มีความยาวแปรผัน) ลายมือชื่อประกอบด้วยผลลัพธ์ทั้งหมดจากการยกกำลังแบบมอดุลาร์

ลายมือชื่อแบบปกปิด

ลายมือชื่อแบบปกปิดช่วยให้ผู้ลงนามลงนามข้อความได้โดยไม่เห็นเนื้อหา ใช้ในการลงคะแนนอิเล็กทรอนิกส์และเงินสดอิเล็กทรอนิกส์: ธนาคารลงนามโทเค็นที่ถูกปกปิด ผู้ใช้ยกเลิกการปกปิด แล้วได้เป็นเงินสดที่ติดตามไม่ได้

ลายมือชื่อ RSA ในสายโซ่ใบรับรอง

Let's Encrypt ลงนามใบรับรองเซิร์ฟเวอร์ของคุณด้วยคีย์ส่วนตัว RSA ของ CA ระดับกลาง คีย์สาธารณะของเซิร์ฟเวอร์อยู่ในเนื้อหาใบรับรอง ไคลเอ็นต์ TLS จะตรวจสอบสายโซ่นี้โดยอัตโนมัติ

ความโปร่งใสของใบรับรอง

Certificate Transparency บันทึกใบรับรองที่ออกทั้งหมดไว้ในต้นไม้เมอร์เคิลที่ตรวจสอบความถูกต้องทางการเข้ารหัสได้ การประทับเวลาของใบรับรองที่ลงนาม (SCTs) พิสูจน์ว่ามีการบันทึกใบรับรองไว้ก่อนการออก

ตรวจสอบความเข้าใจ

ในการตรวจสอบลายมือชื่อ RSA ใช้คีย์ใดตรวจสอบลายมือชื่อ

สรุป

ลายมือชื่อ RSA ปลอดภัยเมื่อใช้การเติมข้อมูลที่เหมาะสม ต่อไปเราจะเปรียบเทียบโครงร่างลายมือชื่อ RSA, DSA และ ECDSA
เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

คำถามที่พบบ่อย

บทเรียน “ลายมือชื่อ RSA: การลงนามและการตรวจสอบ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ลายมือชื่อ RSA: การลงนามและการตรวจสอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ลายมือชื่อ RSA: การลงนามและการตรวจสอบ”

ศึกษาทีละขั้นตอนเกี่ยวกับคณิตศาสตร์ของการลงนามค่าแฮชเอกสารด้วยคีย์ส่วนตัว คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ลายมือชื่อ RSA: การลงนามและการตรวจสอบ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ลายมือชื่อดิจิทัลคืออะไร
  2. ลายมือชื่อ RSA: การลงนามและการตรวจสอบ
  3. รูปแบบลายมือชื่อ DSA และ ECDSA
  4. ลายมือชื่อในโลกจริง: การลงนามโค้ดและอีเมล
← กลับไปที่ Cryptology Academy