แม่กุญแจสีเขียวกระจ่าง: SSL handshake ทำงานอย่างไร
เผยแพร่แล้ว: 2022-08-16ทุกวันที่คุณท่องเว็บด้วยความปลอดภัย คุณจะนึกถึงแม่กุญแจสีเขียวที่มีชื่อเสียงใกล้กับที่อยู่ URL ของเว็บไซต์ในเบราว์เซอร์ของคุณและโปรโตคอลการถ่ายโอนข้อมูลเวอร์ชัน HTTPS ในบทความนี้ เราจะค้นพบ ว่าเหตุใด HTTPS จึงปลอดภัยอย่างแท้จริง และ การสื่อสารได้รับการปกป้อง จากการดักฟังโดยบุคคลที่สามอย่างไร
อันดับแรก เราจะแนะนำแนวคิดการเข้ารหัสพื้นฐานสองแบบสั้นๆ: ลายเซ็นดิจิทัล และ การเข้ารหัส เราจะเจาะลึกเข้าไปในกระบวนการที่เรียกว่า SSL handshake ซึ่งดำเนินการก่อนที่ไคลเอ็นต์และเซิร์ฟเวอร์จะเริ่มแลกเปลี่ยนการสื่อสาร และใช้เพื่อสร้างบริบทการเข้ารหัสที่ปลอดภัย เราจะจบด้วยข้อมูลเกี่ยวกับวิธีการเพิ่มความปลอดภัยให้มากยิ่งขึ้นด้วยขั้นตอนทางเลือกที่เรียกว่าการตรวจสอบใบรับรองไคลเอ็นต์
การเข้ารหัสคีย์สาธารณะ 101: Key Pair
พบกับอลิซและบ็อบ สองคนที่ตัดสินใจใช้วิธีการเข้ารหัสเพื่อแลกเปลี่ยนข้อความส่วนตัวอย่างปลอดภัย ตัวเลือกแรกที่พวกเขาต้องเผชิญคือระหว่างการเข้ารหัสสองประเภทที่แตกต่างกัน: การเข้ารหัสคีย์แบบ สมมาตร และ แบบอสมมาตร (เรียกอีกอย่างว่าการเข้ารหัสคีย์สาธารณะ)
แต่เดี๋ยวก่อน กุญแจเหล่านี้ คืออะไร ? โดยพื้นฐานแล้ว เราสามารถลดความซับซ้อนได้ว่าคีย์คือลำดับอักขระแบบสุ่ม เราสามารถใช้ลำดับนี้เพื่อแปลง (ดำเนินการเข้ารหัสบางอย่าง) ในข้อความ – เราจะเจาะลึกลงไปในนั้นในไม่ช้า
การเข้ารหัสคีย์สมมาตร
เมื่อใช้การเข้ารหัสคีย์สมมาตร ผู้ส่งจะสร้างคีย์แล้วทำซ้ำ สำหรับผู้รับ ผู้ส่งจะบันทึกรหัสต้นฉบับ และสำเนาจะถูกส่งไปยังผู้รับ คีย์เดียวกันนี้ใช้สำหรับการดำเนินการเข้ารหัสลับทั้งสองด้านของการสื่อสาร
และอะไรคือข้อดีและข้อเสียที่สำคัญของการเข้ารหัสคีย์สมมาตร?
ข้อดี | ข้อเสีย |
การดำเนินการเข้ารหัสที่เร็วขึ้น - ใช้เพียงคีย์เดียวเท่านั้น | คีย์ที่ละเอียดอ่อนนั้นใกล้จะสูญพันธุ์จากการถูกสกัดกั้นระหว่างการถ่ายโอนจากผู้ส่งไปยังผู้รับ |
ติดตั้งง่าย เข้าใจง่ายขึ้น | เมื่อกุญแจถูกบุกรุก การสื่อสารก็ถูกบุกรุกที่ปลายทั้งสองเช่นกัน |
การเข้ารหัสคีย์แบบอสมมาตร
เมื่อใช้การเข้ารหัสคีย์แบบอสมมาตร ทั้งผู้ส่งและผู้รับจะสร้างคู่คีย์ – คีย์สาธารณะและคีย์ส่วนตัว คีย์ต่างๆ จะจับคู่กันทางคณิตศาสตร์เพื่อทำงานร่วมกันในการดำเนินการเข้ารหัสต่างๆ ทั้งผู้ส่งและผู้รับบันทึกคีย์ส่วนตัวของตนอย่างปลอดภัย แต่สามารถแลกเปลี่ยนคีย์สาธารณะได้โดยไม่มีข้อควรระวังเป็นพิเศษ พวกเขายังสามารถใช้ "หน้าเหลืองของคีย์สาธารณะ" ซึ่งเป็นเซิร์ฟเวอร์คีย์สาธารณะเพื่อส่งคีย์สาธารณะของตนให้ทุกคนสามารถเข้าถึงได้
ข้อดีและข้อเสียของการเข้ารหัสคีย์แบบอสมมาตรคืออะไร
ข้อดี | ข้อเสีย |
คีย์ส่วนตัวที่ละเอียดอ่อนจะไม่ออกจากสภาพแวดล้อมของผู้ส่ง | ประสิทธิภาพการทำงานของ crypto ที่ต่ำกว่า |
เมื่อคีย์ส่วนตัวถูกบุกรุกที่ปลายด้านหนึ่งของการสื่อสาร อีกอันหนึ่งก็ยังปลอดภัย | จบเกมเมื่อคีย์ส่วนตัวหาย |
มีการดำเนินการเข้ารหัสเพิ่มเติม |
เนื่องจากการตั้งค่า crypto แบบอสมมาตรมีความปลอดภัยมากกว่า Alice และ Bob จึงตัดสินใจเข้าร่วม! ตอนนี้พวกเขาสามารถใช้ประโยชน์จากสิ่งนั้นและเริ่มคิดเกี่ยวกับการรับรองความปลอดภัยและความสมบูรณ์ของการสื่อสาร
การเข้ารหัสคีย์สาธารณะ 101: การเข้ารหัส
เมื่ออลิซส่งข้อความถึงบ๊อบ เธอต้องการให้แน่ใจว่าจะไม่มีใครเห็นว่าเนื้อหานั้นคืออะไร เธอตัดสินใจเข้ารหัสข้อความ เพื่อให้บรรลุเป้าหมายนั้น อลิซต้องได้รับกุญแจสาธารณะของ Bob ก่อนไม่ว่าจะจากเซิร์ฟเวอร์หลักหรือจาก Bob โดยตรงผ่านช่องทางการสื่อสาร เมื่ออลิซได้รับกุญแจแล้ว เธอสามารถใช้การดำเนินการเข้ารหัสโดยใช้กุญแจสาธารณะของ Bob กับข้อความที่เธอต้องการส่ง
โดยทั่วไปแล้ว ในกระบวนการนี้ ข้อความจะถูกใช้โดยอัลกอริธึมการเข้ารหัส (aka cipher) ในบล็อก (โดยปกติ) และดำเนินการบิตระหว่างข้อความและคีย์ ทำให้เกิดผลลัพธ์ซึ่งเป็นข้อความที่เข้ารหัส (aka ciphertext) . เมื่อบ็อบได้รับข้อความที่เข้ารหัส เขาเป็นคนเดียวที่สามารถถอดรหัสด้วยคีย์ส่วนตัวของเขา
บันทึก:
- การเข้ารหัสข้อความ – ผู้ส่งเข้ารหัสข้อความด้วยกุญแจสาธารณะของผู้รับ
- การถอดรหัสข้อความ – ผู้รับถอดรหัสข้อความด้วยคีย์ส่วนตัว
การเข้ารหัสคีย์สาธารณะ 101: ลายเซ็น
นอกเหนือจากการป้องกันไม่ให้เนื้อหาข้อความถูกเปิดเผย สิ่งสำคัญเท่าเทียมกันคือต้องสามารถยืนยันตัวตนของผู้ส่งและตรวจสอบว่าข้อความนั้นไม่มีการเปลี่ยนแปลงหรือไม่ ลายเซ็นดิจิทัล (วัตถุแยกต่างหากที่แนบมากับข้อความ) ถูกใช้ด้วยเหตุผลสองประการนี้
อันดับแรก Alice ใช้อัลกอริธึมการแฮชเพื่อพัฒนาแฮชข้อความเพื่อสร้างลายเซ็นของเธอ การแฮชกำลังคำนวณฟังก์ชันทางคณิตศาสตร์ทางเดียวในข้อความซึ่งให้ผลลัพธ์ที่สั้นกว่าและมีค่าคงที่ ซึ่งแตกต่างกันสำหรับอินพุตที่ต่างกัน จากนั้นเธอก็ใช้ คีย์ส่วนตัว เพื่อ เข้ารหัส (เซ็นชื่อ) แฮชที่สร้างขึ้น
ขั้นต่อไป เมื่อ Bob ได้รับข้อความและลายเซ็น ขั้นแรก เขาสามารถ ถอดรหัส ลายเซ็นโดยใช้ กุญแจสาธารณะ ของ Alice เมื่อทำสำเร็จ เขารู้ว่าลายเซ็นนั้นถูกสร้างขึ้นโดยอลิซจริงๆ (ไม่เช่นนั้น การถอดรหัสด้วยกุญแจสาธารณะของเธอจะล้มเหลว)
ประการที่สอง Bob สามารถรับข้อความและแฮชโดยใช้อัลกอริธึมเดียวกับที่ Alice มีมาก่อน และยืนยันว่าแฮชของข้อความนั้นเหมือนกับที่ Alice สร้าง เมื่อแฮชตรงกัน เขารู้ว่าข้อความไม่ได้ถูกแก้ไข
บันทึก:
- การ สร้างลายเซ็น – ผู้ส่งเข้ารหัส (ลงนาม) แฮชข้อความด้วยคีย์ส่วนตัวของเขาและสร้างลายเซ็น
- การตรวจสอบลายเซ็น – ผู้รับจะถอดรหัสแฮชข้อความจากลายเซ็นก่อน และตรวจสอบว่าแฮชที่คำนวณโดยเขาตรงกับแฮชจากลายเซ็นหรือไม่
- สามารถใช้การเข้ารหัสและลายเซ็นแยกกัน ได้ แต่เพื่อความปลอดภัยสูงสุด มักจะรวมกัน ดังนั้น ฟังก์ชันการเข้ารหัสลับส่วนใหญ่ที่คุณสามารถพบได้จึงเรียกว่า encryptSignMessage() , decryptVerifyMessage() เป็นต้น
ฉันหวังว่าคุณจะไม่มีปัญหาในการติดตามเรื่องราวของ Alice & Bob ให้ฉันอธิบายการไหลทั้งหมดอีกครั้งเพื่อให้แน่ใจว่าทุกอย่างชัดเจนและสรุปสิ่งต่างๆ

- อลิซต้องการส่งข้อความถึงบ๊อบ
- อลิซใช้คีย์ส่วนตัวของเธอและสร้างลายเซ็น
- อลิซรับกุญแจสาธารณะของบ๊อบและเข้ารหัสข้อความ
- อลิซส่งข้อความถึงบ๊อบ
- Bob หยิบกุญแจสาธารณะของ Alice และตรวจสอบลายเซ็น
- บ๊อบใช้คีย์ส่วนตัวเพื่อถอดรหัสข้อความ
เอาล่ะ ทฤษฎีก็พอแล้ว ตอนนี้เรามาดูกันว่าสิ่งเหล่านี้ถูกใช้อย่างไรใน HTTPS!

SSL Handshake
ทักทายกันหน่อย
เมื่อไคลเอนต์เริ่มต้นการเชื่อมต่อกับเซิร์ฟเวอร์ สิ่งสำคัญอันดับแรกคือต้องแนะนำอย่างเหมาะสมเพื่อสร้างบริบทการเข้ารหัสสำหรับการสื่อสารที่เหลือ สามารถทำได้ในขั้นตอนการเชื่อมต่อ HTTPS ก่อนแยกวิเคราะห์ส่วนหัวและเนื้อหาคำขอ ทุกอย่างเริ่มต้นด้วยการที่ลูกค้า ส่งข้อความสวัสดีกับลูกค้า
สิ่งสำคัญที่สุดคือข้อความประกอบด้วยอัลกอริธึมการเข้ารหัสที่ลูกค้าเข้าใจและวัสดุเพิ่มเติมบางอย่าง เช่น อัลกอริธึมการบีบอัดที่รองรับ เวอร์ชันโปรโตคอล รหัสเซสชัน ฯลฯ เนื่องจากเซิร์ฟเวอร์ชอบสุภาพ เซิร์ฟเวอร์ยัง ตอบกลับด้วยข้อความสวัสดี ที่สะดุดตาที่สุด มีใบรับรองเซิร์ฟเวอร์ที่มีคีย์สาธารณะของเซิร์ฟเวอร์ (ใช่ กระบวนการนี้ใช้การเข้ารหัสคีย์สาธารณะ ซึ่งเป็นวิธีเดียวกับที่อลิซและบ๊อบเลือก)
ผู้ออกใบรับรอง
ถึงเวลาต้อนรับแขกคนต่อไปบนเวที: ผู้ ออกใบรับรอง (CA) ชื่อฟังดูจริงจัง – แต่เป็นเพียงหน่วยงานบุคคลที่สามที่มีเครดิตตามท้องถนนจำนวนมากซึ่งโดยทั่วไปถือว่าน่าเชื่อถือทั่วโลก เอนทิตีดังกล่าวสามารถตรวจสอบตัวตนของเซิร์ฟเวอร์และวางลายเซ็นดิจิทัลพร้อมกับใบรับรองเซิร์ฟเวอร์ (คล้ายกับ Alice เมื่อส่งข้อความถึง Bob)
การตรวจสอบใบรับรอง
ขั้นสุดท้าย ให้พิจารณา แม่กุญแจสีเขียว ชื่อที่อยู่ถัดจากที่อยู่ URL ของเบราว์เซอร์ของคุณ
เว็บไคลเอ็นต์แต่ละรายมีรายการ คีย์สาธารณะของผู้ออกใบรับรอง ที่เป็นที่รู้จักและเชื่อถือได้ คุณอาจจำได้ว่าในตอนต้นของบทความ ฉันกล่าวว่าลายเซ็นถูกสร้างขึ้นโดยใช้คีย์ส่วนตัวของผู้ส่ง และสามารถตรวจสอบได้โดยใช้คีย์สาธารณะของผู้ส่ง นี่คือสิ่งที่ลูกค้าทำ โดยจะผ่านรายการ CA ที่เชื่อถือได้และตรวจสอบว่าลายเซ็นของใบรับรองเซิร์ฟเวอร์เป็นของ CA ที่เชื่อถือได้หรือไม่ หากเป็นเช่นนั้น ก็จะยอมรับใบรับรอง และนั่นคือช่วงเวลา ที่แม่กุญแจเปลี่ยนเป็นสีเขียว
แต่นั่นเป็นเพียงก้าวแรกซึ่งยังไม่เกี่ยวข้องกับความปลอดภัย ทุกคนสามารถคัดลอกใบรับรองคีย์สาธารณะใด ๆ วางไว้บนเซิร์ฟเวอร์และนำเสนอต่อไคลเอนต์ที่เชื่อมต่อใช่ไหม
หลังจากที่ไคลเอ็นต์ตรวจสอบใบรับรองเซิร์ฟเวอร์แล้ว ไคลเอ็นต์จะสร้าง คีย์สมมาตร เพื่อเข้ารหัสการสื่อสาร แต่อย่างที่บอกไปในตอนต้น ปัญหาเกี่ยวกับคีย์แบบสมมาตรคือคีย์เหล่านี้เสี่ยงที่จะถูกสกัดกั้นระหว่างการขนส่ง ในขั้นตอนนี้ ไคลเอนต์และเซิร์ฟเวอร์ไม่มีบริบทการเข้ารหัสทั่วไป ดังนั้นไคลเอนต์จึงส่งคีย์สมมาตรไปยังเซิร์ฟเวอร์ แต่ก่อนอื่นมันเข้ารหัสด้วยกุญแจสาธารณะของเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะได้รับและต้องการความสามารถในการถอดรหัสเพื่อสร้างการเชื่อมต่อที่ปลอดภัย
ดังนั้น แม้ว่าจะมีคนแสดง ใบรับรองคีย์สาธารณะที่ถูกขโมย ขั้นตอนนี้ก็จะล้มเหลว คีย์ส่วนตัวที่ถูกต้องเชื่อมโยงกับคีย์สาธารณะของใบรับรองเซิร์ฟเวอร์เป็นสิ่งสำคัญในการถอดรหัสคีย์สมมาตร แน่นอนว่านี่ไม่ใช่ปัญหาสำหรับเซิร์ฟเวอร์ที่ถูกต้อง เนื่องจากมีการบันทึกคีย์ส่วนตัวไว้อย่างปลอดภัย สามารถใช้เพื่อถอดรหัสคีย์สมมาตรและเข้ารหัสการสื่อสารเพิ่มเติม
สรุปได้ว่า SSL handshake เป็นกระบวนการที่ใช้การเข้ารหัสทั้งแบบสมมาตรและไม่สมมาตร ในตอนแรก คู่คีย์แบบอสมมาตรจะเริ่มต้นการเชื่อมต่อและช่วยให้คีย์สมมาตรเดินทางได้อย่างปลอดภัย ดังที่เราได้กล่าวไว้ในตอนเริ่มต้น การดำเนินการเข้ารหัสแบบสมมาตรนั้นเร็วกว่า ดังนั้นการใช้สิ่งนี้เพื่อการสื่อสารทั้งหมดหลังจากการตั้งค่าจะเป็นประโยชน์ นอกจากนี้ เมื่อสร้างการเชื่อมต่อที่ปลอดภัยแล้ว จะใช้ซ้ำจนกว่าจะหมดอายุ ดังนั้นการตั้งค่าคีย์แบบอสมมาตรจะไม่เสร็จสิ้นก่อนคำขอของไคลเอ็นต์แต่ละรายการ
นอกจากนี้ยังควรกล่าวด้วยว่าในชีวิตจริง ใบรับรองไม่ได้ลงนามโดยตรงจาก CA ที่มีชื่อเสียงที่สุด (เรียกว่า root ) ถึงกระนั้น CA หลักจะลงนามในใบรับรองระดับกลาง ซึ่งสุดท้ายแล้วจึงลงนามในใบรับรองเซิร์ฟเวอร์ ดังนั้นจึงสร้างสายของใบรับรอง ซึ่งไคลเอ็นต์ที่เชื่อมต่อจะตรวจสอบจนกว่าจะได้ลายเซ็นที่ถูกต้อง แน่นอนว่ามันให้การรักษาความปลอดภัยที่ดีกว่า - เมื่อหนึ่งใน CA ระดับกลางถูกบุกรุก จะส่งผลกระทบต่อผู้คนน้อยลง
การตรวจสอบใบรับรองไคลเอ็นต์
ตอนนี้ มีขั้นตอนทางเลือกหนึ่งที่เราสามารถพูดถึงสั้นๆ ได้ เนื่องจากเรามีความรู้ทั้งหมดที่จำเป็นในการทำความเข้าใจ เซิร์ฟเวอร์สามารถกำหนดค่าให้ขอและตรวจสอบใบรับรองไคลเอ็นต์หลังจากสร้างการเชื่อมต่อที่ปลอดภัยเพื่อให้ได้รับความปลอดภัยเพิ่มเติม
ซึ่งทำงานในลักษณะเดียวกัน แต่คราวนี้ ไคลเอ็นต์ส่งใบรับรอง และเซิร์ฟเวอร์จะตรวจสอบรายชื่อผู้ออกใบรับรองที่เชื่อถือได้และทำการยืนยัน นอกจากนี้ยังเป็นที่น่าสังเกตว่าเซิร์ฟเวอร์อยู่ภายใต้การควบคุมของนักพัฒนา (ตรงข้ามกับไคลเอนต์ เช่น เว็บเบราว์เซอร์หรือระบบปฏิบัติการมือถือ) ดังนั้นนักพัฒนาแบ็กเอนด์จึงสามารถแก้ไขรายการใบรับรองที่เชื่อถือได้ได้อย่างง่ายดาย
เครือข่ายองค์กรมักใช้กลไกนี้ ส่วนใหญ่แล้ว ใบรับรองไคลเอ็นต์ถูกสร้างขึ้นโดยระบบการจัดการอุปกรณ์ที่ติดตั้งบนอุปกรณ์ของพนักงานและลงนามด้วยใบรับรองหลักที่บริษัทสร้างขึ้น ใบรับรองเดียวกันนี้ถูกเพิ่มในสภาพแวดล้อมแบ็กเอนด์ด้วย ด้วยวิธีนี้ แบ็กเอนด์ขององค์กรสามารถตรวจสอบใบรับรองได้อย่างง่ายดายเมื่อไคลเอ็นต์เชื่อมต่อ

มาดูโซลูชันแบ็กเอนด์ของเรากัน
อ่านเพิ่มเติมสรุปตอนนี้ มาดูไดอะแกรมของโฟลว์ทั้งหมดกัน:

สรุป
คุณมาถึงจุดสิ้นสุดของบทความแล้ว! หวังว่าคุณจะเข้าใจกลไกการใช้งานของ การตั้งค่าการเข้ารหัสใน HTTPS และวิธีการสมัครในการ ลงนามและเข้ารหัสกระบวนการแล้ว
เนื่องจากคุณรู้ว่าสิ่งต่างๆ ทำงานอย่างไร คุณจึงควรรู้สึกมั่นใจมากขึ้นเกี่ยวกับการเข้ารหัสข้อมูล ยังคงเป็นสิ่งสำคัญที่ต้องจำไว้ว่า แม่กุญแจสีเขียวในเบราว์เซอร์ของคุณยังไม่รับประกันความปลอดภัย ในบริบทที่ละเอียดอ่อนต่อความปลอดภัย คุณควรตรวจสอบใบรับรองอย่างใกล้ชิด อย่างที่พวกเขาพูดไว้ล่วงหน้าเป็นอาวุธ!