ก่อนอื่นลองทำความเข้าใจว่าการรับรองความถูกต้องของ SSL (HTTPS) และ HTTP ทำงานอย่างไร
วิธีการตรวจสอบความถูกต้อง HTTPตามปกติ(Digest, Basic และรูปแบบการตรวจสอบความถูกต้องตามรูปแบบ + คุกกี้ใด ๆ ที่คุณสามารถนำไปใช้ด้านบนของ HTTP) นั้นไม่ปลอดภัยทั้งหมดด้วยตัวเองเพราะพวกเขาส่งข้อมูลการรับรองความถูกต้อง ไม่ว่าข้อมูลจะอยู่ในเขตข้อมูล POST หรือส่วนหัวและไม่ว่าจะเป็นการเข้ารหัสแบบเบส 64 หรือไม่ก็ตามไม่ว่าจะด้วยเหตุผลใดก็ตาม ซึ่งหมายความว่าการรับรองความถูกต้อง HTTP ผ่านช่องทางที่ไม่น่าเชื่อถือนั้นไม่มีค่าอะไรเลยสิ่งที่ผู้โจมตีต้องอ่านรหัสผ่านของคุณนั้นเป็นเครือข่ายเล็กน้อย
SSLใช้ช่องทางการสื่อสารที่ปลอดภัยผ่านช่องทางที่ไม่ปลอดภัยโดยเนื้อแท้ งานนี้ประมาณดังต่อไปนี้:
- เซิร์ฟเวอร์ส่งใบรับรองที่ลงนามแล้ว
- ลูกค้าตรวจสอบใบรับรองกับรายการของคีย์การเซ็นชื่อที่รู้จักดี ลายเซ็นใบรับรองสามารถถูกผูกมัดเพื่อให้แต่ละโหนดบอกว่า "ถ้าลายเซ็นที่ลงนามฉันเป็นสิ่งที่ดีแล้วฉันดังนั้น" แต่ในที่สุดห่วงโซ่จำเป็นต้องแก้ไขหนึ่งในหน่วยงานที่เชื่อถือได้กำมือหนึ่งที่กำหนดไว้ล่วงหน้าบนไคลเอนต์
- ไคลเอนต์ใช้คีย์การเข้ารหัสสาธารณะของเซิร์ฟเวอร์เพื่อส่งความลับที่ใช้ร่วมกัน
- เซิร์ฟเวอร์ถอดรหัสลับที่แชร์โดยใช้ไพรเวตคีย์ (เพราะเฉพาะเซิร์ฟเวอร์ที่ถูกกฎหมายเท่านั้นที่มีไพรเวตคีย์เซิร์ฟเวอร์อื่น ๆ จะไม่สามารถถอดรหัสลับที่แชร์ได้)
- ลูกค้าส่งข้อมูลคำขอจริงเข้ารหัสโดยใช้ความลับที่ใช้ร่วมกัน
- เซิร์ฟเวอร์ถอดรหัสข้อมูลร้องขอจากนั้นส่งการตอบกลับที่เข้ารหัส
- ลูกค้าถอดรหัสการตอบสนองและนำเสนอให้กับผู้ใช้
โปรดสังเกตประเด็นสำคัญบางประการที่นี่:
- ห่วงโซ่ใบรับรองอนุญาตให้ลูกค้าตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ที่พวกเขากำลังพูดถึงนั้นเป็นของจริงไม่ใช่คนที่ขัดขวางคำขอของพวกเขา นี่คือเหตุผลที่คุณควรซื้อใบรับรอง SSL จริงและเหตุใดเบราว์เซอร์จึงส่งคำเตือนที่น่ากลัวเมื่อคุณเข้าชมไซต์ที่ใช้ใบรับรองที่ไม่ถูกต้องหมดอายุหรือไม่ถูกต้อง: การเข้ารหัสทั้งหมดในโลกไม่ได้ช่วยหากคุณ พูดคุยกับคนผิด
- การเข้ารหัสลับสาธารณะ / ส่วนตัวที่ใช้ในการแลกเปลี่ยนความลับทำให้แน่ใจว่าการสื่อสารที่สำเร็จจะทำงานระหว่างไคลเอนต์และเซิร์ฟเวอร์คู่นี้โดยเฉพาะเท่านั้น: แพ็กเก็ตเครือข่าย sniffed จะถูกเข้ารหัสและพวกเขาจะต้องใช้คีย์ส่วนตัวของเซิร์ฟเวอร์เพื่อรับข้อมูล
- การเข้ารหัสแบบสมมาตรใช้สำหรับคำขอจำนวนมากเนื่องจากมีค่าใช้จ่ายด้านประสิทธิภาพที่ต่ำกว่าการเข้ารหัสคีย์ส่วนตัว / สาธารณะ คีย์ (แชร์ความลับ) มีการแลกเปลี่ยนโดยใช้การเข้ารหัสคีย์ส่วนตัว / สาธารณะเนื่องจากเป็นวิธีเดียวที่จะทำได้อย่างปลอดภัย (ยกเว้นการขนส่งผ่านช่องทางอื่นเช่นบริการจัดส่ง)
เห็นได้ชัดว่ามีค่าใช้จ่ายที่เกี่ยวข้อง แต่ก็ไม่เลวร้ายอย่างที่คุณคิด - ส่วนใหญ่อยู่ในระดับที่ "ทิ้งฮาร์ดแวร์ไว้ที่นี่" เป็นการตอบสนองที่เหมาะสมนอกเสียจากว่าคุณกำลังเตรียมพร้อมสำหรับการรับส่งข้อมูลจำนวนมาก ( คิดว่า Google หรือ Facebook) ภายใต้สถานการณ์ปกตินั่นคือการใช้งานเว็บแอปพลิเคชันทั่วไปค่าโสหุ้ย SSL นั้นเล็กน้อยและดังนั้นทันทีที่คุณมีข้อมูลที่เป็นความลับคุณควรรันทุกอย่างบน SSL รวมถึงทรัพยากร SSL เป็นวิธีเดียวที่ใช้ในการรักษาความปลอดภัยการรับส่งข้อมูล HTTP; วิธีการอื่นนั้นไม่ได้มาตรฐานและไม่ได้รับการสนับสนุนอย่างกว้างขวางและคุณไม่ต้องการที่จะใช้สิ่งเหล่านี้ด้วยตัวเองเพราะโดยสุจริตมันง่ายเกินไปที่จะทำให้พวกเขาผิด
TL; DR:ใช่การรับรองความถูกต้องพื้นฐาน SSL + เป็นความคิดที่ดีใช่คุณต้องมีเซิร์ฟเวอร์ที่ปลอดภัย (และใบรับรองที่ถูกต้อง ) ใช่มันจะทำให้ช้าลงเล็กน้อย แต่ไม่ใช่นี่ไม่ใช่สิ่งที่คุณต้องกังวล ตอนนี้