Score:1

Truly Random Numbers at Scale - ชิปหน่วยความจำที่โอเวอร์โหลดจะสร้างตัวเลขสุ่มอย่างแท้จริงสำหรับการเข้ารหัส

ธง eg

เป็นเวลาหลายปีที่ตัวเลขสุ่มอย่างแท้จริงในระดับนั้นเป็นเรื่องที่เข้าใจยาก ดังนั้นฉันจึงอ่านงานวิจัยล่าสุดนี้ https://www.newscientist.com/article/2303984-overloaded-memory-chips-generate-truly-random-numbers-for-encryption/ และ https://cacm.acm.org/news/257835-overloaded-memory-chips-generate-truly-random-numbers-for-encryption ด้วยอุบายอันใหญ่หลวง ความคาดหมาย ความตื่นเต้น.

คำถามแรกของฉัน: อะไรคือปัญหาที่เกี่ยวข้องกับการสร้างตัวเลขสุ่มที่แท้จริง ต้นทุน การปฏิบัติจริง เช่น การใช้พลังงาน?

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

A. Hersean avatar
cr flag
คำแนะนำ 'RDSEED' สามารถพบได้ในไมโครโปรเซสเซอร์ x64 รุ่นล่าสุดดู https://en.wikipedia.org/wiki/RDRAND นอกจากนี้ ชิป ARM มักมีความสามารถที่ [คล้ายคลึงกัน](https://stackoverflow.com/a/39390306/7035309) แต่ยังไม่ได้มาตรฐาน
Nathan Aw avatar
eg flag
ไม่เป็นไร รู้ไว้ก็ดี! เหตุใดผู้คนจึงไม่ใช้ประโยชน์จากสิ่งนั้นเนื่องจากมีให้ใช้งานอย่างกว้างขวาง
A. Hersean avatar
cr flag
พวกเขาทำ. Linux CSPRNG (/dev/urandom และ /dev/random) ใช้มัน (ท่ามกลางแหล่งอื่นๆ) เมื่อพร้อมใช้งาน สันนิษฐานว่า Windows ทำเช่นนั้นเช่นกัน แต่เนื่องจากเป็นแหล่งข้อมูลปิด ข้อมูลนี้จึงไม่เปิดเผยต่อสาธารณะ
Score:2

เป็นเวลาหลายปีที่ตัวเลขสุ่มอย่างแท้จริงในระดับนั้นเป็นเรื่องที่เข้าใจยาก

ไม่ นี่เป็นโฆษณาเกินจริง 100% การสร้างตัวเลขสุ่มเป็นเรื่องง่าย มีเทคนิคที่เป็นที่รู้จักมากมายในการทำ “มาตราส่วน” ไม่ใช่ปัญหาเกี่ยวกับปริมาณของตัวเลขสุ่ม เนื่องจากต้องการเพียง “การสุ่มจริง” เท่านั้น ดังนั้นให้สร้างเครื่องกำเนิดเทียมเทียมที่ปลอดภัยด้วยการเข้ารหัส (CSPRNG) ผลลัพธ์ของ CSPRNG นั้นแยกไม่ออกจากการสุ่มจริง

คำถามแรกของฉัน: อะไรคือปัญหาที่เกี่ยวข้องกับการสร้างตัวเลขสุ่มที่แท้จริง ต้นทุน การปฏิบัติจริง เช่น การใช้พลังงาน?

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

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

การใช้พลังงานไม่ใช่ปัญหามากนัก เนื่องจาก TRNG ต้องการเรียกใช้เป็นระยะเวลาสั้นๆ เท่านั้น เวลาแฝง สามารถ เป็นปัญหาเมื่อโปรเซสเซอร์บูท

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

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

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

เนื่องจากคุณไม่สามารถบอกได้ว่าตัวเลขสุ่มเป็นอย่างไรโดยการดูที่ตัวเลข คุณต้องดูกระบวนการสร้างตัวเลข

us flag
"การสุ่มจำเป็นเท่านั้นในการเพาะ ... (CSPRNG)... CSPRNG แยกไม่ออกจาก **การสุ่มจริง**" ไม่เห็นด้วยกับสิ่งนั้น ลำดับของตัวแปรสุ่มอิสระตามคำจำกัดความทางคณิตศาสตร์ตรงกับรหัสสตรีมซึ่งรักษาข้อมูลอินพุตไว้ ไม่สามารถเข้าถึงได้ด้วยเมล็ดที่สั้นกว่าเวกเตอร์เอาต์พุต
Gilles 'SO- stop being evil' avatar
@SamGinrich ไซต์นี้เกี่ยวกับการเข้ารหัส ฉันหมายถึงศัตรูที่แยกไม่ออกด้วยพลังการคำนวณที่เหมือนจริง ไม่ใช่สิ่งที่แยกไม่ออกในทางคณิตศาสตร์
us flag
แน่นอน ฉันเข้าใจว่า "แยกไม่ออก" คิดว่าไม่จำเป็นต้องจัดสรร "การสุ่มจริง" ซึ่งการเข้ารหัสของสตรีมนั้นตรงกันข้ามกับเครื่องสถานะ โดยตระหนักถึงอัลกอริทึมการสุ่มแบบ seeded
Score:1
ธง cn
  1. ปัญหาหลักคือการหาแหล่งเอนโทรปีที่ดี เป็นการวัด "ความบังเอิญ" ถ้าเรามีค่า $เมล็ดพันธุ์$ ดังนั้น $H(เมล็ด)=n$เราไม่สามารถสร้างลำดับได้ $x, |x|\geq|seed|$ ด้วยเอนโทรปีที่มากขึ้นเช่น $\forall x : x=f(seed)\land|x|\geq|seed|\implies H(x)\leq H(seed)$, ที่ไหน $f$ เป็นอัลกอริทึมเชิงกำหนด (PRNG) เอนโทรปีถูกกำหนดดังนี้: $$ H(X)=-\sum_{x\ \in\ \text{Dom}(X)}\text{Pr}(x)\cdot\text{log}_2\text{Pr}(x) $$ ที่ไหน $X$ เป็นตัวแปรสุ่ม <removed>
    กล่าวอีกนัยหนึ่ง ในกรณีที่ดีที่สุด เราจะได้ลำดับที่ยาวขึ้นโดยมีจำนวน "การสุ่ม" เท่ากันกับลำดับที่สั้นที่สุด ไม่มีทางที่จะสร้าง อาจไม่มีขอบเขต ลำดับสุ่มอย่างแท้จริงโดยใช้อัลกอริทึมบางอย่างจากลำดับจำกัดโดยไม่มีแหล่งที่มาของเอนโทรปีเพิ่มเติม
    UPD: การใช้สูตรสำหรับลำดับนั้นไม่ถูกต้องเสียทีเดียว แต่ความหมายของย่อหน้านี้ยังคงใช้ได้: คุณไม่สามารถสร้าง "ความสุ่ม" จากความว่างเปล่าได้

  2. นั่นเป็นคำถามที่ดี เพราะเราสามารถพูดได้ว่า ไม่ว่าบางลำดับจะสุ่มหรือไม่ก็ตามด้วยความน่าจะเป็นที่แน่นอน วิธีเดียวคือการใช้การทดสอบทางสถิติ ลำดับสุ่มในอุดมคติ (หรือจริงๆ) ถูกกำหนดดังนี้: $$ X_\to=\{\zeta_1, \zeta_2, ..., \zeta_n,...\} $$ ที่ไหน $\zeta_i, i\in\{1,2,...\}$ มีการกระจายอย่างสม่ำเสมอในบางชุด $X$ ตัวแปรสุ่มและในแต่ละเซตย่อย $\{\zeta_{i_1},...,\zeta_{i_k}\}$ ตัวแปรทั้งหมดเป็นอิสระต่อกัน การมีลำดับโดยพลการสิ่งเดียวที่เราทำได้คือการทดสอบคุณสมบัติทางสถิติและบอกว่ามีความเป็นไปได้สูง (หรือต่ำ) ข้อกำหนดเหล่านี้มีไว้สำหรับตัวแปรเหล่านี้ <redacted to make it more clear>.
    <removed>
    ในบทความทั้งหมดที่ฉันได้อ่านเกี่ยวกับเครื่องกำเนิดแบบสุ่มได้รับการทดสอบทางสถิติน่าเสียดายที่ฉันไม่สามารถอ่านบทความที่คุณกล่าวถึงในคำถามได้ แต่ฉันคิดว่าจะมีการวิจัยประเภทเดียวกัน


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

UPD: ไม่จำเป็นต้องมีเอนโทรปีสูงสุดสำหรับการสุ่มที่แท้จริง นี่คือการอ้างอิงบางส่วนของ @Paul Uszak:

ลำดับดังกล่าว [สุ่มจริงๆ] ต้องการเพียงความซับซ้อนของ Kolmogorov ที่เพิ่มขึ้นอย่างจำเจ อคติ/ความสัมพันธ์ไม่เกี่ยวข้อง

TRNG ไม่ได้รับการทดสอบสำหรับการสุ่มที่แท้จริง “ความจริง” ของพวกเขามาจากความเข้าใจเกี่ยวกับกระบวนการทางกายภาพที่ไม่ได้กำหนดขึ้นตายตัว ซึ่งสร้างเอาต์พุตที่มีความซับซ้อนของ Kolmogorov

UPD: โดยสรุป: TRNG ใช้เหตุการณ์ที่คาดเดาไม่ได้ทางกายภาพบางอย่างเพื่อสร้างลำดับ PRNG ใช้อัลกอริทึมของคอมพิวเตอร์

Paul Uszak avatar
cn flag
สวัสดี แต่ปัญหาบางอย่าง 0) ไม่มีแหล่งที่มาของเอนโทรปีนอกเหนือไปจากอุณหพลศาสตร์ เอนโทรปีการเข้ารหัสถูกสร้างขึ้นโดยผู้สังเกตการณ์ในระหว่างการสุ่มตัวอย่างเท่านั้น 1) สูตรแชนนอนใช้กับข้อมูล IID เท่านั้น และไม่ใช้ในกรณีทั่วไปของการสุ่มตัวอย่างแหล่งที่มาของเอนโทรปี 2) การทดสอบทางสถิติจะทดสอบเฉพาะความสม่ำเสมอและความเป็นอิสระจากด้านล่างของตัวแยกความสุ่ม ไม่มีการทดสอบใดที่สามารถแยกความแตกต่างระหว่าง TRNG และ RNG `dieharder` จะผ่าน Mersenne Twister และ `ent` และ FIPS 140 จะผ่านไฟล์เก็บถาวร .7z ใดๆ
Paul Uszak avatar
cn flag
3) ไม่จำเป็นต้องมีเอนโทรปีสูงสุดที่เป็นไปได้สำหรับลำดับสุ่มอย่างแท้จริง ลำดับดังกล่าวต้องการความซับซ้อนของ Kolmogorov ในปริมาณที่เพิ่มขึ้นอย่างจำเจ อคติ/ความสัมพันธ์ไม่เกี่ยวข้อง 4) TRNGs ไม่ได้รับการทดสอบสำหรับการสุ่มที่แท้จริง “ความจริง” ของพวกเขามาจากความเข้าใจในกระบวนการทางกายภาพที่ไม่ได้กำหนดขึ้นเองซึ่งสร้างผลลัพธ์ที่ซับซ้อนของ Kolmogorov
Score:-1
ธง cn

ความยากลำบากที่เกี่ยวข้องกับการสร้างตัวเลขสุ่มจริงคืออะไร?

ไม่มีปัญหาที่จับต้องได้ในการสร้างจำนวนสุ่มที่แท้จริง เดอะ ได้ daemon อ้างว่าสร้างเอนโทรปีจริงเป็นเมกะบิต/วินาทีโดยไม่ต้องมีฮาร์ดแวร์ภายนอก ฉันไม่แน่ใจว่า âat scaleâ หมายถึงอะไรตามความเป็นจริง การวนคีย์ AES ต่อทุกนาทีคืออัตรา Kolmogorov ที่ <3 บิต/วินาที ด้วยความเคารพ นั่นคือของเด็กเล่นแม้แต่กับ DIYers ดูภาพปาร์ตี้ตอนกลางคืนบนสมาร์ทโฟนของคุณและสงสัยว่าสัญญาณรบกวนภาพทั้งหมดคืออะไร หากคุณมี ~ 3,000 ยูโร คุณทำได้ ซื้อ TRNG ความเร็ว 240 Mbps ที่ใช้เทคโนโลยีการแยกลำแสง ถ้าชีวิตของคุณขึ้นอยู่กับมัน เงิน 2,600 เหรียญนั้นมากเกินไปหรือเปล่า? และยอลเด /dev/สุ่ม จะทำ >30 kB/hr แค่เช็คอีเมล เพิ่มเป็นสองเท่าหากคุณกำลังค้นคว้า PornHub

สาเหตุที่จับต้องไม่ได้ที่เป็นไปได้มากที่สุดที่ฉันต้องไม่เข้าไปเกี่ยวข้องมีดังต่อไปนี้ นักกีฬาได้รับคำแนะนำให้ใช้โทรศัพท์ตั้งโต๊ะในกรุงปักกิ่ง.

อะไรและใครสามารถเป็นผู้ชี้ขาดในการสุ่มที่แท้จริง?

เพียงคุณเท่านั้น.

มีสายรัดเว็บไซต์ที่มีชื่อเสียงมากกล่าวว่า เอนโทรปีที่ปลอดภัย? เอนโทรปีของคุณâ แนวคิดของความสามารถในการแยกแยะไม่ได้ของการคำนวณหมายความว่าผลลัพธ์ของ Mersenne Twister นั้นค่อนข้างคล้ายกับผลลัพธ์ของ /dev/สุ่ม. นี่คือสิ่งที่ได้จากที่นี่

ตัวสร้างตัวเลขสุ่มของฮาร์ดแวร์บนชิปของ Intel ดูสุ่มแต่ไม่มีใครในชุมชน *nix เชื่อถือ ดังนั้นพวกเขาจึงไม่ควรให้ NOBUS ที่ได้รับการยืนยันต่อสาธารณะ2 นโยบาย. และน่าเสียดายสำหรับคุณ/เรา เป็นไปไม่ได้ที่จะทำวิศวกรรมย้อนกลับแม่พิมพ์ซิลิกอนหลายชั้นด้วยทรานซิสเตอร์หลายพันล้านตัว

ส่วนนี้ของคำตอบของฉันสามารถดำเนินการต่อไปได้หลายพันครั้ง ดังนั้นฉันจะจบลงด้วยการพยายามเกลี้ยกล่อมให้คุณสร้างแหล่งเอนโทรปีด้วยตัวคุณเอง ไดโอด (€ 2.08 + ภาษีมูลค่าเพิ่ม/20)


2 รับหมวกดีบุก ไก่งวงคริสต์มาสหนาจริงๆ รายการ NOBUS ถูกลบออกจากวิกิพีเดีย วาดข้อสรุปของคุณเอง ดังนั้นฉันจึงแนะนำให้คุณไปที่ WAPO บทความ กับหัวหน้า CIA/NSA (คนเดียวกัน)

poncho avatar
my flag
ฉันไม่เคยเข้าใจคนที่ไม่ไว้วางใจ trng ของ Intel แต่เชื่อในทุกสิ่งที่ Intel สร้างขึ้น หาก NSA สามารถโน้มน้าวให้ Intel ใส่แบ็คดอร์ใน trng ได้ พวกเขายังสามารถโน้มน้าวให้พวกเขาสร้าง CPU ที่ตรวจจับเมื่อลำดับคำสั่งบางอย่าง (เช่น โค้ด OpenSSL rng) กำลังทำงานและจงใจตีความคำสั่งเหล่านั้นผิด
us flag
@poncho ฉันเป็นหนึ่งในคนขี้ระแวงเหล่านี้ :) เมื่อพูดถึงเรื่องความปลอดภัย ฉันไม่สนใจเรื่องประสิทธิภาพ: ไม่มี NSA, ไม่มี Windows, ไม่มี Intel, ไม่มี OpenSSL และไม่มีคนสอนที่มีทัศนคติว่า "ไม่เคยสร้างระบบรักษาความปลอดภัย ด้วยตัวเอง"
Paul Uszak avatar
cn flag
@SamGinrich ได้ยิน ได้ยิน! สิ่งที่ผู้วิจารณ์คนก่อนไม่ได้ตระหนักก็คือคำวิจารณ์ของเขานั้นไร้เหตุผล เราพึงพอใจกับตนเองว่า CPU ของ Intel ทำงานได้อย่างถูกต้อง เนื่องจากสามารถตรวจสอบกับข้อมูลจำเพาะของมันได้แม้ในการทดสอบ การทดสอบโดยผู้ใช้หลายล้านคนในทุกประเทศ ทุกระดับความสามารถทางเทคนิค ความสามารถในการแยกแยะไม่ออกของการคำนวณในทางคณิตศาสตร์จะออกกฎการยืนยันว่า TRNG ที่ถูกกล่าวหาของ Intel สร้างการสุ่มของ Kolmogorov เลย [เพิ่มเติม...](https://crypto.stackexchange.com/a/71584/23115)
us flag
@Paul อืม ฉันไม่ต่อต้านความคิดเห็นของเสื้อปอนโช: หากคุณมีงูสองหัว มันไม่น่าเชื่อถือเลยที่จะไม่ไว้ใจหัวหนึ่งและหวังว่าอีกหัวหนึ่งจะไม่กัดคุณ เหมือนกัน ความพยายามในการตรวจสอบของคุณไม่เป็นไร สิ่งที่คุณต้องตระหนักคือการดำเนินการตรวจสอบที่เป็นอิสระและปราศจากความไว้วางใจในองค์กร เช่น ซึ่งเลิกเป็นเพื่อนกับนายสโนว์เดน
forest avatar
vn flag
@poncho ฉันคิดว่ามันไม่น่าเป็นไปได้มาก PoC||GTFO มีบทความที่ดีเกี่ยวกับวิธีดำเนินการดังกล่าว (อย่างน้อยในโปรแกรมจำลอง) และพิสูจน์ได้ว่า _มาก_ ซับซ้อนและเปราะบางกว่า TRNG ลับๆ ที่รวมตัวเลขสุ่ม 64 บิตจริงและความลับ 128- ค่าแบ็คดอร์บิตและใช้สิ่งนั้นเป็นเมล็ดพันธุ์ ฉันคิดว่าพอลมีสิทธิ์ที่จะไม่เชื่อ RDRAND/RDTSC

โพสต์คำตอบ

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