หมายเลขบัตรเครดิตมาตรฐานมีเอนโทรปีจำกัด ต่อ ISO/IEC 7812 ตัวเลข 6 หลักแรกถูกกำหนดไว้แล้วสำหรับผู้ออกบัตรที่กำหนด และข้อสันนิษฐานที่ง่ายที่สุดคือทราบโดยผู้โจมตี ตัวเลขสุดท้ายเป็นหน้าที่สาธารณะของผู้อื่น สำหรับหมายเลขบัตรเครดิต 16 หลัก จะเหลือ 9 หลัก (เอนโทรปี <30 บิตที่ดีที่สุด) สามารถเพิ่มได้เพียงเล็กน้อย (เช่น 5 บิต) โดยใช้วันหมดอายุ
นี่หมายความว่าเราไม่สามารถใช้ฟังก์ชันที่รวดเร็วและเป็นสาธารณะได้ (เช่นเดียวกับแฮช เว้นแต่จะระบุไว้เป็นอย่างอื่น) และรับความเป็นทางเดียวตามที่ต้องการ และการทำงานสาธารณะใดๆ ที่ช้าจะมีการรักษาความปลอดภัยที่จำกัด นอกจากนี้ ขนาดยังเล็กเกินไปสำหรับการเข้ารหัสคีย์สาธารณะ
ฉันสรุปได้ว่าเราใช้การเข้ารหัสแบบสมมาตรและรหัสลับเท่านั้น รูปแบบการรักษาการเข้ารหัส ไม่อยู่. เรายังสามารถใช้รูปแบบ รหัสยืนยันข้อความแต่เราต้องกลัวการชนกัน และมันจะให้การรับประกันความสมบูรณ์ที่แข็งแกร่งน้อยกว่า FPE เล็กน้อย
ตามคำขอใน ความคิดเห็นฉันจะให้รายละเอียดเกี่ยวกับ MAC ที่ฟอร์แมตใหม่ ฉันถือว่าผลลัพธ์ต้องเป็นทศนิยม 16 หลักโดยไม่มีข้อ จำกัด อื่น ๆ นี่หมายความว่าเราเต็มใจที่จะยอมรับความน่าจะเป็นของการชนกันในระดับต่ำ: สำหรับ $n$ หมายเลขไพ่ที่ความน่าจะเป็นจะถูกขีดไว้บน $n\,(n-1)/(2\cdot10^{16})$; ดู นี้. ตัวอย่างเช่น เราต้องพอใจกับความมั่นใจ 99% ว่าไม่มีการชนกันระหว่างหมายเลขบัตรมากถึง 14 ล้านใบ (เลือกโดยไม่ทราบรหัส)
- สมมติรหัสลับแบบตายตัวที่มีเอนโทรปีอย่างน้อย 128 บิต
- คำนวณ เอชแมค-SHA-256 ของหมายเลขบัตรเครดิตและคีย์ด้วย
ขนาดเอาต์พุต
= 32 ไบต์
- พิจารณาเอาต์พุตเป็นจำนวนเต็มเข้า $[0,2^{256})$ (ต่อการประชุม big-endian) ลดโมดูโล $10^{16}$และแสดงผลลัพธ์เป็นทศนิยม 16 หลัก (โดยมีเลขศูนย์นำหน้าหากจำเป็น) สร้างโทเค็น
โดยพื้นฐานแล้วเป็นไปไม่ได้ที่จะแปลงโทเค็นนั้นโดยไม่ต้องเข้าถึงคีย์หรืออุปกรณ์ที่มีคีย์ แต่เป็นไปได้ด้วยกุญแจและความพยายามพอสมควร โดยการลองผิดลองถูกกับหมายเลขบัตรเครดิต
หากเราต้องการทำให้การกลับด้านด้วยคีย์ค่อนข้างยาก เราสามารถแทนที่ HMAC-SHA-256 ด้วย อาร์กอน2 (หมายเลขบัตรเครดิตถูกป้อนเป็นรหัสผ่าน, คีย์เป็นคีย์, เกลือคงที่, ความยาวแท็ก
= 32 ไบต์) กำหนดให้ทำงานช้าลงเท่าที่จะทนได้ ซึ่งไม่ได้เปลี่ยนความน่าจะเป็นของการชนกัน แต่ความปลอดภัยได้รับการปรับปรุง: สมมติว่า Argon2 เป็นพารามิเตอร์เป็นเวลา 0.1 วินาทีของเวลาในการคำนวณของพีซีบางเครื่อง ผู้โจมตีมีพีซีที่คล้ายกัน 100 เครื่อง หมายเลขบัตรเครดิต 9 หลักสุ่มทั้งหมด 6 เป็นที่ทราบ และหลักสุดท้ายคือการตรวจสอบตามธรรมเนียม จากนั้นจะต้องใช้เวลาโดยเฉลี่ยหนึ่งล้านวินาที (11.6 วัน) เพื่อสลับแฮชที่กำหนด หรือ 1 วินาทีเพื่อสลับหนึ่งแฮชจากหนึ่งล้านแฮชที่กำหนด
หากเราไม่สามารถอยู่ร่วมกับความเสี่ยงจากการชนกัน เราต้องใช้การเข้ารหัสที่รักษารูปแบบที่แท้จริง แต่เราจะสูญเสียความยากในการสลับกลับสำหรับผู้ที่ถือกุญแจ FPE ที่ยากต่อการคำนวณอย่างมากในทิศทางย้อนกลับนั้นไม่ใช่มาตรฐาน แต่เป็นไปได้ โปรดดูสิ่งนี้ คำถาม.