TLS, ใบรับรอง และลายเซ็นดิจิทัล
| English | ไทย |
|---|---|
| TLS/ˌtiː el ˈes/ | TLS |
| digital certificate/ˈdɪdʒɪtl səˈtɪfɪkət/ | ใบรับรองดิจิทัล |
| digital signature/ˈdɪdʒɪtl ˈsɪɡnɪtʃə/ | digital signature |
| authenticity/ɔːθənˈtɪsɪti/ | ความถูกต้องตามความเป็นจริง |
| integrity/ɪnˈteɡrɪti/ | ความถูกต้องสมบูรณ์ |
| Certificate Authority/səˈtɪfɪkət əˈθɒrɪti/ | Authority of Certificate |
การเข้ารหัสเพียงอย่างเดียวจะไม่ช่วย
- สมมติว่าช่องทางการสื่อสารของคุณกับธนาคาร被你เข้ารหัสอย่างสมบูรณ์ และสมมติว่ามีผู้โจมตีนั่งอยู่ระหว่างคุณกับธนาคาร โดยมีการเชื่อมต่อที่เข้ารหัสกับทั้งสองฝ่าย
- ทุกไบต์ถูกรหัส Every byte ถูกอ่านและเปลี่ยนแปลงโดยผู้โจมตี การเข้ารหัสทำงานตามสัญญาไว้และไม่ได้ปกป้องสิ่งใดที่สำคัญเลย
- สิ่งที่ขาดหายไปไม่ใช่ความลับแต่คือ ตัวตน: หลักฐานว่า public key ที่คุณใช้เข้ารหัสเป็นของธนาคารและไม่ใช่ของใครก็ตามที่ตอบรับ
- บทเรียนนี้คือสามสิ่งที่ปิดช่องว่างนี้: TLS สำหรับการเชื่อมต่อ, digital certificate สำหรับตัวตน, และ digital signature สำหรับความถูกต้องและความสมบูรณ์
TLS ให้บริการอะไร
- TLS, Transport Layer Security, ผู้สืบทอด SSL, เป็นโปรโตคอลที่ปลอดภัยข้อมูลขณะส่งข้อมูล มันให้บริการสามอย่างพร้อมกัน และการสอบต้องการให้ระบุทั้งสามอย่าง
- การเข้ารหัส, เพื่อให้ผู้ฟัง clandestine อ่านได้เฉพาะ ciphertext. Authentication, เพื่อให้ client รู้ว่าเป็นเซิร์ฟเวอร์ไหน. Integrity, เพื่อตรวจจับการแก้ไขใดๆ ขณะส่งข้อมูล
- นี่คือสิ่งที่หมายถึงไอคอนลูกกุญแจในเบราว์เซอร์ และใช้โดย HTTPS, อีเมลปลอดภัย, VPNs และการธนาคารออนไลน์
TLS ให้การป้องกันแบบผสมผสานใดแก่ข้อมูลที่ส่งผ่านเครือข่าย?
TLS ทำการเข้ารหัสการสื่อสาร ยืนยันตัวตนเซิร์ฟเวอร์ (ผ่านใบรับรอง) และตรวจจับการแก้ไขข้อมูล (ความสมบูรณ์)
TLS ให้การป้องกันใดแก่ข้อมูลที่ส่งผ่านเครือข่าย? เลือก ทั้งหมด ที่เหมาะสม
การส่งมอบเป็นหน้าที่ของ TCP TLS เพิ่มความลับ การยืนยันตัวตน และการตรวจจับการแก้ไขดัดแปลงเข้าไปอีกชั้นหนึ่ง
การ.handshake
- Client เสนอ cipher suites ที่รองรับ Server ตอบกลับด้วยการเลือกของตัวเองและ digital certificate ของมัน ซึ่งมี public key ของมัน
- Client ตรวจสอบ certificate ถ้าพอใจ ทั้งสองฝ่ายใช้การเข้ารหัสแบบ asymmetric เพื่อตกลง session key ใหม่
- การจราจรทั้งหมด後續ถูกรหัสด้วย symmetric ด้วย session key นั้น: เร็ว และใช้กุญแจใหม่สำหรับการสนทนาครั้งนี้เท่านั้น
- ขั้นตอนการตรวจสอบ certificate คือขั้นตอนที่ขัดขวางการโจมตีใน hook หากไม่มีขั้นนี้ Client จะตกลง session key กับผู้โจมตีได้อย่างสบายใจ

Asymmetric เพื่อตกลงกุญแจ, Symmetric สำหรับทุกอย่างหลังจากนั้น
การจับมือ TLS
พิจารณาสิ่งที่เกิดขึ้นก่อนที่ไอคอนลูกกุญแจจะปรากฏ การเข้ารหัสแบบคีย์สาธารณะซึ่งใช้เวลานาน จะถูกใช้เพื่อตกลงกันถึงคีย์ร่วมกันเท่านั้น ส่วนเนื้อหาหน้าเว็บจริงจะถูกส่งผ่านด้วยการเข้ารหัสแบบสมมาตรที่รวดเร็ว
เรียงลำดับขั้นตอนของ TLS handshake ให้ถูกต้อง
การตรวจสอบใบรับรองเกิดขึ้นก่อนการตกลงใช้คีย์ ซึ่งเป็นสิ่งที่ป้องกันไม่ให้ผู้โจมตีตรงกลางสามารถตกลงใช้คีย์ร่วมกับไคลเอนต์ได้
Digital certificates
- Digital certificate เชื่อมโยง ตัวตน,域名หรือองค์กรเข้ากับ public key และเซ็นโดย Certificate Authority (CA) ที่เชื่อถือได้
- มันมี subject ที่มีตัวตนที่รับรอง, public key ของ subject, issuer, ระยะเวลาที่ใช้งานได้ และ ลายเซ็นดิจิทัลของ CA ครอบคลุมทุกส่วน
- ลายเซ็นคือสิ่งที่ทำให้มันเชื่อถือได้: ใครๆ ก็สร้างเอกสารอ้าง自己是ธนาคารได้ แต่มีเพียง CA เท่านั้นที่จะสร้างลายเซ็นที่ตรวจสอบได้ด้วย public key ของ CA

ฝ่ายที่สามที่เชื่อถือได้ ยืนยันว่ากุญแจนี้ตรงกับชื่อนี้
จับคู่กลไกความปลอดภัยแต่ละชนิดกับหน้าที่ของมัน
ใบรับรองรับรองคีย์สาธารณะ ส่วนลายเซ็นใช้คีย์ส่วนตัวเพื่อยืนยันตัวตนผู้ส่งและยืนยันว่าข้อมูลไม่ถูกเปลี่ยนแปลง
ตัวอย่างวิธีทำ: วิธีที่ client ตรวจสอบ certificate
- อธิบายการตรวจสอบที่เว็บเบราว์เซอร์ทำต่อ digital certificate ของเว็บไซต์ [4]
- ตรวจสอบว่า certificate อยู่ ในช่วงอายุการใช้งาน ไม่หมดอายุและไม่ยังไม่生效
- ตรวจสอบว่า ชื่อ subject ตรงกับโดเมน ที่ผู้ใช้ร้องขอ ซึ่งเป็นขั้นตอนที่จับผู้โจมตีที่แสดง certificate จริงของไซต์อื่นได้
- ตรวจสอบ ลายเซ็นของ CA บน certificate โดยใช้ public key ของ CA เพื่อพิสูจน์ว่า certificate ไม่ได้ถูกแก้ไข
- ตาม chain ไปยัง root CA ที่เบราว์เซอร์เชื่อถืออยู่แล้ว หากการตรวจสอบใดล้มเหลว เบราว์เซอร์จะแสดงคำเตือน "connection is not private"
เมื่อตรวจสอบใบรับรองClientsจะตรวจสอบว่า:
เบราว์เซอร์จะตรวจสอบวันที่มีผล ชื่อผู้รับตรงกับเว็บไซต์ และการเซ็นของCAจนกว่าจะถึงรากที่เชื่อถือได้
อะไรทำให้ใบรับรองดิจิทัลมีความน่าเชื่อถือ?
ใครก็สามารถเขียนเอกสารอ้างว่าเป็นธนาคารและใส่公钥 ลงไปได้ แต่เพียงแต่CA เท่านั้นที่จะสร้างลายเซ็นที่สามารถ verify ได้ด้วย公钥 ของCA
Digital signatures
- Digital signature พิสูจน์ authenticity, ผู้ส่งข้อความ, และ integrity, ว่าไม่ถูกเปลี่ยน มัน ไม่ เข้ารหัสข้อความหรือทำให้เป็นความลับ
- ในการเซ็น: ผู้ส่งนำข้อความเข้า hash function เพื่อสร้าง digest แล้วเข้ารหัส digest นั้น ด้วย private key ของตนเอง Digest ที่เข้ารหัสคือลายเซ็น และเดินทางพร้อมกับข้อความ
- ในการตรวจสอบ: ผู้รับถอดรหัสลายเซ็น ด้วย public key ของผู้ส่ง เพื่อกู้คืน digest, ทำ hash ข้อความที่ได้รับเอง, และเปรียบเทียบทั้งสอง
- ถ้าตรงกัน มีเพียงผู้ถือ private key เท่านั้นที่จะสร้างลายเซ็นได้ (authenticity) และข้อความไม่สามารถเปลี่ยนไปได้ (integrity) เพราะการเปลี่ยนแปลงใดๆ จะสร้าง hash ที่ต่างออกไป

เซ็นชื่อผล Hash ด้วยกุญแจส่วนตัว ตรวจสอบด้วยกุญแจสาธารณะ
ในการสร้าง digital signature ผู้ส่งต้อง:
Signing = hash ข้อความ แล้ว encrypt digest ด้วย private key; ผู้รับจะ verify ด้วย公คีย์
Digital signature ยืนยัน authenticity และ integrity (ใครเซ็น และไม่มีอะไรเปลี่ยนแปลง) แต่ไม่ได้ซ่อนข้อความ — คุณต้อง encrypt เพิ่มเพื่อความปลอดภัย
Signing และ Encrypting เป็นเป้าหมายแยกกัน: Signature ยืนยัน origin/integrity; Encryption รักษาความลับของเนื้อหา
เพื่อเซ็นข้อความ ผู้ส่งจะเข้ารหัส文摘ด้วยคีย์ส่วนตัวของพวกเขาส่ง
ผู้รับจากนั้นจะถอดรหัสด้วยคีย์สาธารณะของผู้ส่ง มีเพียงเจ้าของคีย์ส่วนตัวเท่านั้นที่สามารถสร้างลายเซ็นที่เปิดได้แบบนั้น
ตัวอย่างวิธีทำ: ทำไมกุญแจถึงสลับกัน
- ในการสื่อสารแบบ confidential ผู้ส่งใช้ public key ของผู้รับ ในกรณีการเซ็น ผู้ส่งใช้ private key ของตนเอง อธิบายเหตุผล.
- เพื่อ ความลับ คุณต้องการให้คนคนเดียวสามารถ อ่าน ได้ ดังนั้นคุณล็อกด้วยกุญแจที่มีทุกคนและเปิดได้เฉพาะด้วยกุญแจที่ไม่มีใครอื่นมี
- สำหรับ ลายเซ็นดิจิทัล คุณต้องการให้ทุกคนสามารถ ตรวจสอบ ได้ และเพียงคุณคนเดียวที่ สร้าง ได้ ดังนั้นคุณจึงล็อกด้วยกุญแจที่仅有คุณเท่านั้น และมีกุญแจที่ทุกคนมีเพื่อเปิด
- ทิศทางของคู่กุญแจเกิดจากสิ่งที่คุณพยายามพิสูจน์ นี่คือแนวคิดที่ถูกทดสอบมากที่สุดในการเรียนรู้นี้
การเข้ารหัสการเชื่อมต่อเพียงอย่างเดียวไม่เพียงพอที่จะหยุดยั้งการโจมตีแบบคนกลาง (man-in-the-middle)
การเข้ารหัสปกป้องช่องทางสื่อสารไปยังผู้รับปลายทาง ใบรับรองยืนยันตัวตนของผู้รับนั้น นี่คือเหตุผลว่าทำไมการตรวจสอบจึงเป็นขั้นตอนที่สำคัญที่สุด
การขอรับใบรับรอง
- เจ้าของเซิร์ฟเวอร์สร้างคู่กุญแจและส่ง กุญแจสาธารณะ และรายละเอียดตัวตนไปยัง Certificate Authority (CA) กุญแจส่วนตัวจะถูกเก็บไว้กับเจ้าของเท่านั้น CA จะตรวจสอบการควบคุมโดเมนหรือตัวตนที่ต้องการตามประเภทของใบรับรอง
- CA จะเซ็นชื่อใบรับรองที่ผูกตัวตนนั้นเข้ากับกุญแจสาธารณะ โดยใช้ กุญแจส่วนตัวของ CA แล้วส่งกลับเพื่อติดตั้ง ใบรับรองเป็นหลักฐานสาธารณะเกี่ยวกับกุญแจ ไม่ใช่กล่องเก็บกุญแจลับของเจ้าของ
รายการใดควรอยู่ในคำขอใบรับรองจาก CA? เลือกทุกข้อที่ถูกต้อง
CA ตรวจสอบตัวตนที่อ้างและผูกเข้ากับคีย์สาธารณะ คีย์ส่วนตัวของผู้สมัครจะถูกเก็บรักษาเป็นความลับ
เรียงลำดับขั้นตอนในการขอใบรับรองดิจิทัล ⟦⟧
ตัวตนได้รับการตรวจสอบก่อนที่ CA จะลงนามในการจับคู่ เซิร์ฟเวอร์แสดงใบรับรองให้ลูกค้า
ตัวอย่างแบบฝึกหัด: กุญแจใครเซ็นอะไร?
- ผู้พัฒนาซอฟต์แวร์จะเซ็นไฟล์ดาวน์โหลดด้วย กุญแจส่วนตัวของผู้พัฒนา ผู้รับจะรับกุญแจสาธารณะของผู้พัฒนาจากใบรับรองที่ถูกต้องและใช้มันเพื่อยืนยันลายเซ็นการดาวน์โหลด
- กุญแจส่วนตัวของ CA เซ็นชื่อใบรับรอง; กุญแจส่วนตัวของผู้พัฒนา เซ็นชื่อไฟล์ดาวน์โหลด ใบรับรองที่ถูกต้องยืนยันว่าควรเชื่อถือกุญแจสาธารณะของใคร แต่มันไม่ได้เซ็นชื่อโปรแกรมโดยตรงหรือพิสูจน์ว่าโปรแกรมปลอดภัย
จับคู่แต่ละขั้นตอนกับคีย์ที่ถูกต้อง
CA ตรวจสอบการจับคู่ระหว่างตัวตนกับคีย์ ผู้เผยแพร่ลงนามในเนื้อหาของตนเอง ผู้รับตรวจสอบด้วยกุญแจสาธารณะที่ตรงกัน
คะแนนที่หลุดหายไป
- TLS ให้บริการ การเข้ารหัส การยืนยันตัวตน และความสมบูรณ์ การระบุแค่การเข้ารหัสจะทำให้ขาดคำตอบไปสองในสามส่วน
- ลายเซ็นดิจิทัลจะเข้ารหัส แฮช ของข้อความด้วย กุญแจส่วนตัว ของผู้ส่ง ไม่ใช่ข้อความเอง และไม่ทำให้ข้อความเป็นความลับ
- การตรวจสอบใบรับรองหมายถึง การตรวจสอบวันที่ ชื่อตรงกับโดเมน ลายเซ็นของ CA และลำดับ连接到 trusted root การตรวจสอบชื่อคือสิ่งที่ผู้สอบมักลืม
- ใบรับรองคือสิ่งที่ป้องกันคนกลาง (man-in-the-middle) การเข้ารหัสเพียงอย่างเดียวไม่ได้: มันปกป้องช่องทางการสื่อสารกับ ใครก็ตาม ที่อยู่另一端
คุณเข้าใจแล้ว
- TLS ให้ การเข้ารหัส การยืนยันตัวตน และความสมบูรณ์; Handshake ของมันแสดงใบรับรอง จากนั้นตกลง session key เพื่อการเข้ารหัสแบบสมมาตรที่รวดเร็ว
- ใบรับรองดิจิทัล เชื่อมโยง เอกลักษณ์ กับ กุญแจสาธารณะ และลงนามโดย Certificate Authority; มันมีข้อมูล subject, กุญแจสาธารณะ, issuer, ระยะเวลาความถูกต้อง และลายเซ็นของ CA
- ตรวจสอบใบรับรองโดยใช้ วันที่, ชื่อตรงกับโดเมน, ลายเซ็นของ CA และ chain连接到 trusted root
- ลายเซ็นดิจิทัล คือ แฮช ของข้อความที่ เข้ารหัสด้วยกุญแจส่วนตัว ของผู้ส่ง ตรวจสอบ bằng กุญแจสาธารณะ ของผู้ส่ง: มันพิสูจน์ ** authenticity** และ integrity ไม่ใช่ confidentiality