Transport Layer Security (TLS) เป็นหนึ่งในโปรโตคอลความปลอดภัยที่สำคัญและใช้กันอย่างแพร่หลาย ช่วยปกป้องสัดส่วนที่สำคัญของข้อมูลที่ส่งผ่านทางออนไลน์ มันเด่นที่สุด ใช้เพื่อรักษาความปลอดภัยข้อมูลที่เดินทางระหว่างเว็บเบราว์เซอร์และเว็บไซต์ผ่าน HTTPS, แต่มันยังสามารถใช้เพื่อรักษาความปลอดภัยอีเมลและโฮสต์ของโปรโตคอลอื่น ๆ.
TLS มีค่าเพราะช่วยให้มั่นใจว่าอีกฝ่ายในการเชื่อมต่อคือคนที่พวกเขาพูดว่าแสดงข้อมูลว่ายังคงความสมบูรณ์ในเบื้องต้นและให้การรักษาความลับผ่านการเข้ารหัส.
TLS ใช้อัลกอริธึมและชุดรูปแบบที่แตกต่างกันเพื่อบรรลุวัตถุประสงค์เหล่านี้ มันอาจดูซับซ้อน แต่บทความนี้จะครอบคลุมทีละด้านเพื่อให้คุณมองในเชิงลึกว่า TLS ทำงานอย่างไรเพื่อรักษาความปลอดภัยการเชื่อมต่อ.
TLS ทำอะไร?
เมื่อส่งข้อมูลออนไลน์เราพบปัญหาความปลอดภัยที่สำคัญสามประการ:
- เราจะรู้ได้อย่างไรว่าคนที่เรากำลังสื่อสารด้วยนั้นเป็นใครจริง ๆ ที่พวกเขาพูดว่าพวกเขาเป็น?
- เราจะรู้ได้อย่างไรว่าข้อมูลนั้นไม่ได้รับการแก้ไขตั้งแต่พวกเขาส่งมัน?
- เราจะป้องกันไม่ให้คนอื่นเห็นและเข้าถึงข้อมูลได้อย่างไร?
ปัญหาเหล่านี้มีความสำคัญโดยเฉพาะเมื่อเราส่งข้อมูลที่ละเอียดอ่อนหรือมีค่า TLS ใช้เทคนิคการเข้ารหัสที่หลากหลายเพื่อจัดการกับปัญหาทั้งสามนี้ ร่วมกันพวกเขาอนุญาตให้โปรโตคอล รับรองความถูกต้องของอีกฝ่ายในการเชื่อมต่อตรวจสอบความถูกต้องของข้อมูลและให้การป้องกันที่เข้ารหัส.
มาลดความซับซ้อนของสิ่งต่าง ๆ และทำท่าว่าคุณกำลังพยายามถ่ายโอนข้อมูลกลับไปกลับมากับเพื่อนที่อาศัยอยู่ทั่วประเทศ หากข้อมูลมีความละเอียดอ่อนคุณจะกังวลมากเกี่ยวกับปัญหาสำคัญสามข้อที่กล่าวถึงข้างต้น.
คุณไม่สามารถส่งจดหมายและหวังว่าจะเป็นสิ่งที่ดีที่สุดโดยเฉพาะหากคุณสงสัยว่าการสื่อสารของคุณจะถูกโจมตีโดยผู้โจมตี แต่คุณต้องมีระบบที่ช่วยให้คุณตรวจสอบว่าผู้รับของคุณถูกกฎหมายวิธีที่คุณสามารถตรวจสอบว่ามีการเปลี่ยนแปลงข้อความหรือไม่และวิธีการป้องกันพวกเขาจากการสอดส่อง.
TLS ปฏิบัติตามข้อกำหนดเหล่านี้โดยใช้กระบวนการที่แตกต่างกันจำนวนหนึ่ง มันเริ่มต้นด้วยสิ่งที่เรียกว่า จับมือ TLS, ซึ่งเป็นที่ที่การพิสูจน์ตัวตนเกิดขึ้นและมีการสร้างกุญแจ.
หากต้องการกลับไปที่การเปรียบเทียบตัวอักษรของเราส่วนการตรวจสอบความถูกต้องของ TLS จะเหมือนกับการส่งจดหมายผ่านผู้ให้บริการจัดส่งที่ต้องมีการระบุตัวตน เมื่อผู้ให้บริการจัดส่งส่งจดหมายพวกเขาจะเปรียบเทียบ ID ของบุคคลนั้นกับใบหน้าของพวกเขาและตรวจสอบว่าผู้รับเป็นบุคคลที่ถูกต้องหรือไม่.
ขั้นตอนการจัดตั้งที่สำคัญจะเป็นเพียงเล็กน้อยเช่นถ้าจดหมายของคุณมีครึ่งหนึ่งของหมายเลขพินที่คุณตั้งใจจะใช้ในการสื่อสารในอนาคต คุณจะขอให้ผู้รับของคุณมาพร้อมกับครึ่งหลังของจำนวนและส่งให้คุณในจดหมายกลับมาของพวกเขา.
เมื่อผู้ให้บริการจัดส่งตรวจสอบตัวตนและหมายเลขพินถูกสร้างขึ้นแล้วคุณจะมีทุกสิ่งที่คุณต้องการในการส่งข้อมูลอย่างปลอดภัย ในความเป็นจริงขั้นตอนเหล่านี้มีความซับซ้อนมากขึ้น แต่เราจะดำเนินการในภายหลัง.
TLS แลกเปลี่ยนข้อมูลอย่างปลอดภัยด้วยโปรโตคอลแอปพลิเคชัน. เพื่อดำเนินการเปรียบเทียบของเราการส่งข้อมูลอย่างปลอดภัยผ่าน TLS จะเหมือนกับการเขียนข้อความและวางไว้ในซองจดหมาย คุณจะเขียนลายเซ็นของคุณลงบนตราประทับเพื่อที่ว่าถ้าจดหมายนั้นถูกดัดแปลงผู้รับของคุณจะสามารถบอกได้โดยลายเซ็นที่ฉีกขาด (อันนี้ทำด้วยคณิตศาสตร์จริง ๆ แต่อีกครั้งเราจะครอบคลุมในภายหลัง).
จากนั้นคุณจะใส่ตัวอักษรลงในกล่องโลหะขนาดเล็กที่มีรหัสล็อคแบบผสมโดยตั้งค่ารหัสผสมเป็นหมายเลขพินที่คุณได้ร่วมกับผู้รับ คุณจะส่งกล่องผ่านผู้จัดส่งที่ตรวจสอบตัวตนเมื่อมีการจัดส่งพัสดุภัณฑ์ ผู้รับของคุณจะตอบกลับด้วยวิธีเดียวกันและการสื่อสารใด ๆ ในอนาคตจะทำตามขั้นตอนเดียวกัน.
TLS แก้ปัญหาทั้งสามของเราด้วยวิธีที่ค่อนข้างคล้ายกัน. ผู้ให้บริการจัดส่งจะตรวจสอบความถูกต้องของผู้รับและตรวจสอบให้แน่ใจว่ากล่องนั้นถูกส่งไปยังบุคคลที่ต้องการ กล่องที่ถูกล็อคทำหน้าที่เป็นรูปแบบของการเข้ารหัสป้องกันไม่ให้ใครนอกจากพันธมิตรของคุณเข้าถึงตัวอักษร ซองจดหมายที่เซ็นชื่อจะช่วยให้คุณทราบว่าข้อความนั้นไม่ได้ถูกแก้ไขหรือไม่.
นี่เป็นการประมาณคร่าวๆว่า TLS ทำอะไร ในความเป็นจริง, TLS เกิดขึ้นระหว่างไคลเอนต์และเซิร์ฟเวอร์, มากกว่าสองคนที่ส่งจดหมายถึงกัน การเปรียบเทียบเป็นเพียงการให้คุณเห็นภาพของสิ่งที่เกิดขึ้นและเหตุผลที่อยู่เบื้องหลัง ในส่วนต่อไปนี้เราจะกล่าวถึงรายละเอียดที่เกิดขึ้นจริง.
TLS กับ SSL
เมื่ออ่านเกี่ยวกับ TLS คุณมักจะเห็นการกล่าวถึง SSL หรือแม้กระทั่งเป็น TLS / SSL Secure Sockets Layer (SSL) เป็น TLS เวอร์ชันเก่า แต่ในอุตสาหกรรมยังคงอ้างถึง TLS ภายใต้ชื่อเล่นเก่า บทความนี้จะใช้คำว่า TLS ตลอด แต่เป็นสิ่งสำคัญที่จะต้องทราบว่าชื่อเหล่านั้นมักจะใช้แทนกันได้ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ SSL ได้ในคำแนะนำของเรา.
ประวัติของ TLS
ทุกอย่างเริ่มต้นด้วยความจำเป็นในการรักษาความปลอดภัยเลเยอร์การขนส่ง ดังที่เราได้กล่าวไว้ข้างต้นสารตั้งต้นของ TLS คือ SSL SSL รุ่นแรกได้รับการพัฒนาในยุคเก้าสิบโดย Netscape บริษัท ที่สร้างเว็บเบราว์เซอร์รุ่นแรก.
SSL 1.0 ไม่เคยถูกเผยแพร่เนื่องจากมีช่องโหว่ที่ร้ายแรง. เวอร์ชัน 2.0 ออกมาพร้อมกับ Netscape Navigator 1.1 ในปี 1995, อย่างไรก็ตามมันยังคงมีข้อบกพร่องร้ายแรงจำนวนหนึ่ง SSL 3.0 เป็นรุ่นที่ได้รับการออกแบบใหม่อย่างมากและออกมาในปี 1996 โดยมีการแก้ไขปัญหาความปลอดภัยจำนวนมาก.
ในปี 1996, IETF เผยแพร่ร่าง SSL 3.0 ใน RFC 6101. IETF จัดตั้งคณะทำงานเพื่อสร้างมาตรฐาน SSL เผยแพร่ผลลัพธ์ในปี 1999 เป็น TLS 1.0 มันเป็นเอกสารใน RFC 2246 และมาตรฐานรวมถึงการเปลี่ยนแปลงบางอย่างกับโปรโตคอลเดิมเช่นเดียวกับการเปลี่ยนชื่อ การปรับเปลี่ยนเหล่านี้เกิดขึ้นจากการเจรจาระหว่าง Netscape, Microsoft และคณะทำงาน IETF.
ในปี 2549 IETF เปิดตัว RFC 4346 ซึ่งเป็นเอกสาร TLS 1.1 รุ่นนี้มีบทบัญญัติความปลอดภัยใหม่และการปรับปรุงอื่น ๆ เวอร์ชั่น 1.2 เปิดตัวเพียงสองปีต่อมาในปี 2008 มันรวมถึงการสนับสนุนการเข้ารหัสลับที่รับรองความถูกต้องจำนวนของการเปลี่ยนแปลงวิธีการใช้ฟังก์ชั่นแฮชและการปรับปรุงอื่น ๆ อีกมากมาย.
รุ่นต่อไปไม่มาถึงจนถึงปี [year] เมื่อมีการกำหนด TLS 1.3. มันมีโฮสต์ของการเปลี่ยนแปลงรวมถึงการบังคับใช้ความลับไปข้างหน้าการลบการสนับสนุนอัลกอริทึมที่อ่อนแอและอีกมากมาย.
TLS 1.0 และ 1.1 ถูกตั้งค่าให้เลิกใช้ในปี [year] แต่เวอร์ชัน 1.2 มีการใช้อย่างแพร่หลาย เวอร์ชัน 1.3 เริ่มเห็นการยอมรับที่มากขึ้น.
TLS: รายละเอียดทางเทคนิค
TLS ประกอบด้วยองค์ประกอบต่าง ๆ มากมาย ส่วนพื้นฐานคือโปรโตคอลบันทึกซึ่งเป็นโปรโตคอลพื้นฐานที่รับผิดชอบโครงสร้างที่ครอบคลุมของทุกสิ่ง.
ไดอะแกรมแสดง TLS stack TLS โปรโตคอลสแต็กโดย Jeffreytedjosukmono ได้รับใบอนุญาตภายใต้ CC0.
โพรโทคอลการบันทึกประกอบด้วย subprotocols ห้าแยกแต่ละอันถูกฟอร์แมตเป็น บันทึก:
- การจับมือกัน – โปรโตคอลนี้ใช้เพื่อตั้งค่าพารามิเตอร์สำหรับการเชื่อมต่อที่ปลอดภัย.
- ใบสมัคร – โปรโตคอลแอปพลิเคชันเริ่มต้นหลังจากกระบวนการจับมือกันและเป็นที่ที่ข้อมูลถูกส่งอย่างปลอดภัยระหว่างทั้งสองฝ่าย.
- เตือนภัย – ฝ่ายใดฝ่ายหนึ่งใช้โปรโตคอลการแจ้งเตือนในการเชื่อมต่อเพื่อแจ้งให้ฝ่ายอื่นทราบหากมีข้อผิดพลาดปัญหาความมั่นคงหรือการประนีประนอมที่อาจเกิดขึ้น.
- เปลี่ยน Cipher Spec – โปรโตคอลนี้ใช้โดยไคลเอนต์หรือเซิร์ฟเวอร์เพื่อปรับเปลี่ยนพารามิเตอร์การเข้ารหัส มันค่อนข้างตรงไปตรงมาดังนั้นเราจะไม่ครอบคลุมในเชิงลึกในบทความนี้.
- การเต้นของหัวใจ – นี่เป็นส่วนขยาย TLS ที่ช่วยให้การเชื่อมต่อด้านใดด้านหนึ่งรู้ว่าเพียร์นั้นยังมีชีวิตอยู่หรือไม่และป้องกันไม่ให้ไฟร์วอลล์ปิดการเชื่อมต่อที่ไม่ได้ใช้งาน ไม่ใช่ส่วนหลักของ TLS ดังนั้นเราจะข้ามมันไปในคู่มือนี้.
แต่ละ subprotocols เหล่านี้จะใช้ในขั้นตอนต่าง ๆ เพื่อสื่อสารข้อมูลที่แตกต่างกัน สิ่งที่สำคัญที่สุดที่ต้องทำความเข้าใจคือ handshake และโปรโตคอลของแอปพลิเคชั่นเนื่องจากสิ่งเหล่านี้มีหน้าที่ในการสร้างการเชื่อมต่อและส่งข้อมูลอย่างปลอดภัย.
โปรโตคอลจับมือ TLS
นี่คือที่ที่การเชื่อมต่อถูกสร้างขึ้นในลักษณะที่ปลอดภัย มันอาจดูซับซ้อนหากคุณยังไม่คุ้นเคยกับแนวคิดบางอย่าง แต่สิ่งเหล่านี้จะกล่าวถึงในภายหลังในบทความหากคุณต้องการอ้างอิง.
การจับมือ TLS มีสามประเภทพื้นฐาน: จับมือ TLS พื้นฐาน, จับมือ TLS รับรองความถูกต้องของลูกค้า และ การจับมือกันอย่างย่อ.
จับมือ TLS พื้นฐาน
ไดอะแกรมแสดงกระบวนการจับมือ TLS TLS 1.2 Handshake แบบเต็มโดย FleshGrinder ได้รับใบอนุญาตภายใต้ CC0.
ในการจับมือประเภทนี้เฉพาะเซิร์ฟเวอร์เท่านั้นที่ได้รับการรับรองความถูกต้องและไม่ใช่ไคลเอ็นต์ มันเริ่มต้นด้วยขั้นตอนการเจรจาที่ลูกค้าส่ง สวัสดีลูกค้า ข่าวสาร สิ่งนี้มี TLS เวอร์ชันสูงสุดที่ไคลเอ็นต์รองรับ, ชุดรหัสที่เป็นไปได้, การบ่งชี้ว่าสนับสนุนการบีบอัด, หมายเลขสุ่มและข้อมูลอื่น ๆ
ข้อความไคลเอ็นต์ Hello ถูกพบกับ เซิร์ฟเวอร์สวัสดี ข่าวสาร การตอบสนองนี้มี ID เซสชัน, รุ่นโปรโตคอล, ชุดรหัสและการบีบอัด (หากมีการใช้งาน) ที่เซิร์ฟเวอร์ที่เลือกจากรายชื่อลูกค้า นอกจากนี้ยังมีหมายเลขสุ่มที่แตกต่างกัน.
ขึ้นอยู่กับชุดรหัสที่เลือก แต่โดยทั่วไปแล้วเซิร์ฟเวอร์จะทำตามสิ่งนี้โดยการส่ง ใบรับรอง ข้อความสำหรับการตรวจสอบ สิ่งนี้ตรวจสอบตัวตนและมีรหัสสาธารณะ.
หากการแลกเปลี่ยนชั่วคราว Diffie-Hellman หรือการแลกเปลี่ยนคีย์ Diffie-Hellman ไม่ระบุชื่อถูกนำมาใช้สิ่งนี้จะตามด้วย การแลกเปลี่ยนคีย์เซิร์ฟเวอร์ ข่าวสาร วิธีการแลกเปลี่ยนคีย์อื่น ๆ ข้ามส่วนนี้ เมื่อเซิร์ฟเวอร์เสร็จสิ้นด้วยด้านข้างของการเจรจาก็จะส่ง เซิร์ฟเวอร์ Hello Done ข่าวสาร.
ตอนนี้กลายเป็นลูกค้าอีกครั้ง มันจะส่ง a ขึ้นอยู่กับชุดรหัสที่เลือก การแลกเปลี่ยนคีย์ลูกค้า ข่าวสาร สิ่งนี้สามารถมีรหัสสาธารณะหรือความลับของผู้ดูแลระบบซึ่งถูกเข้ารหัสด้วยรหัสสาธารณะของเซิร์ฟเวอร์.
จากนั้นทั้งสองฝ่ายจะใช้ตัวเลขสุ่มและข้อมูลลับของผู้ประกาศเพื่อให้ได้ข้อมูลลับหลัก คีย์ได้มาจากความลับหลักซึ่งจะใช้ในการตรวจสอบและเข้ารหัสการสื่อสาร.
จากนั้นลูกค้าจะส่ง เปลี่ยน Cipher Spec ข่าวสาร สิ่งนี้บอกเซิร์ฟเวอร์ว่าขณะนี้ข้อความต่อไปนี้จะได้รับการตรวจสอบและเข้ารหัส (แม้ว่าบางครั้งอาจไม่สามารถใช้การเข้ารหัสได้).
จากนั้นลูกค้าจะติดตามสิ่งนี้ด้วย a เสร็จ ข้อความซึ่งถูกเข้ารหัสและยังประกอบด้วย Message Authentication Code (MAC) สำหรับการตรวจสอบความถูกต้อง เซิร์ฟเวอร์ถอดรหัสข้อความนี้และตรวจสอบ MAC หากกระบวนการใด ๆ เหล่านี้ล้มเหลวการเชื่อมต่อควรถูกปฏิเสธ.
ตอนนี้ถึงเวลาที่เซิร์ฟเวอร์จะส่ง เปลี่ยน Cipher Spec ข้อความเช่นเดียวกับ เสร็จ ข้อความที่มีเนื้อหาเดียวกันกับด้านบน จากนั้นไคลเอ็นต์ยังพยายามถอดรหัสและตรวจสอบเนื้อหา หากเสร็จสมบูรณ์ทั้งหมดแล้วการจับมือจะเสร็จสิ้น ณ จุดนี้มีการสร้างโปรโตคอลแอปพลิเคชัน ข้อมูลสามารถแลกเปลี่ยนได้อย่างปลอดภัยในลักษณะเดียวกับ เสร็จ ข้อความจากด้านบนพร้อมการตรวจสอบและการเข้ารหัสเสริม.
จับมือ TLS รับรองความถูกต้องของลูกค้า
การจับมือกันนั้นเหมือนกับการจับมือ TLS ขั้นพื้นฐาน แต่ลูกค้าจะได้รับการตรวจสอบความถูกต้องด้วยเช่นกัน ความแตกต่างที่สำคัญคือหลังจากที่เซิร์ฟเวอร์ส่ง ใบรับรอง ข้อความมันยังส่ง ขอใบรับรอง ข้อความขอใบรับรองของลูกค้า เมื่อเซิร์ฟเวอร์เสร็จสิ้นลูกค้าจะส่งใบรับรองใน ใบรับรอง ข่าวสาร.
จากนั้นลูกค้าจะส่ง การแลกเปลี่ยนคีย์ลูกค้า ข้อความเหมือนกับ TLS handshake พื้นฐาน ตามมาด้วย ตรวจสอบใบรับรอง ข้อความซึ่งรวมถึงลายเซ็นดิจิทัลของลูกค้า เนื่องจากคำนวณจากรหัสส่วนตัวของลูกค้าเซิร์ฟเวอร์จึงสามารถตรวจสอบลายเซ็นได้โดยใช้กุญแจสาธารณะที่ส่งเป็นส่วนหนึ่งของใบรับรองดิจิทัลของลูกค้า ส่วนที่เหลือของ จับมือ TLS รับรองความถูกต้องของลูกค้า ตามด้วยบรรทัดเดียวกันกับการจับมือ TLS พื้นฐาน.
การจับมือ TLS แบบย่อ
เมื่อจับมือกันแล้ว TLS อนุญาตให้ตัดกระบวนการส่วนใหญ่โดยใช้การจับมือแบบย่อแทน การจับมือกันเหล่านี้ใช้รหัสเซสชันเพื่อเชื่อมโยงการเชื่อมต่อใหม่กับพารามิเตอร์ก่อนหน้า.
การจับมือกันอย่างย่อช่วยให้ทั้งสองฝ่ายกลับมาเชื่อมต่อที่ปลอดภัยด้วยการตั้งค่าเดียวกันกับที่เจรจากันมาก่อนหน้านี้ เนื่องจากการเข้ารหัสบางอย่างที่เกี่ยวข้องกับการเริ่มต้นการจับมือกันนั้นค่อนข้างหนักในทรัพยากรการคำนวณทำให้ประหยัดเวลาและทำให้การเชื่อมต่อง่ายขึ้น.
กระบวนการเริ่มต้นด้วย สวัสดีลูกค้า ข่าวสาร มันเหมือนกับข้อความ Hello Client ก่อนหน้านี้ แต่ก็มี ID เซสชัน จากการเชื่อมต่อก่อนหน้า หากเซิร์ฟเวอร์รู้รหัสเซสชันจะรวมไว้ใน เซิร์ฟเวอร์สวัสดี ข่าวสาร หากไม่รู้จักรหัสเซสชันจะส่งคืนหมายเลขอื่นและการจับมือ TLS แบบเต็มจะต้องเกิดขึ้นแทน.
หากเซิร์ฟเวอร์จำรหัสเซสชันได้ดังนั้น ใบรับรอง และ แลกเปลี่ยนกุญแจ สามารถข้ามขั้นตอนได้ เปลี่ยน Cipher Spec และ เสร็จ ข้อความจะถูกส่งแบบเดียวกับการจับมือ TLS พื้นฐานที่แสดงด้านบน เมื่อไคลเอนต์ถอดรหัสข้อความและตรวจสอบ MAC แล้วสามารถส่งข้อมูลผ่านการเชื่อมต่อ TLS ที่ปลอดภัยได้.
นอกจากนี้ยังมีส่วนขยาย TLS ที่ช่วยให้การเชื่อมต่อสามารถดำเนินการต่อกับตั๋วเซสชันแทนรหัสเซสชัน เซิร์ฟเวอร์เข้ารหัสข้อมูลเกี่ยวกับเซสชันและส่งไปยังลูกค้า เมื่อลูกค้าต้องการที่จะเริ่มต้นการเชื่อมต่อนี้มันจะส่งตั๋วเซสชั่นไปยังเซิร์ฟเวอร์ซึ่งถอดรหัสมันเพื่อเปิดเผยพารามิเตอร์.
ตั๋วเซสชันไม่ได้ใช้บ่อยเพราะต้องใช้ส่วนขยาย อย่างไรก็ตามเรื่องนี้พวกเขาสามารถได้เปรียบในบางสถานการณ์เพราะเซิร์ฟเวอร์ไม่จำเป็นต้องเก็บอะไรเลย.
การคลายการจับมือ TLS
สามขั้นตอนที่สำคัญที่สุดของการจับมือกัน ได้แก่ :
- มีการเลือกพารามิเตอร์,
- มันดำเนินการรับรองความถูกต้องและ
- กุญแจถูกสร้างขึ้น.
ให้ครอบคลุมรายละเอียดเพิ่มเติมเพื่อให้คุณสามารถเข้าใจสิ่งที่เกิดขึ้นจริง.
พารามิเตอร์
ที่จุดเริ่มต้นของการจับมือกันลูกค้าและเซิร์ฟเวอร์เจรจาพารามิเตอร์ของการเชื่อมต่อโดยข้อตกลงร่วมกัน ครั้งแรกของเหล่านี้เป็นเวอร์ชันของ TLS ที่จะใช้ นี่เป็นรุ่นสูงสุดที่ทั้งสองฝ่ายสนับสนุนซึ่งมีแนวโน้มว่าจะปลอดภัยที่สุด.
ฝ่ายต่างๆยังตัดสินใจว่าจะใช้อัลกอริทึมการแลกเปลี่ยนกุญแจแบบใดเพื่อสร้างคีย์หลัก ฟังก์ชันแฮชอัลกอริธึมการเข้ารหัสและวิธีการบีบอัดจะได้รับการตกลงกันในขั้นตอนนี้ รายละเอียดเหล่านี้จะกล่าวถึงเมื่อเราพูดถึง โปรโตคอลการใช้งาน ต่อมาในบทความ.
การรับรองความถูกต้อง: ใบรับรองดิจิทัล
การรับรองความถูกต้องเป็นส่วนสำคัญของการรักษาความปลอดภัยช่องทางการสื่อสารเพราะมันทำให้ทั้งสองฝ่ายรู้ว่าพวกเขากำลังพูดคุยกับคนที่พวกเขาคิดว่าพวกเขาเป็นใครและไม่ใช่คนหลอกลวง ใน TLS และกลไกความปลอดภัยอื่น ๆ มากมายสิ่งนี้สามารถทำได้ด้วยสิ่งที่เรียกว่าใบรับรองดิจิทัล.
ใบรับรองดิจิทัลเป็นเอกสารอิเล็กทรอนิกส์ที่แสดงลิงก์ระหว่างบุคคลหรือนิติบุคคลและรหัสสาธารณะ. ลิงก์นี้ได้รับการตรวจสอบความถูกต้องโดยผู้ออกใบรับรอง (CA) ซึ่งเป็นองค์กรที่เชื่อถือได้ซึ่งยืนยันว่าทั้งสองเกี่ยวข้องกันจริงจากนั้นใช้ชื่อเสียงของตนเองในการให้ความเชื่อถือกับใบรับรอง.
ระดับใบรับรองที่แตกต่างกันแสดงถึงระดับความน่าเชื่อถือที่แตกต่างกัน สิ่งสำคัญที่ควรทราบคือหากลูกค้าหรือเซิร์ฟเวอร์มีใบรับรองที่เชื่อถือได้และถูกต้องก็ถือว่ามีเหตุผลที่จะถือว่ารหัสสาธารณะนั้นถูกต้องตามกฎหมายและคุณไม่ได้ติดต่อกับผู้โจมตี.
หมายเหตุเกี่ยวกับกุญแจสาธารณะ
การเข้ารหัสคีย์สาธารณะ (หรือที่เรียกว่าการเข้ารหัสแบบอสมมาตร) เป็นส่วนสำคัญของการเข้ารหัสและมีการใช้อย่างกว้างขวางในด้านต่างๆของ TLS นี่เป็นไพรเมอร์ด่วนสำหรับผู้ที่ไม่คุ้นเคยกับวิธีการทำงาน.
คำอธิบายสั้น ๆ ก็คือ การเข้ารหัสคีย์สาธารณะใช้คู่ที่สำคัญสำหรับการเข้ารหัสและถอดรหัสแทนที่จะเป็นเพียงคีย์เดียว. ผู้ส่งใช้กุญแจสาธารณะของผู้รับในการเข้ารหัสข้อมูล เมื่อได้รับการเข้ารหัสแล้วจะสามารถถอดรหัสได้โดยกุญแจส่วนตัวที่ตรงกันของผู้รับเท่านั้น แน่นอนว่ารหัสสาธารณะสามารถแชร์กับสาธารณะได้ในขณะที่รหัสส่วนตัวจะต้องถูกเก็บเป็นความลับ.
การเข้ารหัสคีย์สาธารณะช่วยให้ฝ่ายต่างๆสามารถแบ่งปันข้อมูลได้อย่างปลอดภัยแม้ว่าพวกเขาจะไม่เคยพบกันหรือมีโอกาสแลกเปลี่ยนกุญแจล่วงหน้า มันทำได้ผ่านคุณสมบัติเฉพาะของตัวเลขเฉพาะ คุณสามารถหาข้อมูลเพิ่มเติมในบทความของเราเกี่ยวกับการเข้ารหัสคีย์สาธารณะ.
สร้างความลับหลัก
อย่างที่เราเห็นข้างต้นเมื่อเราพูดถึงกระบวนการจับมือ TLS พื้นฐานหลังจากปาร์ตี้ (หรือทั้งสองฝ่าย) พิสูจน์ตัวตนด้วยใบรับรองสาธารณะ, ขั้นตอนต่อไปคือการสร้างความลับหลักที่รู้จักกันว่าเป็นความลับที่ใช้ร่วมกัน. ความลับหลักเป็นฐานในการรับคีย์ที่ใช้ในการเข้ารหัสและตรวจสอบความสมบูรณ์ของข้อมูลที่ส่งระหว่างสองฝ่าย.
การจับมือ TLS สามารถใช้กลไกต่าง ๆ ในการแบ่งปันความลับนี้ได้อย่างปลอดภัย เหล่านี้รวมถึง RSA, การแลกเปลี่ยนคีย์ Diffie-Hellman, PSK, Kerberos และอื่น ๆ หลายประเภท แต่ละคนมีข้อดีและข้อเสียของตัวเองเช่นการส่งต่อความลับ แต่ความแตกต่างเหล่านี้อยู่นอกขอบเขตของบทความนี้.
กระบวนการที่แน่นอนจะขึ้นอยู่กับวิธีการแลกเปลี่ยนคีย์ที่เลือก แต่ทำตามขั้นตอนคร่าวๆที่กล่าวถึง จับมือ TLS พื้นฐาน มาตรา.
ความลับของผู้ควบคุมนั้นมาจากวิธีการแลกเปลี่ยนคีย์ที่เลือกไว้ก่อนหน้านี้ ไคลเอนต์เข้ารหัสลับ premaster ด้วยรหัสสาธารณะของเซิร์ฟเวอร์เพื่อส่งอย่างปลอดภัยผ่านการเชื่อมต่อ.
ทั้งไคลเอนต์และเซิร์ฟเวอร์จะใช้ความลับของมาสเตอร์และตัวเลขสุ่มที่พวกเขาส่งเมื่อเริ่มการสื่อสารเพื่อให้เกิดความลับหลัก เมื่อคำนวณรหัสหลักแล้วจะใช้เพื่อสร้างคีย์แยกสี่หรือหกรายการ เหล่านี้เป็น:
- ลูกค้าเขียนรหัส MAC – เซิร์ฟเวอร์ใช้รหัสนี้เพื่อตรวจสอบความถูกต้องของข้อมูลที่ลูกค้าส่ง.
- เซิร์ฟเวอร์เขียนรหัส MAC – เซิร์ฟเวอร์เขียนรหัส MAC ถูกใช้โดยไคลเอนต์เพื่อตรวจสอบความถูกต้องของข้อมูลที่เซิร์ฟเวอร์ส่ง.
- คีย์การเข้ารหัสของไคลเอ็นต์เขียน – เซิร์ฟเวอร์ใช้คีย์นี้เพื่อเข้ารหัสข้อมูลที่ลูกค้าส่ง.
- คีย์การเข้ารหัสเซิร์ฟเวอร์เขียน – ไคลเอนต์ใช้คีย์นี้เพื่อเข้ารหัสข้อมูลที่ส่งโดยเซิร์ฟเวอร์.
- ลูกค้าเขียนรหัส IV – เซิร์ฟเวอร์เขียนรหัส IV ถูกใช้โดยเซิร์ฟเวอร์ใน AEAD ciphers แต่จะไม่ใช้เมื่อมีการใช้อัลกอริทึมการแลกเปลี่ยนคีย์อื่น ๆ.
- เซิร์ฟเวอร์เขียนรหัส IV – ในทำนองเดียวกันคีย์นี้ใช้โดยไคลเอนต์ในการเข้ารหัสแบบ AEAD แต่จะไม่ใช้เมื่ออัลกอริทึมการแลกเปลี่ยนคีย์อื่น ๆ ใช้.
การสร้างคีย์หลักเป็นส่วนสำคัญของการจับมือ TLS เนื่องจากช่วยให้ทั้งสองด้านของการเชื่อมต่อได้รับคีย์ที่ปลอดภัยซึ่งสามารถใช้สำหรับการตรวจสอบและการเข้ารหัส คีย์แยกใช้สำหรับกระบวนการทั้งสองเพื่อเป็นการป้องกันไว้ล่วงหน้า.
เมื่อได้รับคีย์การรับรองความถูกต้องและการเข้ารหัสแล้วพวกเขาจะใช้เพื่อป้องกันทั้งสองอย่าง เสร็จ ข้อความรวมถึงบันทึกที่ส่งผ่านแอปพลิเคชันโปรโตคอล.
โปรโตคอลแอปพลิเคชัน
เมื่อการเชื่อมต่อที่ปลอดภัยได้รับการสร้างขึ้นโดยการจับมือ TLS โปรโตคอลแอปพลิเคชันจะใช้เพื่อปกป้องข้อมูลที่ส่ง สามารถกำหนดค่าให้ใช้อัลกอริทึมที่หลากหลายเพื่อให้เหมาะกับสถานการณ์ที่แตกต่างกัน.
อัลกอริทึมการรับรองความถูกต้อง
ความสมบูรณ์ของข้อความสามารถตรวจสอบได้ด้วยอัลกอริทึมที่แตกต่างกัน เหล่านี้รวมถึง:
- HMAC-MD5
- HMAC-SHA1
- HMAC-SHA2
- AEAD
เพื่อพิสูจน์ความถูกต้องของข้อมูลที่ถูกส่งผู้ส่งจะเรียกใช้ข้อมูลผ่านฟังก์ชันแฮชเพื่อส่งคืนสตริงอักขระที่ไม่ซ้ำกัน เหล่านี้เป็นสูตรพิเศษที่มักจะส่งคืนผลลัพธ์เดียวกันเมื่อใดก็ตามที่ได้รับอินพุตเดียวกัน.
ผู้ส่งลงนามข้อมูลนี้ด้วยคีย์ส่วนตัวของพวกเขาในรูปแบบสิ่งที่เรียกว่าลายเซ็นดิจิทัลจากนั้นลายเซ็นดิจิทัลจะถูกแนบไปกับข้อความและส่งไปยังผู้รับ หากต้องการตรวจสอบว่าข้อมูลยังคงอยู่ในสภาพสมบูรณ์และไม่ได้รับการแก้ไข, ผู้รับถอดรหัสแฮชด้วยรหัสสาธารณะของผู้ส่ง. จากนั้นใช้ฟังก์ชันแฮชเดียวกันกับข้อมูลที่ส่ง ผู้รับจึงเปรียบเทียบค่าทั้งสอง.
หากพวกเขาเหมือนกันก็หมายความว่าข้อมูลยังไม่ได้รับการเปลี่ยนแปลงตั้งแต่มันถูกลงนามโดยผู้ส่ง หากมีความแตกต่างกันอาจเป็นไปได้ว่าข้อมูลได้รับการดัดแปลงหรือมีข้อผิดพลาดอื่น ๆ.
นั่นเป็นเวอร์ชันย่อของวิธีการใช้ฟังก์ชันแฮชเพื่อแสดงความสมบูรณ์ของข้อมูล หากคุณต้องการความเข้าใจในเชิงลึกยิ่งขึ้นลองอ่านบทความเกี่ยวกับการเข้ารหัสการเติมเกลือและการแฮช.
อัลกอริทึมการเข้ารหัส
TLS ใช้การเข้ารหัสคีย์สมมาตรเพื่อให้การรักษาความลับกับข้อมูลที่ส่ง ต่างจากการเข้ารหัสกุญแจสาธารณะเพียงแค่ใช้กุญแจเดียวในกระบวนการเข้ารหัสและถอดรหัส เมื่อข้อมูลได้รับการเข้ารหัสด้วยอัลกอริทึมมันจะปรากฏเป็นข้อความที่สับสน ตราบใดที่มีการใช้อัลกอริทึมที่เหมาะสมผู้โจมตีจะไม่สามารถเข้าถึงข้อมูลจริงได้แม้ว่าพวกเขาจะทำการสกัดกั้นก็ตาม.
TLS สามารถใช้อัลกอริธึมที่แตกต่างกันมากมายเช่น Camellia หรือ ARIA แม้ว่าความนิยมสูงสุดคือ AES.
การอัด
การบีบอัดเป็นกระบวนการเข้ารหัสข้อมูลเพื่อให้ใช้พื้นที่น้อยลง TLS รองรับการบีบอัดหากทั้งสองด้านของการเชื่อมต่อตัดสินใจใช้งาน แม้จะมีความสามารถนี้ขอแนะนำให้หลีกเลี่ยงการใช้ TLS ในการบีบอัดข้อมูลโดยเฉพาะตั้งแต่การโจมตีแบบ CRIME (ดูที่ ปัญหาความปลอดภัยของ TLS ส่วนด้านล่าง) พบว่าสามารถใช้ประโยชน์จากข้อมูลที่ถูกบีบอัดสำหรับการหักหลังเซสชัน.
การขยายความ
การแพ็ดดิ้งเพิ่มข้อมูลพิเศษให้กับข้อความก่อนที่จะถูกเข้ารหัส เป็นกระบวนการเข้ารหัสลับทั่วไปที่ใช้เพื่อช่วยป้องกันคำแนะนำในโครงสร้างของข้อมูลที่เข้ารหัสไม่ให้มีความหมายที่แท้จริง TLS โดยทั่วไปจะใช้การ padding PKCS # 7 กับระเบียนก่อนที่จะถูกเข้ารหัส.
โปรโตคอลการแจ้งเตือน
หากการเชื่อมต่อหรือความปลอดภัยไม่เสถียรถูกบุกรุกหรือเกิดข้อผิดพลาดร้ายแรง, โปรโตคอลการแจ้งเตือนอนุญาตให้ผู้ส่งแจ้งให้อีกฝ่ายทราบ. ข้อความเหล่านี้มีสองประเภททั้งการเตือนหรือการเสียชีวิต ข้อความเตือนระบุว่าเซสชันไม่เสถียรและอนุญาตให้ผู้รับพิจารณาว่าควรดำเนินการต่อหรือไม่.
ข้อความที่ร้ายแรงแจ้งผู้รับว่าการเชื่อมต่อถูกบุกรุกหรือเกิดข้อผิดพลาดร้ายแรง ผู้ส่งควรปิดการเชื่อมต่อหลังจากพวกเขาส่งข้อความ โปรโตคอลการแจ้งเตือนยังมีข้อมูลเกี่ยวกับสิ่งที่ทำให้เกิดปัญหาการเชื่อมต่อโดยเฉพาะ ซึ่งอาจรวมถึงสิ่งต่าง ๆ เช่นความล้มเหลวในการถอดรหัสหน่วยงานผู้ออกใบรับรองที่ไม่รู้จักพารามิเตอร์ที่ผิดกฎหมายและอีกมากมาย.
TLS & แบบจำลอง OSI
แบบจำลอง OSI เป็นวิธีหนึ่งในการสร้างแนวคิดและสร้างมาตรฐานว่าเรามองไปที่ระบบการสื่อสารและโปรโตคอลต่าง ๆ ของเราอย่างไร เป็นสิ่งสำคัญที่จะต้องทราบว่าเป็นเพียงแบบจำลองและโปรโตคอลบางอย่างของเราไม่สอดคล้องกับมัน.
OSI มีเจ็ดชั้นที่แยกต่างหากซึ่งแสดงระดับที่โปรโตคอลทำงานอยู่อย่างไรก็ตาม, TLS ไม่เหมาะกับคนใดคนหนึ่ง. มันไหลผ่านโปรโตคอลการขนส่งอื่นเช่น TCP ซึ่งควรบอกเป็นนัยว่ามันอยู่เหนือชั้นที่สี่คือชั้นการขนส่ง มีการใช้อย่างเด่นชัดที่สุดเช่นเลเยอร์การขนส่ง แต่เนื่องจากมีการดำเนินการจับมือกันดังนั้นนี่จึงเป็นส่วนหนึ่งของการนำเสนอหรือแอปพลิเคชันเลเยอร์.
อย่างที่คุณเห็น TLS นั้นไม่สอดคล้องกับรุ่น OSI นี่ไม่ได้หมายความว่า TLS เสียหรือผิดถ้ามีอะไรก็แสดงว่าแบบจำลอง OSI มีข้อบกพร่องและไม่สามารถอธิบายโปรโตคอลการสื่อสารทั้งหมดของเราได้.
การใช้ TLS
TLS ใช้เพื่อรักษาความปลอดภัยในสัดส่วนที่สำคัญของการสื่อสารออนไลน์ของเรา โดยปกติจะดำเนินการผ่านโปรโตคอลเช่น โปรโตคอลควบคุมการส่ง (TCP), แต่มันยังสามารถใช้ใน Datagram Congestion Control Protocol (DCCP) และ User Datagram Protocol (UDP).
มันสามารถรักษาความปลอดภัยโปรโตคอลเช่น HTTP, SMTP, FTP, XMPP และ NNTP, เช่นเดียวกับคนอื่น ๆ แอปพลิเคชันที่พบบ่อยที่สุดคือ Hypertext Transfer Protocol Secure (HTTPS) ซึ่งป้องกันการเชื่อมต่อระหว่างเว็บเบราว์เซอร์และเว็บไซต์ คุณสามารถบอกได้ว่าจะใช้ HTTPS เมื่อใดเพื่อความปลอดภัยในการเชื่อมต่อออนไลน์ของคุณเนื่องจากไอคอนล็อคสีเขียวเล็ก ๆ จะปรากฏที่ด้านซ้ายของ URL ที่ด้านบนของเบราว์เซอร์.
TLS ยังสามารถใช้สร้าง VPN ได้อีกด้วย, เช่นใน OpenConnect และ OpenVPN มันใช้ความสามารถในการเข้ารหัสและการรับรองความถูกต้องเพื่อสร้างอุโมงค์ที่สามารถเชื่อมต่อโฮสต์และเครือข่ายเข้าด้วยกัน เทคโนโลยี VPN ที่ใช้ TLS เช่น OpenVPN มีข้อดีเหนือกว่าตัวเลือกอื่นเช่น IPsec เนื่องจาก OpenVPN ไม่ทราบว่ามีปัญหาด้านความปลอดภัยร้ายแรง VPN เหล่านี้สามารถกำหนดค่าได้ง่ายขึ้น.
อีกประการหนึ่งของการใช้คือ อีเมลที่ปลอดภัยผ่าน STARTTLS. เมื่อใช้งาน TLS จะเป็นการป้องกันไม่ให้ผู้โจมตีสามารถเข้าถึงข้อความขณะเดินทางระหว่างเซิร์ฟเวอร์เมล.
ปัญหาความปลอดภัยของ TLS
เช่นเดียวกับโปรโตคอลส่วนใหญ่ TLS มีจำนวนช่องโหว่ในอดีตและการโจมตีทางทฤษฎีต่อการใช้งานที่หลากหลาย อย่างไรก็ตามเรื่องนี้, เวอร์ชั่นล่าสุดถือว่าปลอดภัยสำหรับการใช้งานจริง.
เวอร์ชันก่อนหน้าเช่น SSL 2.0 และ 3.0 (และ TLS 1.0 ซึ่งเป็นหลักเหมือนกับ SSL 3.0) มีข้อบกพร่องด้านความปลอดภัยมากมาย แต่เนื่องจากเป็นโปรโตคอลเก่าและเลิกใช้แล้วเราจะไม่ลงรายละเอียด คุณควรใช้ TLS 1.2 และ 1.3 เพื่อความปลอดภัยในการเชื่อมต่อของคุณแทน.
TLS เวอร์ชันใหม่มีการอัพเกรดมากมายที่ทำให้มีความเสี่ยงน้อยกว่า SSL อย่างไรก็ตามโปรโตคอลยังคงมีปัญหาด้านความปลอดภัยต่อไปนี้:
การเจรจาต่อรองการโจมตีใหม่
หนึ่งในคุณสมบัติของ TLS คือช่วยให้ลูกค้าและคู่เซิร์ฟเวอร์สามารถเจรจาใหม่พารามิเตอร์ของการเชื่อมต่อที่มีอยู่ ในปี 2009 มีการค้นพบว่าสิ่งนี้สามารถถูกโจมตีโดยผู้โจมตีเพื่อให้พวกเขาสามารถฉีดทราฟฟิกเพื่อให้ดูเหมือนว่ามาจากลูกค้า เซิร์ฟเวอร์จะยอมรับคำขอตามกฎหมายซึ่งหมายความว่าผู้โจมตีอาจจัดการข้อความที่ส่งออกได้.
การโจมตีนี้ไม่อนุญาตให้ผู้โจมตีเห็นการตอบสนอง แต่ก็ยังมีศักยภาพที่จะสร้างความเสียหายได้ ส่วนขยายที่จะป้องกันการโจมตีเหล่านี้ปัจจุบันเป็นมาตรฐานที่เสนอ.
BEAST
เบราว์เซอร์ใช้ประโยชน์จากการโจมตี SSL / TLS (BEAST) ถูกค้นพบครั้งแรกโดยนักวิจัยในปี 2011 มันใช้ประโยชน์จากช่องโหว่การเข้ารหัสบล็อกตัวเลขใน TLS ซึ่งสามารถใช้ในการถอดรหัสข้อความ การโจมตีครั้งนี้มีผลกับ TLS 1.0 ซึ่งเป็นโปรโตคอลรุ่นเก่าและอ่อนกว่า แม้ว่าจะไม่ได้รับการคัดค้านจนถึงปี [year] ผู้ใช้ควรใช้เวอร์ชัน 1.2 และ 1.3 แทน.
จังหวะการโจมตี
การโจมตีช่องทางด้านข้างเหล่านี้วิเคราะห์ระยะเวลาที่อัลกอริทึมใช้งานจากนั้นใช้ข้อมูลนั้นในการทำงานย้อนหลังและหากุญแจ ในปี 2556 การค้นพบการลักลอบสิบสามถูกค้นพบเพื่อยกระดับทั้งการโจมตีแบบกำหนดเวลาและการโจมตีแบบช่องว่างภายในขณะที่กำลังตรวจสอบรหัสข้อความ (MAC) การโจมตีนี้สามารถใช้เพื่อทำลายอัลกอริทึม TLS แม้ว่าจะไม่ถือว่าเป็นอันตรายสำหรับผู้ใช้ TLS ส่วนใหญ่.
อาชญากรรม & การละเมิด
การโจมตี CRIME สามารถทำงานได้กับช่วงของโปรโตคอล เมื่อข้อมูลถูกบีบอัดข้อมูลสามารถดึงเนื้อหาออกจากคุกกี้การตรวจสอบสิทธิ์ ข้อมูลนี้สามารถใช้สำหรับการหักหลังเซสชัน ในขณะที่มันมีผลต่อโปรโตคอลจำนวนมากการโจมตีนั้นเป็นสิ่งที่น่ากังวลเป็นพิเศษเมื่อมีการใช้การบีบอัด HTTP เนื่องจากไม่มีกลยุทธ์การลดผลกระทบที่มีประสิทธิภาพ.
ในปี 2013 พบว่าการสำรวจเบราว์เซอร์และการกรองผ่านการบีบอัด Adaptive ของ Hypertext (BREACH) พบว่าส่งผลต่อการบีบอัด HTTP ในลักษณะเดียวกัน การโจมตีเวอร์ชันนี้สามารถกู้คืนที่อยู่อีเมลและข้อมูลที่มีค่าอื่น ๆ ที่เข้ารหัสด้วย TLS การโจมตี BREACH สามารถบรรเทาได้ด้วยการปิดใช้งานการบีบอัด HTTP หรือใช้เทคนิคต่าง ๆ เช่นการป้องกันการปลอมแปลงคำขอข้ามไซต์ (CSRF).
ลดระดับการโจมตี
สิ่งเหล่านี้เป็นการโจมตีที่หลอกเซิร์ฟเวอร์ให้ใช้ TLS เวอร์ชันก่อนหน้าและปลอดภัยน้อยลง ผู้โจมตีสามารถใช้เทคนิคเหล่านี้เพื่อเจรจาต่อรองการใช้การแลกเปลี่ยนคีย์และการเข้ารหัสที่มีความปลอดภัยน้อยกว่า การโจมตี Logjam เป็นตัวอย่างที่ดีเพราะสามารถทำให้เซิร์ฟเวอร์ที่มีช่องโหว่ใช้ Diffie-Hellman 512 บิตซึ่งอ่อนแอ จากนั้นผู้โจมตีสามารถทำลายกลไกการแลกเปลี่ยนกุญแจนี้และดึงกุญแจออกมาทำให้พวกเขาเข้าถึงเซสชั่นได้อย่างสมบูรณ์.
Heartbleed
Heartbleed เป็นข้อบกพร่องด้านความปลอดภัยที่นำเข้าสู่ไลบรารี่การเข้ารหัส OpenSSL โดยไม่ตั้งใจในปี 2012, แต่ไม่เผยแพร่จนถึงปี 2014 เนื่องจากนี่เป็นการใช้งาน TLS ที่ใช้กันทั่วไปจึงทำให้เกิดความเสียหายระดับโลก.
หนึ่งในนักพัฒนาซอฟต์แวร์สำหรับส่วนขยายของการเต้นของหัวใจ TLS ได้เพิ่มช่องโหว่ของบัฟเฟอร์ที่มีการอ่านมากเกินไปซึ่งทำให้สามารถเปิดเผยข้อมูลเพิ่มเติมได้ ข้อผิดพลาดไม่ได้รับเมื่อตรวจสอบโค้ดซึ่งนำไปสู่การโจมตีจำนวนมาก.
เนื่องจากไลบรารี OpenSSL มีการใช้งานอย่างกว้างขวางค่าใช้จ่ายระหว่างประเทศในการบรรเทาปัญหาจึงมีราคาแพง ผู้ดูแลเซิร์ฟเวอร์ต้องติดตั้งแพ็ตช์ใหม่และสร้างใบรับรองและคู่คีย์ที่อาจถูกบุกรุกในช่วงสองปีที่มีช่องโหว่.
จมน้ำตาย
การถอดรหัส RSA ด้วยการโจมตี eNcryption (DROWN) ที่ล้าสมัยและอ่อนแอได้ประกาศในปี 2559 และใช้ประโยชน์จากการสนับสนุนเซิร์ฟเวอร์สำหรับ SSL 2.0 จะใช้การโจมตีแบบเข้ารหัสที่เลือกกับเซิร์ฟเวอร์ที่ยังคงรองรับ SSL 2.0 รวมถึงผู้ที่ใช้ใบรับรองกุญแจสาธารณะเดียวกันกับเซิร์ฟเวอร์อื่นที่รองรับ SSL 2.0.
เมื่อมีการประกาศการโจมตีมันสามารถเริ่มต้นได้ด้วยค่าติดตั้งเริ่มต้นประมาณ $ 18,000 และประมาณ $ 400 สำหรับการโจมตีแต่ละครั้ง เมื่อการโจมตี DROWN สำเร็จจะได้รับคีย์เซสชัน.
การโจมตีสามารถบรรเทาได้โดยไม่แชร์ใบรับรองเซิร์ฟเวอร์. กลุ่ม OpenSSL ยังปล่อยแพทช์ที่ลบการสนับสนุนสำหรับโปรโตคอลและ ciphers รุ่นเก่า แต่จะใช้งานได้หากใบรับรองของเซิร์ฟเวอร์ไม่ได้แชร์กับเซิร์ฟเวอร์อื่นที่รองรับ SSL 2.0.
PAC ไม่บริสุทธิ์
การโจมตีนี้พบในปี 2559 มันใช้ประโยชน์จากจุดอ่อนที่พบใน Web Proxy Autodiscovery Protocol (WPAD) เมื่อผู้ใช้พยายามเยี่ยมชมเว็บไซต์ผ่านการเชื่อมต่อที่เข้ารหัส TLS ข้อบกพร่องสามารถทำให้มองเห็น URL ได้ เนื่องจากบางครั้ง URL ถูกส่งไปยังผู้ใช้เป็นรูปแบบของการตรวจสอบสิทธิ์การโจมตี Unholy PAC ทำให้ผู้โจมตีสามารถเข้าใช้บัญชีของผู้ใช้ได้.
TLS ปลอดภัยหรือไม่?
แม้ว่ามันอาจดูเหมือนว่ามีปัญหาด้านความปลอดภัยจำนวนมาก แต่ความจริงก็คือสิ่งเหล่านี้ส่วนใหญ่ค่อนข้างเล็กและสามารถหรือได้รับการลดน้อยลง เมื่อความก้าวหน้าทางเทคโนโลยีมีการค้นพบช่องโหว่และมีการพัฒนาการโจมตีใหม่ TLS จะยังคงมีปัญหาด้านความปลอดภัยเพิ่มเติม แม้ตอนนี้และในอนาคตอันใกล้ดูเหมือนว่า TLS จะยังคงเป็นหนึ่งในเครื่องมือหลักและเชื่อถือได้มากที่สุดที่เราใช้เพื่อรักษาความปลอดภัยโลกออนไลน์ของเรา.
เทคโนโลยีธุรกิจความปลอดภัยทางไซเบอร์ โดย TheDigitalArtist ได้รับอนุญาตภายใต้ มอนส์ CC0