Score:1

วิธีขยายพันธุ์เมล็ดพันธุ์ใน Random Number Generator เช่น WELL, KISS เป็นต้น

ธง cn

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

การขยายเมล็ดที่ฉันพูดถึงคืออะไร?

คุณรู้ว่าตัวสร้าง Pseudo-Random Number ต้องการเมล็ดพันธุ์เพื่อให้ทำงานได้อย่างถูกต้อง ตัวอย่างเช่น หนึ่งใน RNG ที่มีชื่อเสียงที่สุด mt19937 ต้องการเมล็ดเพียงเมล็ดเดียว

อย่างไรก็ตามใน อัลกอริทึม KISS (George Marsaglia, 2011, รุ่น 64 บิต) คุณต้องการเพียงแค่ 2 เมล็ด ซีเอ็นจี และ xs. ในกรณีของ Wichmann_hillคุณต้องการ 3 เมล็ด s1, s2, s3. ใน อัลกอริทึม WELL19937, คุณต้องการ 624 เมล็ด.

ในความคิดของฉัน มันง่ายที่จะได้ 1 หรือ 2 เมล็ด แต่การได้รับ 624 เมล็ดสำหรับ WELL19937 นั้นเป็นเรื่องยาก

ดังนั้นฉันคิดว่าอัลกอริทึมบางอย่างจะใช้ "การเติมเมล็ด" ซึ่งหมายถึงการสร้างหนึ่งเมล็ดไปยังเมล็ดตามความต้องการเช่น SHA256 ในกรณีของ SHA หากข้อความป้อนไม่พอดีกับความยาว เราจะสร้างข้อความบางอย่างที่เรียกว่า การขยายความ.

สิ่งที่ฉันต้องการถาม

  1. มีคำศัพท์ที่เหมาะสมในการ "เติมเมล็ด" ในตัวสร้างตัวเลขสุ่มหรือไม่?

  2. วิธีการ "แพดเมล็ด"? มีมาตรฐานหรือไม่?

SAI Peregrinus avatar
si flag
เว็บไซต์ stackexchange นี้เกี่ยวกับการเข้ารหัส การเข้ารหัสใช้ Cryptographically Secure Pseudo Random Number Generators (CSPRNGs) ซึ่งไม่ใช้เมล็ดพันธุ์ภายนอกที่ทำซ้ำได้ สำหรับ CSPRNG ที่ปลอดภัย การสร้างเมล็ดพันธุ์จะต้องเป็นไปไม่ได้
TyeolRik avatar
cn flag
@SAIPeregrinus ใช่ ฉันรู้ว่าไซต์นี้เกี่ยวกับการเข้ารหัส นอกจากนี้ Pseudo Random Number (ไม่ใช่ CSPRNG) อยู่ในขอบเขตของการเข้ารหัส เนื่องจากหนึ่งในหนังสือเรียนที่มีชื่อเสียงที่สุดอย่าง Applied Cryptography, Bruce Schneier ได้แนะนำ Pseudo-Random Number Generator แบบคลาสสิก เช่น LCG, LFSR เป็นต้น เอาล่ะ หากคุณคิดว่าเว็บไซต์นี้ไม่เหมาะสมที่จะถาม คุณช่วยแนะนำได้ไหมว่าควรถามที่ไหน
SAI Peregrinus avatar
si flag
หากคุณถามเกี่ยวกับการเขียนโปรแกรมเช่น PRNG คุณเพียงแค่ส่งอินพุตด้วยวิธีการใดก็ตามที่ภาษาใช้ต้องการ เช่น ส่งตัวชี้ไปยังโครงสร้างสำหรับเวอร์ชัน C การเติมจะถูกกำหนดโดยคอมไพเลอร์และสถาปัตยกรรม นั่นจะเหมาะสมสำหรับ Stackoverflow
SAI Peregrinus avatar
si flag
หากคุณถามเกี่ยวกับวิธีค้นหาเมล็ดจากผลลัพธ์ของ PRNG นั่นเกี่ยวข้องกับที่นี่ แต่ไม่มีขั้นตอนการเติมดังกล่าว
TyeolRik avatar
cn flag
@SAIPeregrinus ไม่ ฉันไม่ได้ขอให้ค้นหาเมล็ดพืชจากเอาต์พุตของ PRNG ซึ่งเหมือนกับ Hash Collision ที่ผมถามคือ **จะใส่เมล็ด (จำนวนมาก) อย่างไร** ไม่ได้รับ 624 เมล็ด แต่จัดการเมล็ดจาก ONE SEED ซึ่งเกือบจะเหมือนกับการเติม SHA
SAI Peregrinus avatar
si flag
จากการกวาดกระดาษที่ (https://www.iro.umontreal.ca/~lecuyer/myftp/papers/lfsr04.pdf) ดูเหมือนว่าเมล็ดเป็นเพียงเวกเตอร์บิตสถานะเริ่มต้น ดูเหมือนว่ารหัสจะสนับสนุนเนื่องจาก init ใช้ int* คุณจึงเริ่มต้นอาร์เรย์ของจำนวนเต็ม (ไม่มีการเติม) เป็นค่าที่คุณต้องการใช้เป็นค่าเริ่มต้น อาจใช้ memcpy อาจเหมาะกับ stackexchange มากกว่าที่นี่ แต่โค้ดในเอกสารนั้นค่อนข้างอ่านยาก (ไม่มีชื่อฟังก์ชัน/ตัวแปรที่ชัดเจน) ดังนั้นคุณอาจไม่ได้รับความช่วยเหลือมากนัก
TyeolRik avatar
cn flag
@SAIPeregrinus ฉันได้อ่านบทความนั้นแล้วและ [เขียนโค้ดใหม่ด้วยตัวเอง](https://github.com/TyeolRik/rngset/blob/main/well.go) แต่ฉัน **ไม่ได้ถามจริงๆ** เกี่ยวกับการลงรหัส แต่ **ถามว่า "เมล็ดพันธุ์ที่ดีคืออะไร"** อย่างที่คุณทราบ ในโค้ดต้นฉบับ init ใช้ ```int*``` ซึ่งหมายถึงการป้อนข้อมูลของผู้ใช้เท่านั้น แต่ในโลกความเป็นจริง อย่างที่บอก การจะได้ "เมล็ดพันธุ์ดี" นั้นยาก ดังนั้นฉันจึงขอวิธีผลิตเมล็ดพันธุ์ที่ดีด้วยหนึ่งหรือสองเมล็ด... (ไม่มี CSPRNG ซึ่งมาจาก /dev/random/ )
SAI Peregrinus avatar
si flag
เมล็ดพันธุ์ที่ดีคือข้อมูลแบบสุ่มที่สม่ำเสมอ ควรมีค่าเอนโทรปีของแชนนอนใกล้เคียงกับ 1 บิต/บิต วิธีที่ง่ายที่สุดในการรับสิ่งนั้นคือการใช้ RNG ของฮาร์ดแวร์ซึ่งทำให้เอาต์พุตขาวขึ้นด้วย CSPRNG การออกแบบอื่น ๆ จะแย่กว่านั้นสำหรับความปลอดภัยหรือประสิทธิภาพ หากคุณกำลังพยายามใช้เมล็ดพันธุ์ที่ทำซ้ำได้ เช่น สำหรับการจำลองแบบมอนติคาร์โล คุณเพียงแค่บันทึกเอาต์พุตบางส่วนจาก csprng ของคุณลงในไฟล์และใช้ RNG อะไรก็ได้ที่คุณต้องการ เนื่องจากคุณไม่ต้องการความปลอดภัย

โพสต์คำตอบ

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