Score:0

จะใช้ nonce, counter และ IV ใน AES-256-CTR ได้อย่างไร

ธง id

คำนำ: ฉันไม่เข้าใจการเข้ารหัส มีคำถามที่คล้ายกันในกระดานนี้แต่ไม่ได้ให้คำตอบที่ฉันต้องการ

ฉันจะสร้าง IV ที่ถูกต้องโดยให้ nonce ได้อย่างไร สิ่งนี้เกี่ยวข้องกับเคาน์เตอร์หรือไม่?

ฉันกำลังสื่อสารแบบ 2 ทางกับโมดูลบลูทูธ (เป็นเซิร์ฟเวอร์ไปยังไคลเอ็นต์ของโทรศัพท์ของฉัน) และข้อมูลของมันถูกเข้ารหัสโดยใช้ AES-256-CTR ด้วยคีย์ 32B และตัวนับ 128 บิต (16B) หลังจากเข้าสู่ระบบสำเร็จ ฉันได้รับคีย์ 32B และ nonce 96 บิต (12B)

lib ที่ฉันใช้สำหรับการถอดรหัสต้องใช้ IV ฉันไม่เข้าใจว่ามันคืออะไร แต่ฉันได้ลองเชื่อม 12B nonce กับ '00 00 00 01' (ฐานสิบหก) เพื่อสร้างตัวนับและใช้เป็น IV ไม่มีลูกเต๋า

ฉันกำลังทดสอบอย่างไร ฉันกำลังจะผ่าน API ของโมดูลเพื่อถ่ายทอด "hello world" ผ่านบลูทูธจากเซิร์ฟเวอร์ ไคลเอนต์ได้รับสตริงที่เข้ารหัสตามที่คาดไว้ แต่ "hello world" เดียวกันนั้นจะถูกเข้ารหัสเป็นสิ่งที่แตกต่างกันในแต่ละครั้ง

รายละเอียดเพิ่มเติมหากจำเป็น!

forest avatar
vn flag
IV เป็นเพียงอีกคำหนึ่งสำหรับ nonce ใน CTR
Maarten Bodewes avatar
in flag
@forest โดยปกติ nonce จะเล็กกว่า IV; ประกอบด้วยบิตลำดับที่สูงกว่าเท่านั้น การสุ่มขนาดของตัวนับเต็มนั้นไม่มีเหตุผลเพราะคุณอาจต้องเข้ารหัสบิตน้อยลงเพื่อให้เกิดการชนกัน ถ้าส่วนสุดท้ายเป็นศูนย์บิตทั้งหมด อย่างน้อยคุณก็ทราบจำนวนช่องว่างระหว่างสอง nonce ที่ตามมา
forest avatar
vn flag
@MaartenBodewes ฉันได้ยินมาเสมอว่าทั้งสองสามารถใช้แทนกันได้ เว้นแต่ว่าคุณกำลังพูดถึงอินพุตจริงของรหัสบล็อกเองแทนที่จะเป็นพารามิเตอร์ของรหัสบล็อกในโหมด CTR
kelalaka avatar
in flag
@forest จริงๆ แล้ว NIST เรียกพวกเขาว่า counter-block เท่านั้น [หน้า 16 และดู 19 ด้วย](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf) และ
Score:2
ธง in

ฉันจะสร้าง IV ที่ถูกต้องโดยให้ nonce ได้อย่างไร สิ่งนี้เกี่ยวข้องกับเคาน์เตอร์หรือไม่?

คุณอาจไม่คาดหวังสิ่งนี้ แต่ขึ้นอยู่กับ; หลายแผนมีความปลอดภัยเท่ากัน (เช่น big endian vs little endian) โดยทั่วไปแม้ว่าค่าตัวนับจะเป็นจำนวนเต็ม big endian 128 บิตที่ไม่ได้ลงนาม nonce คือส่วนที่สำคัญที่สุด (ซ้ายสุด) ของจำนวนเต็มนั้น

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

ดังนั้นคุณจะมี:

NNNNNNNNNNNNNNNNNNNNNNNN 00000000

เป็นค่าเริ่มต้น (เป็นเลขฐานสิบหก โดย N แทนเลขฐานสิบหกของ nonce) โดยที่ด้านซ้ายเป็นส่วนที่สำคัญที่สุด แน่นอนว่านี่เป็นกรณีที่มี nonce 96 บิตและตัวนับ 32 บิต ค่าเริ่มต้นนี้เรียกกันทั่วไปว่า IV

เนื่องจากขนาดของ nonce อาจแตกต่างกันไปตามไลบรารีต่างๆ โดยปกติแล้ว การเพิ่มตัวนับจะทำโมดูลัส $2^{128}$โดยมีข้อเสียตรงที่ overflow ใน 32 bit ต่ำสุดจะส่งผลต่อ nonce โดยปกติจะขึ้นอยู่กับผู้ใช้ไลบรารี AES เพื่อทดสอบสิ่งนี้ (แต่คุณต้องการ $2^{32} * 16 = 64 \text{GiB}$ หรือเกือบ $69 \text{GB}$ ไปถึงที่นั่น)

แต่ "สวัสดีชาวโลก" เดียวกันนั้นถูกเข้ารหัสเป็นสิ่งที่แตกต่างกันในแต่ละครั้ง

ใช่ เป็นไปได้มากว่า nonce จะเปลี่ยนไปทุกครั้ง การเปลี่ยนแปลงนั้นหรือคีย์ หรือแม้แต่ทั้งคีย์และ nonce

โพสต์คำตอบ

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