Score:2

รูปแบบการรักษาฟังก์ชันแฮช

ธง in

เรามีกรณีการใช้โทเค็นข้อมูลบัตรเครดิตและส่งคืนมูลค่าโทเค็นหลังจากรักษารูปแบบไว้

ตามหลักการแล้ววิธีนี้ควรเป็นวิธีหนึ่ง และการปฏิบัติตาม FPE อาจไม่ใช่ทางออกที่ดีที่สุด กรุณาแนะนำวิธีแก้ปัญหาที่ดีที่สุดที่สามารถให้ได้ที่นี่

Score:9
ธง ng

หมายเลขบัตรเครดิตมาตรฐานมีเอนโทรปีจำกัด ต่อ 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 ที่ยากต่อการคำนวณอย่างมากในทิศทางย้อนกลับนั้นไม่ใช่มาตรฐาน แต่เป็นไปได้ โปรดดูสิ่งนี้ คำถาม.

user3336696 avatar
in flag
วิธีที่ดีที่สุดที่คุณแนะนำสำหรับ MAC ที่ฟอร์แมตใหม่คืออะไร คำแนะนำใด ๆ เกี่ยวกับวิธีที่ดีที่สุดที่คุณใช้ FPE นอกจากนี้ ฉันมีความคิดแปลกๆ ในการรับข้อความ ทำ HASH แปลงเป็นทศนิยม และเลือกตัวเลขสุ่มหลังจากตรวจสอบการชนกัน คุณมีความคิดเห็นอย่างไรกับเรื่องนี้ ขอขอบคุณคำแนะนำของคุณ
ar flag
@ user3336696: หากคุณสามารถ "ยืนยันการชนกัน" ได้ นั่นหมายความว่าคุณต้องมีฐานข้อมูลของหมายเลขบัตรโทเค็นทั้งหมดอยู่ที่ไหนสักแห่ง หากฐานข้อมูลมีหมายเลขบัตรเดิมอยู่ด้วย (หรือแฮชที่ป้องกันการชนกัน) คุณเพียงแค่กำหนดโทเค็นแบบสุ่มที่ไม่ซ้ำกันให้กับหมายเลขบัตรแต่ละใบ และปัญหาจะกลายเป็นเรื่องเล็กน้อย (ยกเว้นการรักษาความปลอดภัยของฐานข้อมูล!)หากไม่เป็นเช่นนั้น คุณจะตรวจสอบได้อย่างไรว่าการชนกันนั้นเป็นการชนกันระหว่างหมายเลขบัตรที่แตกต่างกันสองหมายเลข หรือเพียงแค่หมายเลขบัตรเดียวกันที่ถูกโทเค็นสองครั้ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา