Score:1

block-cipher จะถือว่าปลอดภัยได้หรือไม่หากการเปลี่ยนแปลงบิตของอินพุตนำไปสู่การเปลี่ยนแปลงโอกาส 50% สำหรับทุกบิตเอาต์พุต -> เลขกลม?

ธง at

Block-cipher ใช้การผกผันตัวเอง ($f(ฉ(x)) = x $) การดำเนินการที่จะนำไปใช้กับข้อความธรรมดาและมักจะมีค่าคงที่บางอย่างซึ่งสามารถอิงตามคีย์ได้ เพื่อให้ได้รับความปลอดภัย การดำเนินการดังกล่าวซึ่งตีความอินพุตในลักษณะต่างๆ กันจะสอดคล้องกัน กระบวนการนี้ทำซ้ำหลายรอบด้วยคีย์ที่แตกต่างกัน ในกรณีที่เหมาะสมที่สุด อินพุตแบบสุ่มจะอยู่ภายในวงจรปิด (หากใช้รหัสบล็อกซ้ำแล้วซ้ำอีก) โดยมีขนาดรอบแบบสุ่ม (สม่ำเสมอ คีย์สุ่มที่กำหนด)

จากการทดสอบรอบ ๆ ฉันสังเกตเห็นว่าสิ่งนี้สามารถเกิดขึ้นได้ด้วยการดำเนินการง่าย ๆ ของ XOR, Bit-Rotation และการเพิ่ม (เรียกว่า ARX)

เช่น: สำหรับหนึ่งรอบที่มีการป้อนข้อมูล $m$:

$$ ม = XOR(ม., R_i) \ ม = หมุนบิต(m,5) \ ม = ม + K_i $$

$R_i, K_i$ เป็นแป้นกลมสำหรับกลม $i$.

  • XOR เพียงอย่างเดียวไม่ปลอดภัยเนื่องจากการดำเนินการนั้นเป็นเพียงบิตเดียวโดยไม่มีผลกระทบซึ่งกันและกัน

  • เพิ่มการหมุนบิตเพื่อเพิ่มผลกระทบของบิตเดียวไปยังบิตอื่น ๆ ตัวมันเองยังไม่ปลอดภัยเพราะมันมีผลกระทบเพียงบิตเดียวเท่านั้น

  • การบวกถูกเพิ่มเป็นการตีความอินพุตประเภทที่ 2 (เป็นตัวเลขแทนบิต) ที่นี่บิตสามารถกระทบกัน

ด้วยวิธีนี้ฉันจึงมีการกระจายแบบสม่ำเสมอที่ดี (แต่ไม่สมบูรณ์แบบ) ของความยาวรอบที่แตกต่างกัน (ให้คีย์สุ่มและอินพุต)


คำถามคือต้องสมัครกี่รอบถึงจะปลอดภัย? ต้องมีขนาดบิตรวมเป็นอย่างน้อย เพื่อให้ทุกบิตสามารถเข้าถึงตำแหน่งอื่นๆ ได้ทุกตำแหน่งเนื่องจากการหมุนบิต

นี่คือบางส่วนที่เกี่ยวข้อง เกลียว สำหรับเออีเอส

แต่ในฐานะที่เป็นเมตริกทั่วไป (สำหรับบล็อกรหัสที่กำหนดเอง) ความปลอดภัยสามารถวัดได้ด้วยผลกระทบของการเปลี่ยนแปลงบิตในอินพุตไปยังทุกบิตของเอาต์พุตหรือไม่

ในกรณีที่ดีที่สุด การเปลี่ยนแปลงบิตที่เป็นไปได้ของทุกอินพุตที่เป็นไปได้ควรนำไปสู่บิตที่แตกต่างกัน 50% ที่เอาต์พุต (โดยที่แต่ละบิตจะแตกต่างกันในจำนวนที่เท่ากัน)

จำนวนรอบสามารถเพิ่มได้จนกว่าจะถึงระดับความปลอดภัยที่เหมาะสม

user2357 avatar
us flag
เท่าที่ทราบ ความไวต่อข้อความล้วนเป็นเงื่อนไขที่จำเป็น ไม่ใช่เงื่อนไขเพียงพอ
kelalaka avatar
in flag
ที่เกี่ยวข้อง [มี block cipher ที่ปลอดภัยสำหรับ n รอบ แต่ไม่ปลอดภัยเมื่อรอบเพิ่มขึ้น](https://crypto.stackexchange.com/q/91929/18298)
Score:2
ธง si

แต่ในฐานะที่เป็นเมตริกทั่วไป (สำหรับบล็อกรหัสที่กำหนดเอง) ความปลอดภัยสามารถวัดได้ด้วยผลกระทบของการเปลี่ยนแปลงบิตในอินพุตไปยังทุกบิตของเอาต์พุตหรือไม่

เล็กน้อยไม่มี หากฟังก์ชันการปัดเศษของรหัสบล็อกเป็นแบบเส้นตรง จำนวนรอบจะไม่ทำให้การกลับด้านทำได้ยากขึ้น

คุณยังไม่ได้อธิบายว่าคุณกำลังพูดถึงความสับสน การแพร่กระจาย หรือทั้งสองอย่าง

ความสับสนกำหนดความสัมพันธ์ระหว่าง กุญแจ และไซเฟอร์เท็กซ์: แต่ละบิตของไซเฟอร์เท็กซ์ขึ้นอยู่กับหลายบิตของคีย์ ดังนั้นหากบิตใดของคีย์เปลี่ยนไป ประมาณ 50% ของบิตของไซเฟอร์เท็กซ์จะเปลี่ยนไป

การแพร่กระจายกำหนดความสัมพันธ์ระหว่าง ข้อความธรรมดา และไซเฟอร์เท็กซ์: แต่ละบิตในไซเฟอร์เท็กซ์ขึ้นอยู่กับหลายบิตของข้อความธรรมดา ดังนั้นหากบิตใดของข้อความธรรมดามีการเปลี่ยนแปลง ประมาณ 50% ของบิตของข้อความไซเฟอร์จะเปลี่ยนไป

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

นอกจากนี้ การเข้ารหัสแบบบล็อกในตัวเองจะปลอดภัยในระดับ IND-CPA ที่ดีที่สุดเท่านั้น (รูปแบบการรักษาความปลอดภัยที่อ่อนแอที่สุด) หากบล็อกหนึ่งบล็อกได้รับการเข้ารหัสด้วยคีย์ที่กำหนด บล็อกที่มีการเข้ารหัสมากขึ้นหมายความว่าบล็อกข้อความล้วนที่เหมือนกันสองบล็อกจะมีข้อความเข้ารหัสเหมือนกัน ซึ่งเป็นการแยกแยะไม่ออก เพื่อให้ IND-CPA ปลอดภัย ต้องใช้โหมดการทำงาน เช่น โหมด CTR (เปลี่ยนให้เป็นรหัสสตรีม) หรือโหมด CBC (บล็อกข้อความรหัสเชื่อมโยง) แต่ถึงอย่างนั้นก็ไม่ "ปลอดภัย" เนื่องจากผู้โจมตีสามารถแก้ไขข้อความเข้ารหัสและทำให้เหยื่อถอดรหัสเพื่อให้ได้ข้อความธรรมดาที่ไม่ถูกต้อง ดังนั้นโหมดการเข้ารหัสที่ตรวจสอบความถูกต้องจึงเป็นสิ่งจำเป็นสำหรับการรักษาความปลอดภัย IND-CCA3 ที่เหมาะสม น่าจะเป็นโหมด GCM, SIV, GCM-SIV หรือ OCB และถึงแม้จะมีข้อแม้อยู่บ้าง เนื่องจากโหมดดังกล่าวต้องการ "nonce" (Number used ONCE) ที่กำจัด (GCM, OCB) หรือลดความปลอดภัย (GCM-SIV, SIV) หากใช้ซ้ำ

user2357 avatar
us flag
ฉันคิดว่าความสับสนเกี่ยวข้องกับความสัมพันธ์ระหว่างคีย์/ข้อความธรรมดาและข้อความเข้ารหัสที่จะกล่าวถึง ในขณะที่การแพร่กระจายเกี่ยวข้องกับการแพร่กระจายของการเปลี่ยนแปลงของคีย์/ข้อความธรรมดาในข้อความเข้ารหัส ใช่ไหม
J. Doe avatar
at flag
ขอบคุณสำหรับการตอบสนอง ฉันยังไม่มั่นใจ 100% (แต่เพียงพอที่สิ่งนี้จะไม่ได้ผลในทางปฏิบัติ) ฉันทำผิดพลาดที่ไม่ได้ระบุสิ่งที่ได้รับและสิ่งที่ต้องการ (ให้: นาที 1 ที่ไม่ใช่เชิงเส้น + นาที 1 การดำเนินการอื่น ๆ ซึ่งตีความอินพุตแตกต่างกัน อย่างน้อยหลายรอบที่ทุกบิตของข้อความธรรมดา / คีย์สามารถมีผลกระทบ ที่รหัสทุกบิตต้องการ: IND-CPA ความปลอดภัยเพียงพอสำหรับกรณีนี้) อย่างไรก็ตาม คุณทำให้ฉันเชื่อว่าต้องทำสถิติให้ละเอียดกว่าที่คาดไว้มาก ตัวอย่างเช่น บิตที่ระบุอาจเป็น 1 เสมอ ถ้าอีกบิตหนึ่งของข้อความ/คีย์ธรรมดาก็เป็น 1 เช่นกัน
J. Doe avatar
at flag
สถิติระดับบิตจะไม่สามารถติดตามสิ่งนี้ได้สำหรับค่าบิตที่กำหนด ณ ตำแหน่งใดตำแหน่งหนึ่ง จำเป็นต้องติดตามโอกาสของการเปลี่ยนแปลงในไซเฟอร์เท็กซ์สำหรับสมาชิกแต่ละตัวของชุดพลังงานของค่าบิตอื่นๆ ทั้งหมด (ยกเว้นชุดเต็ม) ซึ่งไม่สามารถทำได้ในแอปพลิเคชันจริง เช่น. โอกาสเปลี่ยนบิตแรกจาก 1 เป็น 0 เนื่องจากบิตที่ 3 และ 6 เป็น 1 และ 7 บิตเป็น 0 สมมติว่าทำสถิติแบบนี้แล้ว และทำได้ประมาณ 50% สำหรับสมาชิกแต่ละตัวของชุดพลังงาน คุณยังเห็น ความเป็นไปได้ที่ข้อมูลจะรั่วไหล (ถ้าใช่ กรุณายกตัวอย่าง)?

โพสต์คำตอบ

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