ในขณะที่คุณสามารถสร้างฟังก์ชันแฮชของคุณเอง การเข้ารหัสแบบสมมาตร แผนการเข้ารหัสคีย์สาธารณะ และอื่นๆ ที่ไม่มีใครรู้ถึงการออกแบบของมัน อาจเป็นความคิดที่ดีที่จะพึ่งพาความคลุมเครือ (ตามที่ @kelalaka แสดงความคิดเห็น) เพื่อรับความปลอดภัย
ในศตวรรษที่ 19 Auguste Kerckhoffs ได้กล่าวถึงหลักการที่เราเรียกว่า "หลักการของเคิร์กฮอฟฟ์":
ระบบการเข้ารหัสควรมีความปลอดภัยแม้ว่าทุกอย่างเกี่ยวกับระบบจะเปิดเผยต่อสาธารณชน ยกเว้นคีย์ก็ตาม
นอกจากนี้ แม็กซิมของแชนนอน ถูกกำหนดขึ้นในศตวรรษที่ 20 และระบุว่า:
เราควรออกแบบระบบภายใต้สมมติฐานที่ว่าศัตรูจะคุ้นเคยกับพวกเขาอย่างเต็มที่ในทันที
หรืออีกนัยหนึ่ง - เมื่อคุณออกแบบระบบเพื่อความปลอดภัย คุณต้องถือว่าผู้โจมตีรู้ว่าระบบทำงานอย่างไร
ในตัวอย่างฟังก์ชันแฮชที่เป็นกรรมสิทธิ์ของคุณ ผู้โจมตีอาจเข้าถึงซอฟต์แวร์หรือฮาร์ดแวร์ที่คำนวณฟังก์ชันแฮชดังกล่าวได้ และใช้การวิเคราะห์การเข้ารหัสลับหรือวิศวกรรมย้อนกลับเพื่อจัดการเพื่อค้นหาช่องโหว่ เช่น การโจมตีแบบชนกันหรือการกู้คืนอิมเมจล่วงหน้า เทคนิค
อีกเหตุผลหนึ่งที่ไม่ควรพึ่งพาเทคนิคที่เป็นกรรมสิทธิ์หรือความลับก็คือความไว้วางใจของผู้บริโภค: เหตุใดผู้บริโภคจึงไว้วางใจว่าคุณรักษารหัสผ่าน (แฮช) ของพวกเขาให้ปลอดภัย หากคุณยอมรับว่าความปลอดภัยนั้นมาจากการไม่รู้จักการนำไปใช้
นี่เป็นเหตุผลว่าทำไมในอุตสาหกรรม การเข้ารหัสดั้งเดิม (ฟังก์ชันแฮช การเข้ารหัส แผนลายเซ็น ฯลฯ) มักจะถูกนำมาใช้หลังจากการตรวจสอบข้อเท็จจริงที่สำคัญจากชุมชนวิทยาศาสตร์เท่านั้น จากนั้น RFCs และมาตรฐานต่างๆ จะได้รับการร่างขึ้นเพื่อให้ผู้ขายและผู้ให้บริการสามารถวัดปริมาณความปลอดภัยของตนโดยระบุว่าพวกเขาปฏิบัติตามมาตรฐานใด