Score:0

การตั้งค่าเอาต์พุต AES Sbox เป็น 0

ธง cn

จะเกิดอะไรขึ้นหากตั้งค่า AES Sboxes ให้เอาต์พุตเป็น 0 เสมอ ใครสามารถรับกุญแจโดยการทำเช่นนั้น? หรือจะเกิดอะไรขึ้นถ้าไม่มี Sbox?

Score:4
ธง ru

การตั้งค่า $S$-box ให้เอาต์พุตเป็นศูนย์เสมอหมายความว่าการเข้ารหัส AES จะส่งออกคีย์รอบสุดท้ายเสมอ โดยไม่คำนึงถึงอินพุต หากต้องการดูสิ่งนี้ไม่ว่าในรอบสุดท้ายทุกไบต์จะถูกแทนที่ (เช่นตั้งค่าเป็นศูนย์ในกรณีนี้) จากนั้นเลื่อนต่อ ShiftRows แล้วเพิ่มคีย์รอบสุดท้าย

สำหรับ AES-256 และ AES-192 มีข้อมูลไม่เพียงพอในคีย์รอบสุดท้าย 128 บิตเพื่อระบุบิตของตัวแปรเข้ารหัสลับทั้งหมดโดยเฉพาะ แต่มีข้อมูลจำนวนมากที่จัดเตรียมไว้ให้สำหรับ AES-128 ตารางเวลาคีย์สามารถย้อนกลับได้และกู้คืนตัวแปรเข้ารหัสลับได้

ถ้าไม่มี $S$-boxes ฟังก์ชันอื่นๆ เป็นแบบเส้นตรงในการทำงาน และฟังก์ชันทั้งหมดจะหมายความว่าเอาต์พุตเป็น an ปรับแต่งฟังก์ชันของอินพุต. ฟังก์ชั่นดังกล่าวอ่อนแออย่างมากในการเข้ารหัส

cn flag
ขอบคุณสำหรับคำตอบ เหตุใด AES 256 จึงไม่เสี่ยงต่อจุดอ่อนประเภทนี้ของการตั้งค่าเอาต์พุต SBOX เป็น 0 ในขณะที่ AES 128 เป็นอย่างไร
Daniel S avatar
ru flag
ขนาดบล็อกของ AES หมายความว่ามีการเผยแพร่ข้อมูล 128 บิตพอดี ซึ่งช่วยลดบิตของคีย์ที่ไม่รู้จักลง 128 บิตได้อย่างมีประสิทธิภาพ ในกรณีของ AES-128 สิ่งนี้จะลดบิตที่ไม่รู้จักลงเหลือ 0 และด้วย AES-256 จะลดจำนวนคีย์ที่เป็นไปได้เป็น $2^{128}$ แทนที่จะเป็น $2^{256}$
poncho avatar
my flag
@hooujki: แน่นอน โดยทั่วไปเราไม่สนใจค่าคีย์ที่แน่นอน แต่เรากลับสนใจว่ากุญแจนั้นจะบอกอะไรเรา นั่นคือข้อมูลเกี่ยวกับการเปลี่ยนแปลงของรหัส ปรากฎว่าสำหรับ AES ที่มี all-0 sbox สำหรับขนาดคีย์ใดๆ เอาต์พุตไซเฟอร์เท็กซ์เดียวจะบอกเราทุกอย่างเกี่ยวกับการแปลง (และด้วยเหตุนี้ ความจริงที่ว่าเราไม่สามารถเรียนรู้อะไรเพิ่มเติมเกี่ยวกับคีย์ได้นั้นมักจะไม่สำคัญ)
cn flag
@DanielS คุณช่วยอธิบายให้ง่ายขึ้นได้ไหม ฉันเข้าใจแนวคิดของ AES128 เนื่องจากมันส่งออกค่า 128 บิตในตอนท้าย เราจะได้คีย์รอบสุดท้ายแล้วคำนวณส่วนสำคัญอื่นๆ ใหม่ AES256 ยังคงส่งออก 128 บิต แต่มีคีย์ยาว 256 ดังนั้นเราจึงได้คีย์ที่ถูกต้องเพียง 128 บิตและจะต้องบังคับ 128 บิตอื่น ๆ แต่เป็นไปไม่ได้ (ในปัจจุบัน)
cn flag
@poncho เราสามารถสร้างคีย์ทั้งหมดที่รู้เฉพาะคีย์รอบสุดท้ายได้หรือไม่ ความรู้ของคีย์รอบสุดท้ายทำให้โครงร่างไม่ปลอดภัยได้อย่างไร คุณหมายถึงอะไรโดยการแปลง?
poncho avatar
my flag
@hooujki: โดย 'transform' จุดประสงค์ของ block cipher คือการแปลงบล็อคข้อความธรรมดาเป็นบล็อค ciphertext (และโดยทั่วไปจะแปลงกลับไม่ได้ด้วย sbox ของ all-0 แต่ไม่ต้องสนใจตอนนี้) เป้าหมายด้านความปลอดภัยสำหรับบล็อกรหัสคือการทำให้ผู้โจมตีไม่สามารถคาดการณ์การแมปนี้สำหรับบล็อกข้อความธรรมดา/ข้อความเข้ารหัสที่เขาไม่ได้รับ โครงร่างไม่ปลอดภัยเนื่องจากทำให้ข้อความธรรมดาที่เป็นไปได้ทั้งหมดเป็นไซเฟอร์เท็กซ์เดียว ดังนั้นหากคุณเห็นข้อความรหัสเดียว คุณสามารถคาดเดาได้ว่าข้อความดังกล่าวจะจัดการกับข้อความธรรมดาอย่างไร
cn flag
@poncho สมมติว่าฉันมีความเป็นไปได้ที่จะจัดการการดำเนินการ SBOX ให้ตั้งค่าเป็น 0 หรือปล่อยให้ทำงานตามปกติ ฉันสามารถตั้งค่าเป็นเอาต์พุต 0 ก่อนเพื่อดึงคีย์รอบสุดท้าย แต่คีย์รอบอื่น ๆ ล่ะ ฉันจะดึงข้อมูลที่มีเฉพาะคีย์สุดท้ายได้อย่างไร
poncho avatar
my flag
@hooujki: วิธีที่ชัดเจนคือตั้งค่า SBOX ให้เป็นเส้นตรง จากนั้นคู่ข้อความธรรมดา/ข้อความเข้ารหัสจะให้ชุดของสมการเชิงเส้น (ใน $GF(2)$) บนคีย์บิต (คีย์ดั้งเดิมหรือคีย์ย่อย ขึ้นอยู่กับว่าการเปลี่ยนแปลง SBOX ของคุณมีผลกับการตั้งเวลาคีย์หรือไม่ ). โดยการลองใช้ชุดสมการเชิงเส้นที่แตกต่างกันมากพอ (2 หากการเปลี่ยนแปลงของคุณมีผลกับกำหนดการสำคัญ 15 หากไม่ใช่) คุณควรจะได้สมการเชิงเส้นที่เพียงพอในการหาค่าของคีย์ใหม่
cn flag
@poncho ขอบคุณ ฉันได้เห็นโครงสร้างภายในของ AES 192 และ 256 แล้ว และคีย์สุดท้ายดูเหมือนจะมีเพียง 128 บิตเท่านั้น เมื่อเทียบกับคีย์กลมอื่นๆ ซึ่งเป็น 256 บิต ดังนั้นการสร้างคีย์ forelast ขึ้นใหม่จึงยากเนื่องจากเราพลาดอีกครึ่งหนึ่งของคีย์?

โพสต์คำตอบ

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