อย่างไรก็ตาม มีแนวทางที่ทันสมัยและดีกว่าสำหรับการสร้าง "คีย์การติดตั้งแบบออฟไลน์" หรือไม่
มีสองแนวทางที่ชัดเจน:
- หนึ่งคือการใช้รหัสยืนยันข้อความ (MAC); นี่คืออัลกอริธึมการเข้ารหัสที่ใช้สตริงและคีย์ลับ และสร้าง 'แท็ก' แนวคิดก็คือ หากไม่รู้รหัสลับ ก็ยากที่จะสร้างคู่สตริง/แท็กอื่นที่ตรวจสอบได้
ดังนั้น สิ่งที่คุณต้องทำในฐานะผู้ผลิตคือเลือกรหัสลับแบบสุ่ม (ซึ่งคุณจะใส่ลงในผลิตภัณฑ์ของคุณ) หากต้องการสร้าง 'รหัสผลิตภัณฑ์' (ฉลากที่ติดอยู่กับผลิตภัณฑ์) คุณต้องใช้หมายเลขลำดับ รันผ่าน MAC เพื่อสร้างแท็ก และทำให้หมายเลขลำดับและแท็กเป็นรหัสผลิตภัณฑ์
จากนั้น เมื่อติดตั้งผลิตภัณฑ์แล้ว ผู้ใช้ป้อนรหัสผลิตภัณฑ์ ซอฟต์แวร์จะแยกหมายเลขลำดับและแท็กออก จากนั้นรันหมายเลขลำดับผ่าน MAC (โดยใช้รหัสลับที่ผู้ผลิตใส่ไว้) และเปรียบเทียบแท็กที่คำนวณกับแท็กที่อยู่ในรหัสผลิตภัณฑ์ - หากตรงกัน คุณจะดำเนินการติดตั้งต่อไป
ข้อดีคือวิธีนี้ทำได้ง่ายและควบคุมความยาวของรหัสผลิตภัณฑ์ได้ง่าย (ด้วย MAC ที่ดี เช่น HMAC แท็ก 20 บิตจะทำให้ความน่าจะเป็นของการคาดเดาแบบสุ่มน้อยกว่าหนึ่งในล้านต่อการเดาหนึ่งครั้ง - ถ้า ยังไม่ต่ำพอ เลือกแท็กที่ยาวกว่านี้)
ข้อเสียของสิ่งนี้คือหากแฮ็กเกอร์ที่ดีแยกผลิตภัณฑ์ของคุณออกจากกัน พวกเขาสามารถแยกรหัสลับ จากนั้นสร้างรหัสผลิตภัณฑ์ของตนเองตามต้องการ มีความพยายามในการออกแบบการใช้งานที่ทนต่อสิ่งนี้ ("การเข้ารหัสแบบกล่องขาว"); เหล่านั้นพบว่าน่าผิดหวัง อย่างไรก็ตาม หากความพยายามที่เกี่ยวข้องในส่วนของผู้โจมตีมีมากกว่าความพยายามเพียงแค่แจกจ่ายรหัสผลิตภัณฑ์ที่เป็นที่รู้จักดี ก็อาจยอมรับได้
- อีกวิธีหนึ่งคือใช้อัลกอริธึมลายเซ็นคีย์สาธารณะ (พร้อมลายเซ็นสั้น)
แนวคิดนี้คล้ายกัน ยกเว้นว่าผู้ผลิตจะสร้างคู่คีย์สาธารณะ/คีย์ส่วนตัว และใส่คีย์สาธารณะลงในอุปกรณ์
ผู้ผลิตใช้รหัสส่วนตัวเพื่อสร้าง 'รหัสผลิตภัณฑ์'; ในการติดตั้ง ซอฟต์แวร์จะใช้สำเนาของรหัสสาธารณะเพื่อตรวจสอบความถูกต้องของรหัสผลิตภัณฑ์
ข้อดีคือเราไม่ต้องกังวลอีกต่อไปว่าแฮ็กเกอร์จะสร้างคีย์ผลิตภัณฑ์ใหม่ได้ ในการทำเช่นนั้น เขาต้องใช้คีย์ส่วนตัวซึ่งไม่ได้อยู่ในอุปกรณ์
ข้อเสียคือความยาวของแท็ก - แม้แต่อัลกอริทึมที่มีลายเซ็นสั้นที่สุด (ซึ่งฉันเชื่อว่าเป็น BLS) ก็ยังมีลายเซ็นที่ยาวพอสมควร (เช่น 256 บิตสำหรับการรักษาความปลอดภัย 100 บิต) และไม่เหมือนกับกรณีของ MAC คือไม่สามารถตัดทอนได้
มีบริษัทหลายแห่งที่ใช้ลายเซ็นสำหรับรหัสผลิตภัณฑ์ของพวกเขา - ฉันคาดว่าพวกเขาจะเป็นส่วนน้อย