Score:1

การหาค่าตัวเลขสุ่มจากตัวเลขสุ่ม

ธง ua

ถ้าฉันมี "ตัวเลขสุ่มจริงๆ" $K$ ของ $L$ บิต (ไม่ว่า "สุ่มอย่างแท้จริง" หมายถึงอะไร ... ค่าจากการแจกแจงแบบปกติเป็นจำนวนสุ่มจริงหรือเฉพาะการแจกแจงแบบเดียวกันเท่านั้นที่ถือว่า "สุ่มอย่างแท้จริง") และ "ตัวเลขสุ่มอย่างแท้จริง" $T$ ของ $M \le L$ บิต

ซึ่งอัลกอริทึมเลขคณิต/บิตระหว่าง $K$ และ $T$ สามารถสร้างตัวเลขสุ่มที่แท้จริงใหม่ได้หรือไม่ ถ้า $M=L$, เป็น $K + T$ หรือ $K\ xor\ T$ ตัวเลขสุ่มจริงหรือ? หรือถ้า $M\ltL$, ทำวิธีการเช่น HKDF-ขยายฉลาก, HKDF-สารสกัดหรือเพียงแค่ sha256 เกิน $K$ และ $T$ สร้างตัวเลขสุ่มอย่างแท้จริง? (เช่น การหาร $K$ ใน $L/M$ บล็อกของ $M$ บิต, ใช้วิธีการเหล่านี้บางส่วนและเชื่อมต่อผลลัพธ์ของพวกเขา)

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

เดาสองสามข้อ (สมมติว่า $M=L$ เพื่อความเรียบง่าย) $K + T$ เป็นตัวเลขสุ่มอย่างแท้จริง แต่ $K\ ระดับบิต\_และ\ T$ ไม่ใช่.

บันทึก: คำถามของฉันเกี่ยวกับบริบทของรหัสรหัสแบบใช้ครั้งเดียว ฉันต้องการเก็บข้อความรหัสและ $K$ แยกจากกัน และถ่ายโอนผ่านช่องทางที่ปลอดภัยเมื่อจำเป็นต้องถอดรหัสเท่านั้น แต่แทนที่จะถ่ายโอน $K$ เอง ซึ่งอาจยาวมากเนื่องจากต้องตรงกับความยาวของข้อความธรรมดา (ซึ่งยาวมากได้) ฉันกำลังคิดคำนวณอยู่ $K$ โดยได้รากศัพท์มาจาก $เจ$ (ขนาด $L$) และ $T$ ขนาด $M$ทั้งสองเป็นตัวเลขสุ่ม $เจ$ ถูกเก็บไว้ฝั่งไคลเอนต์ $T$ ถูกเก็บไว้ฝั่งเซิร์ฟเวอร์และดึงผ่านช่องทางที่ปลอดภัย และ $K$ ได้รับมาจากฝั่งไคลเอ็นต์ในที่สุดและถูกละทิ้งจากหน่วยความจำทันทีหลังการถอดรหัส ในที่สุดคำถามของฉันข้างต้นก็เกี่ยวกับฟังก์ชันการสืบทอดที่จะใช้เพื่อสิ่งนั้น $K$ แยกไม่ออกจากตัวเลขสุ่มสมมติอย่างแท้จริง $เจ$ และ $T$ เป็นตัวเลขสุ่มอย่างแท้จริง

Maarten Bodewes avatar
in flag
ดูเหมือนว่าคุณจะสับสน $M$ (จำนวนบิตของ $T$) และ $T$ ในคำถามของคุณ
sanscrit avatar
ua flag
@MaartenBodewes ใช่คุณพูดถูก ขอขอบคุณ. แก้ไขแล้ว
Maarten Bodewes avatar
in flag
ฉันคิดว่าคุณลืมประมาณ 4 รายการ พยายามแก้ไขแล้ว โปรดตรวจสอบ
Score:3
ธง cn

คุณได้ถามคำถามมากมายในคำถามนี้ แต่มีสามข้อที่โดดเด่น:-

อะไรก็ตามที่ "สุ่มอย่างแท้จริง" หมายถึง ... ค่าจากการแจกแจงแบบปกติเป็นตัวเลขสุ่มอย่างแท้จริง หรือการแจกแจงแบบสม่ำเสมอเท่านั้นจึงจะถือว่า "สุ่มอย่างแท้จริง"

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

ฮิสโตแกรม

มี ไม่ ชื่อที่ยอมรับกันทั่วไปสำหรับการแจกจ่ายนี้ มีค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน แต่ไม่มีควอนไทล์เชิงพีชคณิต ความเบ้ หรือเอนโทรปี มันมีอยู่จริงในเชิงประจักษ์ (กับ $H_\infty \ประมาณ 6$ บิต/ไบต์)

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

คุณสมบัติหลักเพียงอย่างเดียวคือ $ \operatorname{X}: \{0,1\}^n \to \ \{0,1\}^m $ กับ $ ม \lt n $. $X$ สามารถเป็นได้หลายอย่างเช่น von Neumann extractors, ฟังก์ชัน CRC, เมทริกซ์, LFSR และฟังก์ชันแฮชทั่วไป (สากล) จุดสำคัญก็คือว่า $X$ ไม่มีรูปแบบใดของฟังก์ชันการเข้ารหัส การคิดเช่นนั้นเป็นการเข้าใจผิด แต่ความปลอดภัยเกิดขึ้นจากความยาวบิตอินพุตแบบสุ่มอย่างแท้จริง $n$.

ฉันกำลังคิดที่จะจัดเก็บหมายเลขสุ่ม J ของความยาว L ฝั่งไคลเอ็นต์ โอน T "โทเค็นแบบสุ่มอย่างแท้จริง" ที่สร้างไว้ล่วงหน้าแทน (เชื่อมโยงกับข้อความธรรมดาเฉพาะนั้นโดยเฉพาะ) และสร้าง K ฝั่งไคลเอ็นต์...

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

sanscrit avatar
ua flag
ฉันได้ปรับปรุงหมายเหตุล่าสุดของคำถาม ฉันหวังว่าตอนนี้จะชัดเจนมากขึ้น
Score:2
ธง ru

ในแง่ของตัวดำเนินการทางคณิตศาสตร์ระดับบิต/ระดับบิตบนตัวเลขสุ่มอิสระที่กระจายอย่างสม่ำเสมอ (โดยปกติแล้วการเข้ารหัสจะใช้การสุ่มแบบสม่ำเสมอ แต่มีข้อยกเว้น เช่น ในการเข้ารหัสแบบแลตทิซ) XOR ให้การแจกแจงแบบสม่ำเสมอ + ให้การแจกแจงแบบสามเหลี่ยม AND ให้การแจกแจงโดยที่ $P(N)=0.25^{w(N)}0.75^{L-w(N)}$ ที่ไหน $w$ เป็นน้ำหนักแฮมมิ่ง ผลิตภัณฑ์คือ ที่ซับซ้อน, ผลต่างเป็นรูปสามเหลี่ยม หรือ ให้การกระจายแบบ AND แต่มีบทบาทเป็น $ว(น)$ และ $L-w(N)$ กลับกัน NOR มีการแจกแจงแบบเดียวกับ AND, NAND มีการแจกแจงแบบเดียวกับ OR

ผลกระทบของฟังก์ชันแฮชการเข้ารหัสบนอินพุตแบบสม่ำเสมอมักไม่เป็นที่ทราบกันดีว่าเป็นแบบเดียวกัน แต่มักถูกสร้างแบบจำลองเช่นนี้

สำหรับแพดแบบใช้ครั้งเดียว คุณจะต้องการให้มีการกระจายแบบสม่ำเสมอในทุกคีย์ที่มีความยาวเท่ากันกับข้อความธรรมดา ฟังก์ชันแฮชสากลควรบรรลุสิ่งนี้ แต่ตรวจสอบให้แน่ใจว่าอินพุตเป็นความลับ มีการกระจายอย่างเหมาะสมและใช้เพียงครั้งเดียว

sanscrit avatar
ua flag
ดังนั้นจากคำตอบของคุณ ฉันคิดว่าถ้าฉันมีคีย์ A และ B สองคีย์ที่มีเอนโทรปีบิต L แต่ละตัว A xor B จะยังมีเอนโทรปีบิต L อยู่ใช่ไหม
Daniel S avatar
ru flag
ใช่ เป็นเช่นนั้น สมมติว่ารุ่นของพวกเขาเป็นอิสระ (ตัวอย่างตัวนับที่ชัดเจนคือ A=B)
Score:1
ธง fr

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

ตัวเลขสุ่มที่แท้จริงมาจากแหล่งที่มาทางกายภาพและไม่ได้กำหนดขึ้น นั่นอาจเป็นการสลายตัวของสารกัมมันตภาพรังสี เสียงจากความร้อน ออสซิลเลเตอร์ที่ทำงานอย่างอิสระ หรือแหล่งที่มาประเภทอื่นๆ เนื่องจากสิ่งเหล่านี้ไม่จำเป็นต้องสร้างจำนวนเท่ากับหนึ่งและศูนย์ และไม่ทราบความล้มเหลว โดยปกติแล้วจะมีการกรองและประมวลผลบางประเภท ซึ่งอาจเป็นอัลกอริทึมการเข้ารหัส เช่น AES-CBC-MAC หรือ SHA-256 หรือบางประเภท การกำจัดหรือลดอคติ เช่น XORing หรือ Von Neumann debiasing หรือทั้งสองอย่าง

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

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

หากคุณเลือกที่จะใช้วิธีนี้ ฉันขอแนะนำให้คุณเลือกไลบรารี่ที่มีอยู่และออกแบบอย่างดีเพื่อสร้างสิ่งนี้ TLS รองรับคีย์ที่แชร์ล่วงหน้า และแน่นอนว่ามีไลบรารีอื่นๆ ที่ทำเช่นนี้กับข้อความได้เช่นกัน

โพสต์คำตอบ

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