ฉันจะสร้าง 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