บันทึก: คำถามนี้ตั้งอยู่บนสมมติฐานของฉันว่า $X$ เป็น "ตัวเลขสุ่มอย่างแท้จริง" ก็ต่อเมื่อความยาวที่วัดเป็นบิตเท่ากับเอนโทรปีที่วัดเป็นบิตกล่าวอีกนัยหนึ่งเมื่อทุกๆ $X$ ถูกสร้างขึ้นโดยการโยนเหรียญแบบสุ่ม
สมมติว่าฉันมีตัวเลขสุ่มจริงๆ $R$ ขนาด 256 บิต (เอนโทรปี 256 บิต) และตัวเลขสุ่มอย่างแท้จริง $S$ ความยาว $n * 256$, ที่ไหน $n$ เป็นจำนวนธรรมชาติ จึงมี $n * 256$ บิตของเอนโทรปี
ตอนนี้ฉันได้รับสี่คีย์ $T_1$ ถึง $T_4$ จาก $R$
- $T_1 = \text{concat}(R, \text{... n ครั้ง ...}, R)$
- คำนวณ $t_1 = \text{sha256}(R)$, $t_2 = \text{sha256}(t_1)$, ..., $t_n = \text{sha256}(t_{n-1})$และทำ $T_2=\text{concat}(t_1, ..., t_n)$.
- $T_3$ คำนวณเหมือนกับด้านบน แต่ใช้ HMAC แทน sha256
- $T_4 = \text{hkdf_expand}(R, \text{null}, n * 256 / 8)$.
ในที่สุดฉันก็คำนวณ $K_i = T_i\text{ xor }S$.
เอนโทรปีมีกี่บิต $K_1$, $K_2$, $K_3$ และ $K_4$ มี?
การคาดเดาที่มีความสุขของฉัน:
- $T1$ จะมีเอนโทรปีมากที่สุดเท่าที่ $R$เนื่องจากการต่อข้อมูลซ้ำไม่ได้เพิ่มเอนโทรปีของเอาต์พุต แต่ฉันสงสัยว่ามันจะไม่ลดลงเช่นกัน
- $\text{sha256}$ และ $\text{HMAC}$ เชื่อว่าจะรักษาบิตของเอนโทรปีของการป้อนข้อมูล แต่ตั้งแต่กระบวนการสร้าง $T_2$ และ $T_3$ ถูกกำหนดขึ้นจากการคำนวณ $R$เอนโทรปีของ $T_2$ และ $T_3$ จะเท่ากับประมาณ $T1$.
- ไม่มีความคิดเกี่ยวกับ $T_4$. ฉันเดาประโยชน์ของ $\text{hkdf_expand}$ เริ่มทำงานเมื่ออินพุตไม่ใช่ตัวเลขสุ่มอย่างแท้จริง
เกี่ยวกับทุกๆ $K_i$, ฉันไม่แน่ใจ. เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ว่า XORting ตัวเลขสุ่มจริง ๆ สองตัวให้ตัวเลขสุ่มจริง ๆ ดังนั้นบิตของเอนโทรปีของเอาต์พุตจึงยังคงมีความยาว แต่เนื่องจาก $T_i$มันไม่ใช่ตัวเลขสุ่มอีกต่อไป ฉันไม่รู้ว่าจะเกิดอะไรขึ้นที่นี่
สัญชาตญาณของฉันบอกฉันว่าเอนโทรปีของ $S$ จะถูกรักษาไว้ ($n * 128$ บิต) เนื่องจาก $K_i$ เทียบเท่ากับการเข้ารหัส $T_i$ โดยใช้ $S$ เป็นคีย์แพดแบบใช้ครั้งเดียวทำให้ $T_i$ หรือ $S$ ไม่แตกหักในทางทฤษฎีดังนั้น $K_i$ ยังคงเป็นตัวเลขสุ่มอย่างแท้จริง