ความลับเช่นคีย์เข้ารหัสและข้อมูลประจำตัวไม่ควรถูกตรวจสอบในการควบคุมแหล่งที่มาด้วยเหตุผลบางประการ อย่างแรกคือชัดแจ้งว่าคีย์การเข้ารหัสและข้อมูลประจำตัวควรอยู่บนพื้นฐานที่จำเป็นต้องรู้เสมอและการควบคุมแหล่งที่มาไม่ใช่วิธีที่เชื่อถือได้ในการปกป้องข้อมูลจากการเปิดเผย อีกเหตุผลที่คุณไม่ต้องการความลับดังกล่าวในการควบคุมแหล่งที่มาของคุณเป็นเพราะความลับมักจะ (แต่ไม่เสมอไป) เฉพาะกับคุณลักษณะบางอย่างของสภาพแวดล้อมที่แอปพลิเคชันของคุณจะทำงาน (เช่นการรับคีย์ส่วนตัว ลายเซ็นที่จำเป็นสำหรับการอนุมัติบริการเว็บจุดสิ้นสุดเฉพาะของบริการเว็บนั้นอาจทำงานในสภาพแวดล้อม QA ที่ต้องใช้ลายเซ็น QA)
วิธีที่ถูกต้องในการรักษาสิ่งแวดล้อม (หรือความลับทั่วโลก) คือการปฏิบัติต่อคุณเช่นเดียวกับคุณลักษณะการกำหนดค่าด้านสิ่งแวดล้อมอื่น ๆ พร้อมการควบคุมความปลอดภัยเพิ่มเติมสำหรับการวัดที่ดี โมดูลโค้ดที่ได้รับการออกแบบมาอย่างดีเป็นอิสระและเป็นเวอร์ชั่นควรจะเหมือนกันในทุกสภาพแวดล้อมเช่นสภาพแวดล้อมที่มีการปรับใช้เพื่อแจ้งแอปพลิเคชันเกี่ยวกับคุณลักษณะต่างๆ (เช่นรายละเอียดการเชื่อมต่อฐานข้อมูลหนังสือรับรองจุดสิ้นสุดบริการเว็บ รายละเอียดการกำหนดค่าที่สำคัญสำหรับแอปพลิเคชันของคุณถูกทำให้เป็นภายนอกและกลายเป็นพารามิเตอร์การกำหนดค่าของสภาพแวดล้อมของคุณ
ตอนนี้เพื่อจัดการข้อโต้แย้งของคุณ:
โดยทั่วไปแล้วเราไม่ได้เป็นเพียงปัญหา
ไม่มีสิ่งใดที่เป็นระบบความปลอดภัยที่สมบูรณ์แบบอย่างไรก็ตาม "การย้าย" ปัญหาไปยังพื้นที่ที่สามารถวางมาตรการและการควบคุมเพิ่มเติมได้จะช่วยเพิ่มความยากลำบากและลดโอกาสของการเปิดเผยความลับโดยไม่ตั้งใจหรือเป็นอันตราย กฎง่ายๆที่ควรปฏิบัติเมื่อออกแบบระบบที่ต้องปกป้องข้อมูลที่เป็นความลับคือการวางการควบคุมในสองครั้ง สิ่งที่ฉันหมายถึงคือเพื่อให้แน่ใจว่าการเปิดเผยข้อมูลที่เป็นความลับหรือเหตุการณ์ด้านความปลอดภัยที่เกิดขึ้นโดยบังเอิญหรือเป็นอันตรายนั้นจะต้องมีความล้มเหลวหรือในการควบคุมสองอย่างหรือมากกว่านั้น
ตัวอย่างที่ดีของสิ่งนี้อาจจัดเก็บไฟล์ที่เข้ารหัสบนเซิร์ฟเวอร์ ฉันยังมีคีย์ถอดรหัสลับที่ฉันต้องเก็บเป็นความลับในไฟล์อื่น
- จัดเก็บคีย์และไฟล์ที่เข้ารหัสในเซิร์ฟเวอร์เดียวกัน (0 การควบคุมใครก็ตามที่เข้าถึงเซิร์ฟเวอร์สามารถรับข้อมูลที่เป็นความลับได้)
- ดำเนินการตามขั้นตอนด้านบนและป้องกันการเข้าถึงไฟล์ทั้งสองไฟล์เพื่อให้ผู้ใช้แอปพลิเคชันรันไทม์ของระบบปฏิบัติการสามารถอ่านได้ (1 การควบคุมการทำลายรหัสผ่านของผู้ใช้รูทหรือผู้ใช้รันไทม์ของแอปพลิเคชัน
- จัดเก็บคีย์ในห้องเก็บกุญแจภายนอกรับคีย์พร้อมมาตรการความปลอดภัยหลายรายการเช่นรายการที่อยู่ IP การตรวจสอบความถูกต้องใบรับรองและมาตรการอื่น ๆ สำหรับแอปพลิเคชันที่สามารถเข้าถึงไฟล์ที่เข้ารหัสในระบบไฟล์ (การควบคุมหลายตัวการควบคุมความปลอดภัยที่ล้มเหลวหลายครั้งจะต้องเกิดขึ้นเพื่อให้ข้อมูลที่เป็นความลับถูกโจมตี)
อีกครั้งไม่มีสิ่งเช่นการรักษาความปลอดภัยที่สมบูรณ์แบบ แต่เป้าหมายของการมีการควบคุมหลายอย่างทำให้มั่นใจได้ว่าจะต้องมีการล้มเหลวหลายครั้งเพื่อให้เกิดการเปิดเผย
สำหรับผมแล้วดูเหมือนว่าผลิตภัณฑ์อย่าง Azure KeyVault นั้นไม่ได้ดีกว่าและซับซ้อนกว่ามาก
ซับซ้อนใช่ไม่มีจุดหมายเป็นอัตนัยอย่างสมบูรณ์ เราไม่สามารถอภิปรายเกี่ยวกับความไม่มีจุดหมายของการรักษาความปลอดภัยเพิ่มเติมโดยไม่คำนึงถึงความเป็นจริงว่าข้อมูลนั้นเป็นความลับเพียงใด หากใครสามารถใช้ข้อมูลที่เป็นความลับในการส่งการโอนเงินที่ผิดกฎหมายออกจากสถาบันการเงินของคุณบางสิ่งบางอย่างเช่นตู้นิรภัยหลักจะเกี่ยวกับสิ่งที่ไกลที่สุดจากไม่มีจุดหมาย
กว่าเก็บความลับของคุณในไฟล์กำหนดค่าแยกต่างหากและตรวจสอบให้แน่ใจว่าเป็นไฟล์. gitignore หรือเทียบเท่า
จนกว่าจะมีใครตรวจสอบโดยไม่ได้ตั้งใจเข้าไปในตัวควบคุมแหล่งที่มาตอนนี้ความลับจะถูกฝังอยู่ในประวัติศาสตร์การควบคุมแหล่งที่มาตลอด
แน่นอนว่าผู้คนอาจจะส่งอีเมลถึงกันอย่างไม่ปลอดภัย ...
ความปลอดภัยไม่ได้เป็นเพียงปัญหาทางเทคนิค แต่เป็นปัญหาของคนเช่นกัน นั่นจะเป็นหัวข้อนอกเรื่อง แต่ฉันรู้สึกว่า ณ จุดนี้คุณกำลังพยายามที่จะพูดออกมาจากการทำสิ่งที่จำเป็น
มีวิธีการจัดการความลับที่ไม่เพียง แต่ย้ายปัญหาหรือไม่ ฉันเชื่อว่าคำถามนี้มีคำตอบที่ชัดเจนคำตอบเดียว โดยการเปรียบเทียบถ้าฉันถามว่า HTTPS ไม่เพียงแค่เคลื่อนย้ายปัญหาคำตอบก็คือปุ่ม CA จะกระจายไปกับระบบปฏิบัติการของคุณและเราเชื่อมั่นพวกเขาเพราะเราเชื่อถือวิธีการกระจายของระบบปฏิบัติการ
การรักษาความปลอดภัยไม่ได้ทำให้ปัญหาหายไปตลอดเวลาส่วนใหญ่จะควบคุมสิ่งรอบตัว การเปรียบเทียบของคุณสั้นกระชับเพราะจริง ๆ แล้วการเข้ารหัสคีย์สาธารณะทำอะไร เรากำลัง "ย้ายปัญหา" ไปที่ CA โดยการมอบความไว้วางใจใน CA ของเราให้แก่ผู้อื่นเพื่อรับรองบัตรประจำตัวของนิติบุคคลที่เป็นเจ้าของใบรับรองสาธารณะ โดยพื้นฐานแล้วไม่มีอะไรสั้น ๆ ของสตริงของความล้มเหลวที่ร้ายแรง (เช่นการสูญเสียความน่าเชื่อถือใน CA) จะต้องเกิดขึ้นเพื่อนำไปสู่ปัญหาด้านความปลอดภัย
เช่นเดียวกับหลาย ๆ สิ่งความปลอดภัยเป็นสิ่งที่คุณต้องคำนึงถึงตามอัตวิสัยลักษณะของข้อมูลผลที่ตามมาของการเปิดเผยความอยากอาหารความเสี่ยงงบประมาณ ฯลฯ