0Pricing
Security+ Academy · บทเรียน

การแลกเปลี่ยนกุญแจและการเข้ารหัสแบบผสม

ดูวิธีที่การแลกเปลี่ยนกุญแจแบบ Diffie-Hellman และ TLS ผสานวิธีการแบบสมมาตรและอสมมาตร เพื่อให้ได้ทั้งประสิทธิภาพและความปลอดภัย

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

The ปัญหาการแลกเปลี่ยนคีย์

การเข้ารหัสแบบสมมาตรต้องให้ทั้งสองฝ่ายมีคีย์ลับเดียวกันก่อนจึงจะสื่อสารกันได้อย่างปลอดภัย แต่คุณจะแชร์คีย์นั้นอย่างปลอดภัยได้อย่างไร หากยังไม่มีช่องทางที่ปลอดภัยอยู่ก่อน ปัญหา การแจกจ่ายคีย์ นี้เคยถูกมองว่าแก้ไม่ได้จนกระทั่งปี 1976 เมื่อ Whitfield Diffie และ Martin Hellman ตีพิมพ์ผลงานอันปฏิวัติวงการ วิธีแก้ของพวกเขา คือ การแลกเปลี่ยนคีย์ Diffie-Hellman ซึ่งช่วยให้สองฝ่ายสร้างคีย์ลับร่วมกันผ่านช่องทางที่ไม่ปลอดภัยได้ โดยไม่ต้องส่งคีย์จริงผ่านเครือข่ายให้ผู้ดักฟังเห็น

แนวคิดการแลกเปลี่ยนคีย์ Diffie-Hellman

Diffie-Hellman (DH) ใช้กลวิธีทางคณิตศาสตร์อันชาญฉลาดที่อาศัย ปัญหาลอการิทึมไม่ต่อเนื่อง Both ฝ่ายตกลงใช้ค่าสาธารณะสองค่า (จำนวนเฉพาะขนาดใหญ่ p และตัวกำเนิด g) แต่ละฝ่ายสร้างตัวเลขสุ่มส่วนตัว คำนวณค่าสาธารณะจากตัวเลขนั้น แล้วแลกเปลี่ยนค่าสาธารณะกัน จากนั้นแต่ละฝ่ายสามารถคำนวณความลับร่วมเดียวกันได้จากตัวเลขส่วนตัวของตนเองและค่าสาธารณะของอีกฝ่าย แต่ผู้ดักฟังที่เห็นเฉพาะค่าสาธารณะจะไม่สามารถคำนวณความลับร่วมได้หากไม่แก้ปัญหาลอการิทึมไม่ต่อเนื่อง ซึ่งไม่สามารถทำได้ในทางปฏิบัติเมื่อใช้ตัวเลขขนาดใหญ่

# Diffie-Hellman conceptual flow:
# 1. Agree on public parameters: prime p=23, generator g=5
# 2. Alice picks private a=6:  computes A = g^a mod p = 5^6 mod 23 = 8
# 3. Bob picks private b=15:   computes B = g^b mod p = 5^15 mod 23 = 19
# 4. Alice sends A=8 to Bob;   Bob sends B=19 to Alice
# 5. Alice: s = B^a mod p = 19^6 mod 23 = 2
# 6. Bob:   s = A^b mod p = 8^15 mod 23 = 2
# Shared secret = 2 (without either party transmitting it!)

ECDH: Elliptic Curve Diffie-Hellman

Elliptic Curve Diffie-Hellman (ECDH) เป็นรูปแบบการแลกเปลี่ยนคีย์ Diffie-Hellman สมัยใหม่ที่มีประสิทธิภาพมากกว่า โดยใช้คณิตศาสตร์ของเส้นโค้งวงรีแทนการยกกำลังแบบมอดุลาร์ จึงให้ความปลอดภัยในระดับเดียวกันด้วยพารามิเตอร์ที่เล็กกว่ามาก คีย์ ECDH ขนาด 256 บิตให้ความปลอดภัยเทียบเท่ากับคีย์ DH ขนาด 3072 บิต ECDHE (ตัว “E” ย่อมาจาก Ephemeral) จะสร้างคู่คีย์ใหม่สำหรับแต่ละเซสชัน จึงให้ ความลับส่งต่อสมบูรณ์แบบ TLS 1.3 กำหนดให้ใช้ ECDHE สำหรับการแลกเปลี่ยนคีย์ ทำให้ ECDHE เป็นกลไกการแลกเปลี่ยนคีย์หลักในความปลอดภัยเว็บสมัยใหม่

ความลับส่งต่อสมบูรณ์แบบ (PFS)

ความลับส่งต่อสมบูรณ์แบบ (PFS) ทำให้มั่นใจได้ว่าคีย์เซสชันจะไม่ถูกเปิดเผย แม้คีย์ส่วนตัวระยะยาวของเซิร์ฟเวอร์จะถูกขโมยในภายหลัง PFS ทำได้โดยใช้ คู่คีย์ชั่วคราว สำหรับการแลกเปลี่ยนคีย์ของแต่ละเซสชัน คีย์เซสชันจะได้มาจากคู่คีย์ชั่วคราวที่ถูกทิ้งหลังจบเซสชัน หากไม่มี PFS (และใช้การแลกเปลี่ยนคีย์ RSA) ผู้โจมตีที่บันทึกข้อมูลการสื่อสารที่เข้ารหัสไว้ในวันนี้ แล้วขโมยคีย์ส่วนตัวได้ในภายหลัง จะสามารถถอดรหัสข้อมูลที่สื่อสารในอดีตทั้งหมดได้ย้อนหลัง แต่เมื่อมี PFS เซสชันในอดีตจะยังคงปลอดภัยแม้คีย์จะถูกบุกรุก

# Check if a website uses Perfect Forward Secrecy
openssl s_client -connect google.com:443 2>/dev/null | grep 'Cipher'
# Cipher    : TLS_AES_256_GCM_SHA384 (TLS 1.3 - always has PFS)
# Or look for ECDHE in cipher name:
# Cipher : ECDHE-RSA-AES256-GCM-SHA384 (TLS 1.2 with PFS)
# DHE-RSA-AES256-GCM-SHA384 (DHE = also PFS)
# RSA-AES256-SHA (NO PFS - static RSA key exchange)

การเข้ารหัสแบบผสม: รวมข้อดีของทั้งสองแบบ

การเข้ารหัสแบบผสมผสานการเข้ารหัสแบบอสมมาตรและแบบสมมาตรเข้าด้วยกัน เพื่อให้ได้ทั้งข้อดีด้านการจัดการกุญแจของการเข้ารหัสแบบอสมมาตร และประสิทธิภาพของการเข้ารหัสแบบสมมาตร กระบวนการมีดังนี้: (1) สร้างกุญแจเซสชันแบบสมมาตรที่สุ่มขึ้นมา (2) เข้ารหัสข้อมูลส่วนใหญ่ด้วยกุญแจสมมาตรนี้ (ทำได้รวดเร็ว) (3) เข้ารหัสกุญแจสมมาตรด้วยกุญแจสาธารณะของผู้รับ (เพื่อส่งกุญแจอย่างปลอดภัย) (4) ส่งทั้งข้อมูลที่เข้ารหัสแล้วและกุญแจที่เข้ารหัสแล้ว ผู้รับจะถอดรหัสกุญแจสมมาตรด้วยกุญแจส่วนตัว จากนั้นจึงถอดรหัสข้อมูลด้วยกุญแจสมมาตรที่กู้คืนมา

# Hybrid encryption example with OpenSSL
# 1. Generate a random AES-256 session key
openssl rand -out session.key 32

# 2. Encrypt the large file with the symmetric session key
openssl enc -aes-256-cbc -pbkdf2 -in largefile.tar -out largefile.enc -pass file:session.key

# 3. Encrypt the session key with recipient's RSA public key
openssl rsautl -encrypt -inkey recipient_public.pem -pubin -in session.key -out session.key.enc

# Send: largefile.enc + session.key.enc

การจับมือ TLS: การเข้ารหัสแบบผสมในทางปฏิบัติ

การจับมือ TLSเป็นการนำการเข้ารหัสแบบผสมมาใช้จริงที่พบได้บ่อยที่สุด ในTLS 1.3: (1) ไคลเอนต์ส่งชุดการเข้ารหัสที่รองรับและส่วนแบ่งกุญแจ (ค่าสาธารณะของ ECDHE) (2) เซิร์ฟเวอร์ตอบกลับด้วยส่วนแบ่งกุญแจ ใบรับรอง (ที่มีกุญแจสาธารณะของเซิร์ฟเวอร์) และลายเซ็น (3) ทั้งสองฝ่ายคำนวณความลับร่วมค่าเดียวกันผ่าน ECDH (4) การรับส่งข้อมูลทั้งหมดหลังจากนั้นจะถูกเข้ารหัสด้วยกุญแจสมมาตรที่สร้างจากความลับร่วม (AES-256-GCM) กระบวนการทั้งหมดสร้างช่องทางเข้ารหัสได้ภายในการเดินทางไปกลับหนึ่งครั้ง โดยไม่ต้องส่งกุญแจสมมาตรโดยตรงเลย

# Observe the TLS 1.3 handshake
openssl s_client -connect example.com:443 -tls1_3
# You'll see:
# TLSv1.3, Handshake [length 0002], ServerHello
# Cipher    : TLS_AES_256_GCM_SHA384
# Session-ID: (no session ID in TLS 1.3, uses PSK)
# Verify return code: 0 (ok)

กลไกการห่อหุ้มกุญแจ (KEM)

การเข้ารหัสสมัยใหม่ใช้กลไกการห่อหุ้มกุญแจ (KEM)เป็นแนวทางแลกเปลี่ยนกุญแจที่เป็นทางการและปลอดภัยกว่าการเข้ารหัสกุญแจเซสชันโดยตรงด้วยการเข้ารหัสแบบอสมมาตร KEM ช่วยให้ฝ่ายหนึ่งสร้างกุญแจสมมาตรและ “ห่อหุ้ม” กุญแจนั้นด้วยกุญแจสาธารณะของผู้รับในลักษณะที่มีเพียงผู้รับเท่านั้นที่สามารถแกะห่อหุ้มเพื่อกู้คืนกุญแจได้ มาตรฐานหลังยุคควอนตัมของ NIST อย่างCRYSTALS-Kyberเป็น KEM ที่อาศัยปัญหาโครงข่ายแทนการแยกตัวประกอบจำนวนเต็มหรือเส้นโค้งวงรี จึงต้านทานการโจมตีจากคอมพิวเตอร์ควอนตัมได้

การแลกเปลี่ยนกุญแจ RSA เทียบกับ ECDHE

ก่อน TLS 1.3 การแลกเปลี่ยนกุญแจ RSA เป็นวิธีที่ใช้กันทั่วไป โดยไคลเอนต์จะสร้างความลับก่อนมาสเตอร์ เข้ารหัสด้วยกุญแจสาธารณะ RSA ของเซิร์ฟเวอร์ แล้วส่งให้เซิร์ฟเวอร์ ปัญหาคือวิธีนี้ไม่มีความลับล่วงหน้า หากกุญแจส่วนตัวของเซิร์ฟเวอร์ถูกเจาะในภายหลัง เซสชันในอดีตทั้งหมดที่เข้ารหัสด้วยวิธีนี้ก็สามารถถูกถอดรหัสได้ TLS 1.3 ยกเลิกการแลกเปลี่ยนกุญแจ RSA โดยสิ้นเชิง (อนุญาตเฉพาะ ECDHE) เพื่อบังคับใช้ความลับล่วงหน้าในทุกการเชื่อมต่อโดยเฉพาะ นี่คือเหตุผลที่การปิดใช้ TLS 1.0 และ 1.2 (ซึ่งยังอนุญาต RSA แบบคงที่) และกำหนดให้ใช้ TLS 1.3 ถือเป็นการปรับปรุงความปลอดภัย

การสร้างกุญแจเซสชัน

ความลับร่วมที่ได้จากการแลกเปลี่ยน Diffie-Hellman จะไม่ถูกใช้โดยตรงเป็นกุญแจเข้ารหัส แต่จะถูกป้อนเข้าสู่ฟังก์ชันสร้างกุญแจ (KDF)เพื่อสร้างกุญแจเข้ารหัสและเวกเตอร์เริ่มต้นที่ใช้งานจริง TLS 1.3 ใช้HKDF (ฟังก์ชันสร้างกุญแจที่อาศัย HMAC)เพื่อสร้างกุญแจแยกกันสำหรับการเข้ารหัสในแต่ละทิศทาง KDF เพิ่มต้นทุนในการคำนวณ (ทำให้การเดารหัสแบบไล่ลองทำได้ยากขึ้น) ขยายความลับสั้น ๆ ให้เป็นจำนวนไบต์ของกุญแจตามต้องการ และทำให้กุญแจที่สร้างขึ้นมีคุณสมบัติทางสถิติที่เหมาะสมต่อการใช้เป็นกุญแจสมมาตร

การเข้ารหัสอีเมลด้วย PGP: การเข้ารหัสแบบผสมในอีเมล

Pretty Good Privacy (PGP)และรุ่นโอเพนซอร์สอย่างOpenPGPใช้การเข้ารหัสแบบผสมสำหรับอีเมล เมื่อ Alice ส่งอีเมลที่เข้ารหัสให้ Bob: PGP จะสร้างกุญแจเซสชันแบบสมมาตรที่สุ่มขึ้นมา เข้ารหัสเนื้อหาอีเมลด้วยกุญแจนั้น (AES) เข้ารหัสกุญแจเซสชันด้วยกุญแจสาธารณะ RSA หรือ ECC ของ Bob แล้วส่งทั้งสองอย่างไปพร้อมกัน สำหรับอีเมลที่มีลายเซ็น PGP จะคำนวณแฮชของข้อความและเซ็นแฮชนั้นด้วยกุญแจส่วนตัวของ Alice ซึ่งให้คุณสมบัติในการปฏิเสธความรับผิดไม่ได้ รูปแบบเครือข่ายแห่งความไว้วางใจของ PGP (ผู้ใช้เซ็นกุญแจของกันและกัน) เป็นทางเลือกแทน PKI ที่อาศัยหน่วยงานออกใบรับรอง

# Encrypt and sign an email file with GPG (OpenPGP)
# Encrypt to Bob using his public key, sign with Alice's private key
gpg --encrypt --sign --recipient bob@example.com --armor message.txt

# Decrypt (Bob uses his private key)
gpg --decrypt message.txt.asc

# List available keys
gpg --list-keys
gpg --list-secret-keys

ความเสี่ยงจากคนกลางในการแลกเปลี่ยนกุญแจ

การแลกเปลี่ยนกุญแจ Diffie-Hellman ปลอดภัยจากผู้ดักฟังแบบพาสซีฟ แต่เสี่ยงต่อการโจมตีแบบคนกลาง (MITM) เชิงรุกหากคู่สื่อสารไม่ได้ยืนยันตัวตนของกันและกัน ผู้โจมตีสามารถดักจับค่าสาธารณะของ Alice แทนที่ด้วยค่าของตนเอง และสร้างเซสชัน DH แยกกับทั้ง Alice และ Bob โดยแต่ละฝ่ายเข้าใจว่าตนกำลังสื่อสารกับอีกฝ่าย นี่คือเหตุผลที่ TLS ผสานการแลกเปลี่ยนกุญแจ DH เข้ากับการยืนยันตัวตนด้วยใบรับรอง ใบรับรองของเซิร์ฟเวอร์ (ที่ลงนามโดย CA ที่เชื่อถือได้) ยืนยันตัวตนของเซิร์ฟเวอร์และป้องกันการแทนที่กุญแจสาธารณะโดยคนกลางระหว่างการจับมือ

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิดของ CompTIA Security+ (SY0-701) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า: Diffie-Hellmanแก้ปัญหาการแลกเปลี่ยนกุญแจโดยให้คู่สื่อสารสร้างความลับร่วมผ่านช่องทางที่ไม่ปลอดภัยได้ ECDHE (แบบชั่วคราว) ให้ความลับล่วงหน้าอย่างสมบูรณ์ การเข้ารหัสแบบผสมผสานการแลกเปลี่ยนกุญแจแบบอสมมาตรเข้ากับการเข้ารหัสข้อมูลปริมาณมากแบบสมมาตรเพื่อประสิทธิภาพ และ TLS 1.3 กำหนดให้ใช้ ECDHE กับการเชื่อมต่อทั้งหมด บทถัดไป เราจะศึกษาเรื่องหน่วยงานออกใบรับรองและสายโซ่ความไว้วางใจ

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

บทเรียน “การแลกเปลี่ยนกุญแจและการเข้ารหัสแบบผสม” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การแลกเปลี่ยนกุญแจและการเข้ารหัสแบบผสม”

ดูวิธีที่การแลกเปลี่ยนกุญแจแบบ Diffie-Hellman และ TLS ผสานวิธีการแบบสมมาตรและอสมมาตร เพื่อให้ได้ทั้งประสิทธิภาพและความปลอดภัย คุณปฏิบัติ Security+ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “การแลกเปลี่ยนกุญแจและการเข้ารหัสแบบผสม” ใช้เวลานานแค่ไหน

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

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

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

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

  1. อัลกอริทึมการเข้ารหัสแบบสมมาตร
  2. การเข้ารหัสแบบอสมมาตรและคู่กุญแจ
  3. การแฮชและความถูกต้องครบถ้วนของข้อมูล
  4. การแลกเปลี่ยนกุญแจและการเข้ารหัสแบบผสม
← กลับไปที่ Security+ Academy