ฉันมีอุปกรณ์ที่ต้องสื่อสารกับเซิร์ฟเวอร์ผ่านช่องสัญญาณที่รับรองความถูกต้องและเข้ารหัสร่วมกัน การรับรองความถูกต้องของเซิร์ฟเวอร์ค่อนข้างง่าย เนื่องจากฉันสามารถฝังใบรับรอง CA ในเฟิร์มแวร์ของอุปกรณ์และตรวจสอบลายเซ็นของใบรับรองของเซิร์ฟเวอร์ได้ ปัญหาคือการตรวจสอบอุปกรณ์กับเซิร์ฟเวอร์
โดยปกติฉันสามารถลงนามในใบรับรองของอุปกรณ์ได้เช่นกัน แต่ไม่มีสภาพแวดล้อมที่เชื่อถือได้ตั้งแต่การผลิตจนถึงการปรับใช้ เช่น ฉันไม่ต้องการให้โรงงานผลิตเข้าถึงคีย์ส่วนตัวของเราหรือความสามารถด้านลายเซ็นใดๆ โดยใช้ CA ของเรา แต่เรามีรหัส QR บนอุปกรณ์และบุคลากรที่เชื่อถือได้ในภาคสนามเพื่อทำงานด้วย ดังนั้นเจ้าหน้าที่จะทำการตรวจสอบสิทธิ์โดยการอ่านคิวอาร์โค้ด อย่างไรก็ตาม ในระหว่างการดำเนินการนี้ โดยทั่วไปแล้วอุปกรณ์จะไม่ได้รับการจ่ายไฟ ดังนั้น TOTP ปกติ ตัวบ่งชี้ภาพ ฯลฯ จะไม่สามารถใช้ได้
ความคิดของฉันคือการใส่ตัวเลขสุ่มและรูปแบบที่เข้ารหัส (โดยคีย์ AES ที่อุปกรณ์สร้างขึ้นแบบสุ่ม) บนรหัส QR (หรือ MAC บางประเภทก็เป็นไปได้เช่นกัน อาจผูก ID อุปกรณ์) เมื่อบุคลากรอ่านรหัส QR ค่าเหล่านี้จะถูกเก็บไว้ในฐานข้อมูล เมื่ออุปกรณ์รับรองความถูกต้องและเชื่อมต่อกับเซิร์ฟเวอร์ อุปกรณ์จะส่งคีย์ AES ลับผ่านช่องทางที่เข้ารหัส ขณะนี้เซิร์ฟเวอร์สามารถตรวจสอบได้ว่าหมายเลขสุ่มในฐานข้อมูลนั้นได้รับการเข้ารหัสโดยอุปกรณ์จริง ๆ และขณะนี้สามารถลงนามในใบรับรองของอุปกรณ์ได้จากนั้นเซิร์ฟเวอร์จะลบค่าสุ่มออกจากฐานข้อมูลและการเชื่อมต่อเพิ่มเติมสามารถตรวจสอบได้ด้วยลายเซ็น
ฉันเชื่อว่าสิ่งนี้ปลอดภัยพอๆ กับข้อจำกัดเหล่านี้ แต่ฉันไม่สบายใจที่จะต้องแสดงคีย์ AES เพื่อพิสูจน์ตัวตน แต่ฉันคิดวิธีอื่นไม่ได้ มีปัญหาใดๆ กับโครงการนี้หรือไม่ หากบุคลากรไม่ได้ถูกหลอกให้อ่านรหัส QR ที่เป็นอันตราย? การตรวจสอบสิทธิ์แบบออฟไลน์ดังกล่าวเป็นปัญหาที่ทราบหรือไม่ หากเป็นเช่นนั้น คำหลักสำหรับการวิจัยเพิ่มเติมคืออะไร มีวิธีที่ดีกว่าในการรับรองความถูกต้องด้วยข้อจำกัดเหล่านี้หรือไม่
แก้ไข. ฉันเพิ่งรู้ว่าฉันสามารถใส่รหัสสาธารณะของอุปกรณ์ลงในรหัส QR และท้าให้อุปกรณ์พิสูจน์ว่ามีรหัสส่วนตัวที่เกี่ยวข้องด้วย