Score:1

การเข้ารหัสข้อมูลขนาดเล็กด้วยรหัสคงที่และ IV ที่เพิ่มขึ้น

ธง br

ฉันมีอุปกรณ์บลูทูธที่ส่งพัสดุขนาดเล็กเป็นระยะๆ (โดยไม่ได้รับ) ฉันต้องการเข้ารหัสและรับรองความถูกต้องของข้อมูลโดยใช้ AES-128 มีคีย์สุ่มและไม่ซ้ำแบบฝังซึ่งถูกเบิร์นไปยังหน่วยความจำขณะใช้งานจริงและเครื่องรับจะทราบ ฉันมีโครงสร้างข้อความต่อไปนี้:

เคาน์เตอร์ น้ำหนักบรรทุก มายากล การขยายความ
4 ไบต์ 10 ไบต์ 4 ไบต์ 2 ไบต์

เคาน์เตอร์ ไม่ได้เข้ารหัสและจะเพิ่มขึ้นตามลำดับสำหรับแต่ละข้อความ (จะไม่ทำซ้ำ) และจะใช้เป็น IV ในโหมด AES-CTR นอกจากนี้ยังทำหน้าที่ป้องกันการโจมตีซ้ำ เช่น แพ็คเกจเก่าจะถูกละเว้น

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

การขยายความ ถูกละเว้นในด้านผู้รับและใช้เพื่อกรอกข้อมูลที่เข้ารหัสให้สมบูรณ์เป็น 16 ไบต์

Payload + Magic + Padding จะถูกเข้ารหัสก่อนส่ง เช่น

เคาน์เตอร์ ข้อมูลที่เข้ารหัส
4 ไบต์ 16 ไบต์

คำถามคือ:

  1. ผู้ฟังแบบพาสซีฟสามารถทำลายการเข้ารหัสนี้และ/หรือสร้างข้อความที่ถูกต้องได้หรือไม่
  2. นี่เป็นการให้การรับรองความถูกต้องด้วยหรือไม่ เนื่องจากไม่มีใครนอกจากผู้ถือกุญแจสามารถสร้างข้อความดังกล่าวได้
  3. ตกลงไหมที่จะใช้ IV/nonce โดยเติม 0 ข้างหน้าเคาน์เตอร์ ฉันควรต่อท้ายตัวนับเป็นตัวเลขสุ่ม (ซึ่งถูกเผาที่โรงงานด้วย) หรือไม่
  4. สิ่งที่ต้องใส่ในการเติม 0 หรือตัวเลขสุ่ม? จำเป็นหรือไม่?
  5. การใช้เลขมหัศจรรย์ด้วยวิธีนี้สมเหตุสมผลหรือไม่? ฉันจำเป็นต้องสร้างเวทมนตร์แบบสุ่มและส่งทั้งที่ไม่ได้เข้ารหัสและเข้ารหัสเพื่อให้ผู้รับตรวจสอบหรือไม่
  6. วิธีที่ถูกต้อง/เป็นที่ยอมรับสำหรับการเข้ารหัสและการรับรองความถูกต้องในการตั้งค่าดังกล่าวคืออะไร
Score:4
ธง in
  1. ผู้ฟังแบบพาสซีฟสามารถทำลายการเข้ารหัสนี้และ/หรือสร้างข้อความที่ถูกต้องได้หรือไม่

ผู้ฟังแบบพาสซีฟไม่ควรย้อนกลับ AES ดังนั้นการรับข้อความธรรมดาจึงเป็นไปไม่ได้ เว้นแต่จะรีสตาร์ทแต่ละเซสชันอย่างไรก็ตาม รูปแบบนี้จะเสี่ยงต่อการโจมตีด้วยข้อความธรรมดาของออราเคิล อ่านต่อ.

สำหรับการสร้างข้อความที่ถูกต้อง: นั่นไม่ใช่การโจมตีแบบพาสซีฟ

  1. นี่เป็นการให้การรับรองความถูกต้องด้วยหรือไม่ เนื่องจากไม่มีใครนอกจากผู้ถือกุญแจสามารถสร้างข้อความดังกล่าวได้

ไม่ หากคุณแสดงผู้ชายอยู่ตรงกลาง คุณสามารถเปลี่ยนข้อความทั้งหมดและปล่อยให้เวทมนตร์เหมือนเดิมได้ ในโหมด CTR ทุกบิตของข้อความธรรมดา / ข้อความไซเฟอร์เท็กซ์เป็นอิสระจากกัน นอกจากนี้ยังช่วยให้ผู้โจมตีทำการโจมตีด้วย oracle ข้อความธรรมดา (โดยการเปลี่ยนข้อความธรรมดาเล็กน้อยแล้วตรวจจับว่าระบบตอบสนองอย่างไร)

  1. ตกลงไหมที่จะใช้ IV/nonce โดยเติม 0 ข้างหน้าเคาน์เตอร์ ฉันควรต่อท้ายตัวนับเป็นตัวเลขสุ่ม (ซึ่งถูกเผาที่โรงงานด้วย) หรือไม่

ตราบใดที่ตัวนับไม่เคยทำซ้ำ โหมด CTR ค่อนข้างปลอดภัย - ตราบใดที่ใช้อย่างถูกต้อง ซึ่งไม่ใช่ในกรณีนี้

  1. สิ่งที่ต้องใส่ในการเติม 0 หรือตัวเลขสุ่ม? จำเป็นหรือไม่?

ไม่ สำหรับการเติมโหมด CTR นั้นไม่จำเป็น

  1. การใช้เลขมหัศจรรย์ด้วยวิธีนี้สมเหตุสมผลหรือไม่? ฉันจำเป็นต้องสร้างเวทมนตร์แบบสุ่มและส่งทั้งที่ไม่ได้เข้ารหัสและเข้ารหัสเพื่อให้ผู้รับตรวจสอบหรือไม่

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

  1. วิธีที่ถูกต้อง/เป็นที่ยอมรับสำหรับการเข้ารหัสและการรับรองความถูกต้องในการตั้งค่าดังกล่าวคืออะไร

หากคุณมี AES โหมด CCM จะเป็นโหมดปกติ


หมายเหตุ

  • รูปแบบที่คุณกำลังอธิบายดูเหมือนจะเหมาะสมกว่าสำหรับการเข้ารหัส AES โดยตรงหรือ AES-CBC ตัวอย่างเช่น หากคุณจะแพดและเข้ารหัสตัวนับ คุณสามารถใช้เป็น IV สำหรับ AES-CBC ถ้าจะใส่ค่า 02 ในการเติมไบต์ของข้อความ คุณจะมีช่องว่างภายในที่เข้ากันได้กับ PKCS#7 ข้อดีของสิ่งนี้คือบิตในการเข้ารหัสบล็อก AES ของข้อความทั้งหมดขึ้นอยู่กับกันและกัน ดังนั้นเวทมนตร์จะทำงานได้ดีขึ้น

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

  • แม้จะเปลี่ยนโหมดเป็น CBC ก็มี $1 \มากกว่า 2^{32}$ โอกาสที่ผู้โจมตีจะสร้างข้อความด้วยเวทมนตร์ที่ถูกต้อง เพียงแค่ลองสุ่ม ส่วนที่เหลือของข้อความอาจอ่านไม่ออก แต่การประมวลผลข้อความที่อ่านไม่ออกอาจไม่ใช่ความคิดที่ดีเช่นกัน อาจมีการใช้มาตรการตอบโต้เพิ่มเติมกับสิ่งนั้น (อย่างไรก็ตาม มาตรการส่วนใหญ่อาจนำไปสู่การโจมตีแบบ DoS)

br flag
ขอบคุณสำหรับคำตอบโดยละเอียด ฉันเดาว่าช่องโหว่สำคัญที่นี่คือ: "ในโหมด CTR ทุกบิตของข้อความธรรมดา / ข้อความเข้ารหัสไม่ขึ้นต่อกัน" แต่ฉันไม่ค่อยเข้าใจว่ามันหมายถึงอะไร
br flag
ไม่มีการรับประกันว่าผู้รับจะได้รับข้อความทั้งหมด ในความเป็นจริงการลดลงของแพ็คเกจเป็นเรื่องปกติ เรายังสามารถกู้คืนข้อความธรรมดาในกรณีนี้เมื่อใช้ AES-CBC ได้หรือไม่ นอกจากนี้ เพย์โหลดอาจแตกต่างกันสำหรับแต่ละข้อความ
Maarten Bodewes avatar
in flag
ในโหมด CTR คุณ XOR ข้อความธรรมดากับคีย์สตรีมทีละนิด ดังนั้นการพลิกบิตไซเฟอร์เท็กซ์ใดๆ ก็เพียงแค่พลิกบิตข้อความธรรมดาของตำแหน่งเดียวกัน เช่น. คุณสามารถเปลี่ยนบิตข้อความธรรมดาได้โดยไม่กระทบกับเวทมนต์
Maarten Bodewes avatar
in flag
ในโครงร่างที่ฉันอธิบาย ฉันบุและเข้ารหัสตัวนับเพื่อให้สามารถใช้เป็น IV ได้นั่นทำให้การถอดรหัส CBC ขึ้นอยู่กับตัวนับและ - แน่นอน - คีย์เท่านั้น
br flag
ทุกอย่างชัดเจนมากขึ้นแล้ว ฉันได้อ่านข้อกำหนดโหมด NIST CCM แล้ว ซึ่งอ่านง่ายอย่างน่าประหลาดใจ และฉันคิดว่าโหมดนี้เป็นโหมดที่ถูกต้องสำหรับแอปพลิเคชันของฉัน เท่าที่ฉันเข้าใจ มันไม่ได้รับผลกระทบจากช่องโหว่ของแผนเวทมนตร์ ซึ่งเป็นตัวเลือกที่ไม่ดีในตอนแรก ขอบคุณสำหรับความช่วยเหลือ

โพสต์คำตอบ

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