ในอดีต ใบรับรองมักจะหมดอายุเนื่องจากต้องต่ออายุด้วยตนเอง คนก็ลืมที่จะทำมัน ด้วยการมาถึงของ Let's Encrypt และขั้นตอนการอัปเดตอัตโนมัติ ดูเหมือนว่าปัญหาควรจะได้รับการแก้ไข แต่ล่าสุด
ในกรณีที่คุณพลาดเรื่องราวดังกล่าว เมื่อถึงเวลาเที่ยงคืนของวันที่ 4 พฤษภาคม 2019 ส่วนขยาย Firefox เกือบทั้งหมดก็หยุดทำงานกะทันหัน
เมื่อปรากฎว่าความล้มเหลวครั้งใหญ่เกิดขึ้นเนื่องจาก Mozilla
Mozilla เปิดตัวแพทช์ Firefox 66.0.4 อย่างรวดเร็ว ซึ่งแก้ปัญหาด้วยใบรับรองที่ไม่ถูกต้อง และส่วนขยายทั้งหมดกลับสู่ปกติ นักพัฒนาแนะนำให้ติดตั้งและ
อย่างไรก็ตาม เรื่องราวนี้แสดงให้เห็นอีกครั้งว่าการหมดอายุของใบรับรองยังคงเป็นปัญหาเร่งด่วนในปัจจุบัน
ในเรื่องนี้เป็นเรื่องที่น่าสนใจที่จะดูวิธีการที่ค่อนข้างแปลกใหม่ที่นักพัฒนาโปรโตคอลจัดการกับงานนี้
DNSCrypt
DNSCrypt เป็นโปรโตคอลการเข้ารหัสการรับส่งข้อมูล DNS ปกป้องการสื่อสาร DNS จากการสกัดกั้นและ MiTM และยังช่วยให้คุณหลีกเลี่ยงการบล็อกในระดับการสืบค้น DNS
โปรโตคอลจะล้อมรอบการรับส่งข้อมูล DNS ระหว่างไคลเอนต์และเซิร์ฟเวอร์ในโครงสร้างการเข้ารหัสซึ่งทำงานผ่านโปรโตคอลการขนส่ง UDP และ TCP หากต้องการใช้งาน ทั้งไคลเอนต์และตัวแก้ไข DNS จะต้องรองรับ DNSCrypt ตัวอย่างเช่น ตั้งแต่เดือนมีนาคม 2016 ได้มีการเปิดใช้งานบนเซิร์ฟเวอร์ DNS และในเบราว์เซอร์ Yandex ผู้ให้บริการรายอื่นหลายรายได้ประกาศการสนับสนุนเช่นกัน รวมถึง Google และ Cloudflare น่าเสียดายที่มีไม่มาก (มีเซิร์ฟเวอร์ DNS สาธารณะ 152 รายการอยู่ในเว็บไซต์อย่างเป็นทางการ) แต่โปรแกรม.
DNSCrypt ทำงานอย่างไร? กล่าวโดยสรุป ไคลเอนต์ใช้รหัสสาธารณะของผู้ให้บริการที่เลือกและใช้เพื่อตรวจสอบใบรับรอง คีย์สาธารณะระยะสั้นสำหรับเซสชันและตัวระบุชุดรหัสมีอยู่แล้ว ลูกค้าได้รับการสนับสนุนให้สร้างรหัสใหม่สำหรับแต่ละคำขอ และเซิร์ฟเวอร์ได้รับการสนับสนุนให้เปลี่ยนรหัส ทุก 24 ชั่วโมง. เมื่อทำการแลกเปลี่ยนคีย์จะใช้อัลกอริธึม X25519 สำหรับการลงนาม - EdDSA สำหรับการเข้ารหัสบล็อก - XSalsa20-Poly1305 หรือ XChaCha20-Poly1305
หนึ่งในผู้พัฒนาโปรโตคอล Frank Denis
ประการแรก มันมีประโยชน์อย่างมากสำหรับการรักษาความปลอดภัย หากเซิร์ฟเวอร์ถูกบุกรุกหรือคีย์รั่วไหล การรับส่งข้อมูลของเมื่อวานจะไม่สามารถถอดรหัสได้ คีย์มีการเปลี่ยนแปลงแล้ว สิ่งนี้มีแนวโน้มที่จะก่อให้เกิดปัญหาในการดำเนินการตามกฎหมาย Yarovaya ซึ่งบังคับให้ผู้ให้บริการจัดเก็บการรับส่งข้อมูลทั้งหมด รวมถึงการรับส่งข้อมูลที่เข้ารหัสด้วย ความหมายก็คือสามารถถอดรหัสได้ในภายหลังหากจำเป็นโดยการขอรหัสจากไซต์ แต่ในกรณีนี้ไซต์ไม่สามารถให้ได้เนื่องจากใช้คีย์ระยะสั้นเพื่อลบอันเก่า
แต่ที่สำคัญที่สุด เดนิสเขียนว่าคีย์ระยะสั้นบังคับให้เซิร์ฟเวอร์ตั้งค่าระบบอัตโนมัติตั้งแต่วันแรก หากเซิร์ฟเวอร์เชื่อมต่อกับเครือข่ายและไม่ได้กำหนดค่าสคริปต์การเปลี่ยนแปลงคีย์หรือไม่ทำงาน สิ่งนี้จะถูกตรวจพบทันที
เมื่อระบบอัตโนมัติเปลี่ยนคีย์ทุกๆ สองสามปี ระบบอัตโนมัติจะยึดถือไม่ได้ และผู้คนอาจลืมเรื่องการหมดอายุของใบรับรองได้ หากคุณเปลี่ยนกุญแจทุกวัน สิ่งนี้จะถูกตรวจพบทันที
ในเวลาเดียวกัน หากมีการกำหนดค่าระบบอัตโนมัติตามปกติ ก็ไม่สำคัญว่าจะเปลี่ยนคีย์บ่อยแค่ไหน: ทุกปี ทุกไตรมาส หรือสามครั้งต่อวัน ถ้าทุกอย่างได้ผลเกิน 24 ชั่วโมง ทุกอย่างก็จะได้ผลตลอดไป Frank Denis เขียน ตามคำแนะนำของเขา คำแนะนำในการหมุนเวียนคีย์รายวันในเวอร์ชันที่สองของโปรโตคอล ร่วมกับอิมเมจ Docker สำเร็จรูปที่นำไปใช้ ช่วยลดจำนวนเซิร์ฟเวอร์ที่มีใบรับรองหมดอายุได้อย่างมีประสิทธิภาพ ในขณะเดียวกันก็ปรับปรุงความปลอดภัยไปพร้อมๆ กัน
อย่างไรก็ตาม ผู้ให้บริการบางรายยังคงตัดสินใจตั้งค่าระยะเวลาความถูกต้องของใบรับรองเป็นมากกว่า 24 ชั่วโมง ด้วยเหตุผลทางเทคนิคบางประการ ปัญหานี้ส่วนใหญ่ได้รับการแก้ไขด้วยโค้ดสองสามบรรทัดใน dnscrypt-proxy: ผู้ใช้จะได้รับคำเตือนเชิงข้อมูล 30 วันก่อนใบรับรองจะหมดอายุ ข้อความอื่นที่มีระดับความรุนแรงสูงกว่า 7 วันก่อนหมดอายุ และข้อความสำคัญหากใบรับรองยังมีเหลืออยู่ ความถูกต้อง น้อยกว่า 24 ชั่วโมง สิ่งนี้ใช้กับใบรับรองที่มีระยะเวลาใช้งานได้นานในตอนแรกเท่านั้น
ข้อความเหล่านี้ทำให้ผู้ใช้สามารถแจ้งผู้ดำเนินการ DNS เกี่ยวกับการหมดอายุของใบรับรองที่กำลังจะเกิดขึ้นก่อนที่จะสายเกินไป
บางทีหากผู้ใช้ Firefox ทั้งหมดได้รับข้อความดังกล่าว ก็อาจมีบางคนแจ้งให้นักพัฒนาทราบและจะไม่อนุญาตให้ใบรับรองหมดอายุ “ฉันจำเซิร์ฟเวอร์ DNSCrypt เดียวในรายการเซิร์ฟเวอร์ DNS สาธารณะที่ใบรับรองหมดอายุในช่วงสองหรือสามปีที่ผ่านมา” Frank Denis เขียน ไม่ว่าในกรณีใด การเตือนผู้ใช้ก่อนอาจดีกว่าการปิดใช้งานส่วนขยายโดยไม่มีการเตือนล่วงหน้า
ที่มา: will.com