ลูกค้าสามารถถอดรหัสข้อมูลจากเซิร์ฟเวอร์ได้หรือไม่หากไม่มี Private Key? (สรุป: ไม่ได้ — และนี่คือเหตุผล)

เมื่อคุณใช้งานเว็บไซต์หรือบริการที่ปลอดภัยผ่าน HTTPS หรือ WSS (WebSocket แบบเข้ารหัส) เบราว์เซอร์ของคุณและเซิร์ฟเวอร์จะทำการ "จับมือ" กันด้วยวิธีเข้ารหัสลับเบื้องหลัง เพื่อให้แน่ใจว่าไม่มีใครแอบดูข้อมูลของคุณได้ คำถามที่หลายคนสงสัยคือ: "ถ้าลูกค้าได้ Public Key ของเซิร์ฟเวอร์มา เขาก็สามารถถอดรหัสข้อมูลได้ใช่ไหม?" หรือ "ลูกค้าจำเป็นต้องใช้ Private Key ของเซิร์ฟเวอร์เพื่อถอดรหัสข้อมูลหรือเปล่า?"

สรุป: ไม่ได้! ลูกค้าไม่เคยได้รับ Private Key ของเซิร์ฟเวอร์ และไม่จำเป็นต้องมีมันด้วย

มาดูกันว่าทำไม


เข้าใจ TLS: สองขั้นตอนหลัก

TLS (Transport Layer Security) ซึ่งเป็นโปรโตคอลที่อยู่เบื้องหลัง HTTPS และ WSS ทำงานผ่าน 2 ขั้นตอนหลัก:

1. ขั้นตอนจับมือ (Handshake) – การเข้ารหัสแบบอสมมาตร

  • ลูกค้าเชื่อมต่อและได้รับ Certificate ของเซิร์ฟเวอร์ ซึ่งมี Public Key อยู่
  • ทั้งสองฝ่ายใช้ Public Key นี้ในการแลกเปลี่ยนความลับร่วมกันอย่างปลอดภัย: เรียกว่า Session Key
  • อาจเป็นการส่ง "pre-master secret" โดยเข้ารหัสด้วย Public Key ซึ่งเซิร์ฟเวอร์เท่านั้นที่ถอดรหัสได้ด้วย Private Key
  • หรือใช้การแลกเปลี่ยนกุญแจแบบ Diffie-Hellman โดยเซิร์ฟเวอร์เซ็นข้อความด้วย Private Key เพื่อยืนยันตัวตน

ในขั้นตอนนี้ Private Key ใช้เฉพาะในการถอดรหัสเล็กน้อยหรือเซ็นข้อความเท่านั้น และไม่เคยถูกส่งออกไป

2. ขั้นตอนสื่อสารข้อมูล (Data Exchange) – การเข้ารหัสแบบสมมาตร

  • หลังจากทั้งสองฝ่ายตกลงกันได้แล้ว Session Key จะถูกใช้เพื่อเข้ารหัสข้อมูลทั้งหมด
  • เป็น Symmetric Key คือทั้งลูกค้าและเซิร์ฟเวอร์ใช้กุญแจเดียวกันในการเข้ารหัสและถอดรหัส
  • กุญแจนี้ใช้แค่ในเซสชันเดียวและไม่เคยถูกส่งผ่านเครือข่าย

สรุป:

  • Private Key ของเซิร์ฟเวอร์ใช้เฉพาะในช่วง Handshake เท่านั้น
  • Session Key ใช้ในการเข้ารหัสข้อมูลจริงทั้งหมด

Public Key มาจาก Private Key

Public Key ของเซิร์ฟเวอร์เกิดจากการคำนวณทางคณิตศาสตร์จาก Private Key เมื่อสร้างคู่กุญแจ (เช่น RSA หรือ ECDSA)

  • Public Key สามารถแจกจ่ายให้ใครก็ได้ อยู่ใน Certificate
  • Private Key ต้องเก็บไว้ที่เซิร์ฟเวอร์และห้ามหลุดเด็ดขาด
  • ทั้งสองกุญแจสัมพันธ์กัน: ข้อมูลที่ถูกเข้ารหัสด้วยหนึ่ง จะถอดได้ด้วยอีกอันเท่านั้น

แผนภาพลำดับ: กระบวนการ TLS Handshake และการรับส่งข้อมูล

sequenceDiagram
    participant Client
    participant Server

    Client->>Server: ClientHello (random, cipher suites)
    Server->>Client: ServerHello (random, cert with public key)
    Server-->>Client: [Optional] Certificate Request
    Note over Server: Server uses Private Key to sign handshake messages

    Client->>Server: Pre-master secret (encrypted with Public Key)
    Note over Server: Decrypts with Private Key
    Client-->>Server: ChangeCipherSpec
    Server-->>Client: ChangeCipherSpec
    Client->>Server: Finished (encrypted with Session Key)
    Server->>Client: Finished (encrypted with Session Key)

    Note over Client,Server: Secure channel established using Session Key
    Client-->>Server: Encrypted data
    Server-->>Client: Encrypted response

ทำไมลูกค้าไม่ต้องใช้ Private Key ของเซิร์ฟเวอร์?

  • ลูกค้าใช้ Public Key ของเซิร์ฟเวอร์เพื่อช่วยสร้าง Session Key
  • หลังจากจับมือเสร็จ ทั้งสองฝ่ายจะมี Session Key เดียวกัน
  • ข้อมูลจากเซิร์ฟเวอร์ถูกเข้ารหัสด้วย Session Key และลูกค้าสามารถถอดรหัสได้ด้วยกุญแจเดียวกัน

ลูกค้าไม่จำเป็นต้องรู้หรือมี Private Key ใด ๆ เลย


ถ้าเซิร์ฟเวอร์ไม่มี Private Key ล่ะ?

  • เซิร์ฟเวอร์จะไม่สามารถจับมือ TLS ได้เลย
  • ไม่สามารถถอดรหัส pre-master secret หรือเซ็นข้อความระหว่าง handshake ได้
  • ผลลัพธ์: การเชื่อมต่อล้มเหลว ทันที

สรุปตารางการใช้กุญแจใน TLS

ประเภทกุญแจ ใครถือครอง ใช้ทำอะไร
Public Key อยู่ใน Certificate ลูกค้าใช้ในการเข้ารหัสและยืนยันตัวตน
Private Key มีเฉพาะเซิร์ฟเวอร์ ใช้ถอดรหัสหรือเซ็นข้อมูลในการจับมือ
Session Key ทั้งสองฝ่าย ใช้เข้ารหัสข้อมูลจริงทั้งหมดในเซสชัน

สรุปท้ายบทความ

Private Key ของเซิร์ฟเวอร์เปรียบเหมือนกุญแจแม่กุญแจ ที่ต้องเก็บไว้ในเซิร์ฟเวอร์ตลอดเวลา ใช้แค่ในการยืนยันตัวตนหรือถอดรหัส pre-master ช่วงเริ่มต้นเท่านั้น

หลังจากจับมือเสร็จ ระบบจะใช้ Session Key แทน ซึ่งปลอดภัย รวดเร็ว และใช้แค่ในเซสชันนั้น ๆ เท่านั้น

ดังนั้น ลูกค้าไม่จำเป็นต้องมีหรือใช้ Private Key ของเซิร์ฟเวอร์เลย — และไม่ควรด้วย!



Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products