0Pricing
Cryptology Academy · บทเรียน

ECDH: เส้นโค้งวงรีสำหรับการแลกเปลี่ยนคีย์

ประยุกต์ใช้การคูณสเกลาร์บนเส้นโค้งวงรีเพื่อทำข้อตกลงคีย์ด้วย ECDH

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

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

ECDH แทนที่กลุ่มการคูณของ DH ด้วยกลุ่มเส้นโค้งวงรี ผลลัพธ์คือความปลอดภัยในระดับเทียบเท่ากัน โดยใช้คีย์ที่เล็กลง 10 เท่าและดำเนินการได้เร็วขึ้น 10 เท่า

การดำเนินการบนกลุ่ม EC

ใน ECDH «การคูณ» คือการคูณสเกลาร์บนเส้นโค้งวงรี การคูณจุด P ด้วยสเกลาร์ k หมายถึงการนำ P มาบวกกับตัวเอง k ครั้ง: k×P นี่คือสิ่งที่เทียบเท่ากับ g^k mod p ใน EC

โปรโตคอล ECDH

ตกลงร่วมกันเกี่ยวกับเส้นโค้ง E และจุดฐาน G (เป็นสาธารณะ) อลิซ: คีย์ส่วนตัว a, คีย์สาธารณะ A = a×G บ็อบ: คีย์ส่วนตัว b, คีย์สาธารณะ B = b×G อลิซ: S = a×B = a×b×G บ็อบ: S = b×A = b×a×G ทั้งคู่สร้างจุด S เดียวกัน

ECDLP

เมื่อกำหนด A = a×G บนเส้นโค้งวงรีให้ จงหา a นี่คือปัญหาลอการิทึมไม่ต่อเนื่องบนเส้นโค้งวงรี ยังไม่มีอัลกอริทึมแบบกึ่งเอ็กซ์โพเนนเชียลที่รู้จักสำหรับเส้นโค้งทั่วไป ทำให้ ECDLP ยากกว่า DLP เมื่อใช้ขนาดคีย์เท่ากัน

Curve25519

ออกแบบโดย Bernstein ในปี 2005 ในรูปแบบ Montgomery: y²=x³+486662x²+x บนจำนวนเฉพาะ 2^255-19 ออกแบบมาให้ทำงานได้รวดเร็วและทนทานต่อข้อผิดพลาดในการนำไปใช้ ใช้ใน WireGuard, Signal และ SSH

การแลกเปลี่ยนคีย์ X25519

X25519 คือฟังก์ชัน ECDH ที่ใช้ Curve25519 โดยใช้เฉพาะพิกัด x ของจุดร่วม การคูณด้วยตัวประกอบร่วมจะจัดการกรณีขอบได้ RFC 7748 กำหนดมาตรฐาน X25519 และ X448

ECDH ใน Python

from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey alice_priv = X25519PrivateKey.generate() bob_priv = X25519PrivateKey.generate() alice_pub = alice_priv.public_key() bob_pub = bob_priv.public_key() shared_alice = alice_priv.exchange(bob_pub) shared_bob = bob_priv.exchange(alice_pub) assert shared_alice == shared_bob

จากจุดร่วมสู่คีย์สมมาตร

ไม่ควรใช้จุดร่วมดิบเป็นคีย์โดยตรง เนื่องจากจุดดังกล่าวไม่ได้กระจายอย่างสม่ำเสมอ ให้ใช้ HKDF เพื่อสร้างคีย์สมมาตรที่เหมาะสม: from cryptography.hazmat.primitives.kdf.hkdf import HKDF key = HKDF(SHA256, 32, salt, info).derive(shared_secret)

ขนาดคีย์ ECDH เทียบกับ DH

ระดับความปลอดภัย 128 บิต: - DH: จำนวนเฉพาะขนาด 3072 บิต - ECDH: เส้นโค้งขนาด 256 บิต อัตราส่วนขนาดคีย์: ประมาณ 12:1 คีย์สาธารณะ ECDH: 32 ไบต์ (Curve25519) คีย์สาธารณะ DH: 384 ไบต์ การดำเนินการด้วยคีย์ส่วนตัวของ ECDH เร็วขึ้นประมาณ 50 เท่า

การโจมตีตัวประกอบร่วมบนเส้นโค้งที่ไม่ปลอดภัย

การโจมตีกลุ่มย่อยขนาดเล็กใช้ประโยชน์จากเส้นโค้งที่มีตัวประกอบร่วมที่ไม่เป็นหนึ่ง Curve25519 มีตัวประกอบร่วมเป็น 8 แต่ X25519 จัดการกรณีนี้ได้อย่างถูกต้อง เส้นโค้ง P ของ NIST มีตัวประกอบร่วมเป็น 1 ควรใช้การนำไปใช้ที่เป็นมาตรฐานเสมอ

ECDH ใน TLS 1.3

TLS 1.3 รองรับ X25519, X448, P-256, P-384 และ P-521 สำหรับการแลกเปลี่ยนคีย์ X25519 เป็นรูปแบบที่ใช้กันมากที่สุด เพราะรวดเร็ว ปลอดภัย และใช้เวลาคงที่ ทั้งสองฝ่ายจะสร้างคีย์ชั่วคราวใหม่สำหรับแต่ละเซสชัน

ตรวจสอบอย่างรวดเร็ว

ข้อได้เปรียบหลักของ ECDH เหนือ Diffie-Hellman แบบดั้งเดิมคืออะไร

สรุปทบทวน

เข้าใจ ECDH อย่างเชี่ยวชาญแล้ว ต่อไปเราจะทำความเข้าใจการรักษาความลับไปข้างหน้า และเหตุใดการแลกเปลี่ยนคีย์ชั่วคราวจึงจำเป็นอย่างยิ่งใน TLS

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

บทเรียน “ECDH: เส้นโค้งวงรีสำหรับการแลกเปลี่ยนคีย์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ECDH: เส้นโค้งวงรีสำหรับการแลกเปลี่ยนคีย์”

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

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

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

บทเรียน “ECDH: เส้นโค้งวงรีสำหรับการแลกเปลี่ยนคีย์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ปัญหาการกระจายคีย์
  2. คณิตศาสตร์ของการแลกเปลี่ยนคีย์ Diffie-Hellman
  3. ECDH: เส้นโค้งวงรีสำหรับการแลกเปลี่ยนคีย์
  4. การรักษาความลับล่วงหน้าและการแลกเปลี่ยนคีย์ชั่วคราว
← กลับไปที่ Cryptology Academy