ไม่หากไม่มี "แคชข้อมูล" (ในเครื่อง) รหัสที่ "ฝ่ายสนับสนุนด้านเทคนิค" ให้มานั้นไม่สามารถขึ้นอยู่กับ "อย่างน้อยรหัสผู้ใช้ (จำนวนเต็ม) และวันหมดอายุ"
รายละเอียดเพิ่มเติม: คำถามถามถึงการรับรองความถูกต้อง (ครั้งเดียว) โดยที่
- มนุษย์สามารถป้อนข้อมูลได้อย่างง่ายดายผ่านช่องทางที่รับรองความถูกต้อง (ซึ่งไม่อยู่ภายใต้การแอบฟัง)
- แอปพลิเคชันไม่มีที่เก็บข้อมูลถาวร/เฉพาะผู้ใช้
ปัญหาหลักที่ฉันเห็นคือ "แคชข้อมูลเสียหาย": ในการตรวจสอบอินพุต อัลกอริทึมจะต้องเปรียบเทียบผลลัพธ์กับอินพุตอื่น
ตัวอย่างเช่น พิจารณาขั้นตอนการเข้าสู่ระบบตามแฮชที่ง่ายเกินไป:
ผู้ใช้ระบุรหัสผ่าน อัลกอริทึมใช้เป็นรหัสผ่านพร้อมกับสตริงที่แคชข้อมูลให้มา คำนวณแฮชของรหัสผ่านและเปรียบเทียบกับสตริง
หากไม่มีแคชข้อมูล อัลกอริทึมจะใช้งานได้เท่านั้น ฮาร์ดโค้ด ค่าต่างๆ เช่น ค่าที่มาพร้อมกับแอปพลิเคชันและไม่ได้ขึ้นอยู่กับอินพุตของผู้ใช้
ความคิดเห็น:
"เพื่อให้วันที่ปัจจุบันสามารถทำหน้าที่เป็นแป้นเวลาเดียว"
โปรดทราบว่าเพื่อให้แพดแบบใช้ครั้งเดียวมีความปลอดภัยอย่างสมบูรณ์ คีย์จะต้องสุ่มสิ่งนี้ไม่ได้เพิ่มความปลอดภัยใดๆ
อยู่นอกขอบเขตเนื่องจากไม่ถือว่าปลอดภัย หรืออยู่ในขอบเขตของคำถาม OPs:
หากคุณต้องการค่าฮาร์ดโค้ดสำหรับวันใดวันหนึ่ง วิธีที่ง่ายที่สุดสำหรับสิ่งนี้คือการใส่อิมเมจฮาร์ดโค้ดของฟังก์ชันทางเดียว (สร้างโดยฟังก์ชันแฮชการเข้ารหัส) ลงในแอปพลิเคชัน
จากนั้นฝ่ายสนับสนุนด้านเทคนิคสามารถให้ข้อความรหัสผ่านที่มนุษย์อ่านได้ (เปรียบเทียบ Stackexchange: วลีรหัสผ่านพจนานุกรมแบบยาว, Stackexchange: เหตุใดจึงต้องใช้อักขระสุ่มใน pw ) โดยที่ฝ่ายสนับสนุนด้านเทคนิคมี "ข้อความรหัสผ่านที่ถูกต้อง" ในแต่ละวัน
วลีรหัสผ่านสามารถระบุเป็นอินพุตโดยผู้ใช้ ภาพที่จะถูกนำไปเปรียบเทียบกับค่าฮาร์ดโค้ดที่เกี่ยวข้องกับวันนั้น อย่างไรก็ตาม สิ่งนี้ไม่ปลอดภัยด้วยเหตุผลหลายประการ:
(1) ค่าฮาร์ดโค้ด
- จะเหมือนกันสำหรับผู้ใช้ทั้งหมด เช่น ไม่สามารถมีรหัสผู้ใช้
- เมื่อข้อความรหัสผ่านรั่วไหล ใครก็ได้ ด้วยสามารถเข้าถึงแอพ
(2) วันที่ไม่ได้เพิ่มความปลอดภัยอย่างแท้จริง ยกเว้นว่าฝ่ายตรงข้ามจะต้องรู้ว่าวันที่ต่างกันมีข้อความรหัสผ่านที่แตกต่างกัน
ดังนั้นฉันจะ ขอแนะนำอย่างยิ่งกับสิ่งนี้.