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

ในทางปฏิบัติคำตอบผิดพลาดที่ขอบ ผู้คนคิดว่าวลีรหัสปกป้องทันเนลที่กำลังทำงาน หรือการเปลี่ยนมันจะเพิกถอนสำเนาของคีย์ที่รั่วไปแล้ว สมมติฐานทั้งสองล้มเหลว และทั้งสองล้มเหลวในลักษณะที่ทิ้งข้อมูลรับรองไว้เปิดเผยขณะที่ผู้ปฏิบัติงานเชื่อว่าจัดการแล้ว

หนึ่งไดอะล็อก หลายความลับที่แตกต่าง

วลีรหัสของคีย์ส่วนตัวถอดรหัสไฟล์ รหัสผ่านบัญชียืนยันตัวคุณกับบริการ รหัสผ่านนำเข้า PKCS#12 ถอดรหัสบันเดิลที่มีคีย์และใบรับรองของมัน และอาจไม่ใช่สตริงเดียวกับวลีรหัสของคีย์เอง พรอมต์เหล่านี้อาจดูเกือบเหมือนกัน และการเดาว่าความลับใดไปที่ใดคือวิธีที่คีย์ลงเอยด้วยการวางในช่องผิด

การเข้ารหัสของทันเนลเองเป็นสิ่งที่สี่ ช่องทางข้อมูลใช้คีย์เซสชันที่เจรจาระหว่างแฮนด์เชก วลีรหัสของคีย์ส่วนตัวไม่มีบทบาทในการปกป้องแพ็กเก็ตแต่ละรายการ หากใครอ่านไฟล์คีย์ได้ พวกเขาอาจพยายามเดาวลีรหัสแบบออฟไลน์ แต่ถ้าอ่านแพ็กเก็ตได้ วลีรหัสก็ไม่เกี่ยวข้อง

การเข้ารหัสบนดิสก์ครอบคลุมอะไร

คีย์ PEM ที่เข้ารหัสมีสองรูปแบบ และส่วนหัวบอกคุณว่าคุณมีแบบใด รูปแบบ PKCS#8 สมัยใหม่เริ่มต้นด้วย -----BEGIN ENCRYPTED PRIVATE KEY-----; รูปแบบ PEM แบบเก่า ซึ่งยังพบได้ทั่วไปในการตั้งค่า OpenVPN เก่า เริ่มต้นด้วย -----BEGIN RSA PRIVATE KEY----- และมี Proc-Type: 4,ENCRYPTED และบรรทัด DEK-Info อยู่ใต้ลงไป ไฟล์เก็บคีย์ส่วนตัวที่เข้ารหัสภายใต้คีย์ที่ได้มาจากวลีรหัสของคุณ โดยทั่วไปผ่าน KDF ที่ใช้รหัสผ่านซึ่งมีจำนวนรอบหรือปัจจัยการทำงานที่ระบุไว้ เอกสาร OpenSSL pkey ครอบคลุมรูปแบบและตัวเลือกวลีรหัสที่ใช้เมื่ออ่าน

ผลที่ตามมาสองประการ วลีรหัสที่อ่อนแอสามารถถูกโจมตีแบบออฟไลน์ด้วยอัตราที่ KDF อนุญาต ดังนั้นสิทธิ์ของไฟล์และการเข้าถึงข้อมูลสำรองยังคงสำคัญแม้ไฟล์จะถูกเข้ารหัส และผู้โจมตีที่ได้มาเพียงไฟล์โดยไม่มีวลีรหัสต้องเดา ผู้ที่ได้ทั้งไฟล์และวลีรหัสก็มีคีย์ ราวกับว่ามันไม่เคยถูกเข้ารหัสเลย

head -3 vpn.key
openssl pkey -in vpn.key -noout -pubout
openssl pkcs12 -in bundle.p12 -info -noout

head -3 แสดงส่วนหัว และบนไฟล์เก่าจะแสดงบรรทัด Proc-Type และ DEK-Info ที่พิสูจน์การเข้ารหัส บรรทัดเดียวไม่ใช่หลักฐานในทิศทางใด pkey ถามหาวลีรหัสและพิมพ์เพียงครึ่งสาธารณะ ซึ่งพิสูจน์ว่าไฟล์และวลีรหัสทำงาน โดยไม่เปิดเผยคีย์ส่วนตัว อย่าใช้ -text สำหรับการตรวจสอบนั้น เพราะมันพิมพ์ส่วนประกอบส่วนตัว privateExponent, prime1, prime2 และอื่น ๆ และผลลัพธ์นั้นต้องไม่ถูกวางที่ใดเลย ไม่ว่าจะในตั๋ว แชต หรือบันทึก คำสั่ง PKCS#12 ยังบอกด้วยว่าบันเดิลมีรหัสผ่าน MAC หรือการเข้ารหัสแยกต่างหากหรือไม่ ซึ่งควรรู้ก่อนมอบให้เพื่อนร่วมงาน

สิ่งที่มันหยุดปกป้องเมื่อคีย์ถูกโหลด

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

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

ทำไมพรอมต์จึงกลับมาซ้ำ ๆ

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

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

การสูญหายและการเปิดเผยไม่ใช่การซ่อมแซมเดียวกัน

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

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

บทความที่เกี่ยวข้อง