ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
บทความนี้ได้รับแจ้งให้ปรับปรุงหลายข้อ กรุณาช่วยปรับปรุงบทความ หรืออภิปรายปัญหาที่
|
ตัวสร้างเลขสุ่มเทียม (อังกฤษ: pseudorandom number generator หรือ PRNG) คือตัวสร้างเลขสุ่มประเภทหนึ่ง มีความสำคัญในทางคณิตศาสตร์ การเข้ารหัส และการเสี่ยงโชค ตัวสร้างเลขสุ่มเทียมมีทั้งได้จากฮาร์ดแวร์ซึ่งเป็นการสุ่มแท้ และจากซอฟต์แวร์ซึ่งเป็น (pseudorandomness)
คำอธิบาย
ตัวสร้างเลขสุ่มเทียมหรือที่รู้จักกันในชื่อตัวสร้างบิตสุ่มแบบกำหนดได้ (Deterministic random bit generator: DRBG) เป็นขั้นตอนวิธีสำหรับใช้ในการสร้างลำดับของตัวเลขที่มีความใกล้เคียงกับคุณสมบัติของการสุ่ม ถึงลำดับตัวเลขที่ได้จากขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมนี้จะใกล้เคียงกับลำดับเลขสุ่มแท้จริง แต่ก็ไม่ได้เป็นลำดับตัวเลขแบบสุ่มที่แท้จริงเนื่องจากลำดับตัวเลขที่ได้ออกมาจากตัวสร้างเลขสุ่มเทียมทั้งหมดได้มาจากกลุ่มเล็ก ๆ ของค่าเริ่มต้นที่กำหนดให้เป็นตัวตั้งต้น (seed) ของตัวสร้างเลขสุ่มเทียม ถึงจะมีที่สามารถนำมาสร้างลำดับสุ่มแท้ได้ แต่ลำดับสุ่มเสมือนที่ได้จากตัวสร้างเลขสุ่มเทียมเองก็มีความสำคัญในทางปฏิบัติหลาย ๆ อย่าง ทั้งในด้านการจำลอง เช่นระบบกายภาพที่ใช้ ในด้านการเข้ารหัส (cryptography) ในด้าน (procedural generation) ส่วนใหญ่เกี่ยวข้องกับคอมพิวเตอร์กราฟิกส์ (โปรแกรมประยุกต์และวิดีโอเกมขั้นออกแบบ) ขั้นตอนวิธีเชิงสุ่มมากมายเองก็ได้อิทธิพลมาจากตัวสร้างเลขสุ่มเทียมเป็นส่วนหนึ่งในการแก้ปัญหา นอกจากการใช้งานแล้วการพิสูจน์ว่าตัวสร้างเลขสุ่มเทียมใช้งานได้จริงก็มีความสำคัญไม่แพ้กัน ซึ่งการพิสูจน์นี้ต้องอาศัยการวิเคราะห์ทางคณิตศาสตร์อย่างระมัดระวังในการทำให้แน่ใจได้ว่าตัวสร้างเลขสุ่มเทียมได้สร้างลำดับสุ่มเสมือนที่มีลักษณะสุ่มเพียงพอสำหรับการใช้งาน
ประวัติ
ตัวสร้างเลขสุ่มเทียมที่อาศัยคอมพิวเตอร์ยุคแรก ๆ คิดค้นโดย จอห์น ฟอน นอยมันน์ ในปี ค.ศ. 1946 รู้จักกันในนามของ วิธีมิดเดิลสแควร์ (middle-square method) ขั้นตอนวิธีนี้คือ รับตัวเลขใดเข้ามาเป็นตัวตั้งต้นก็นำตัวเลขนั้นมายกกำลังด้วย 2 แล้วนำหลักตรงกลางออกจากผลลัพธ์ที่ได้ ก็จะได้ตัวเลขสุ่มขึ้นมาตามต้องการ ซึ่งสามารถนำตัวเลขนี้มาเป็นตัวตั้งต้นในการสร้างตัวเลขสุ่มอื่น ๆ ต่อไปได้
รหัสเทียม
Input เป็นตัวเลข Output ยกกำลังสอง Input ที่นำตัวเลขตำแหน่งกลางออก
int main () { int in; int tmp =in*in; int tmp2=tmp; //หาจำนวนหลัก int length=0; while (tmp2>0) { length++; tmp2/=10; } int tmp3=tmp/pow (10,length/2) ; //ดึงส่วนข้างหน้าหลักกลางออกมา int tmp4= (length%2==0) ?tmp-tmp3* pow (10,length/2) +1: tmp-tmp3* pow (10,length/2) ;//ดึงส่วนข้างหลังหลักกลางออกมา int out = tmp3* pow (10,length/2) +tmp4; ที่ นำหลักตรงกลางออกแล้ว return out; }
ปัญหาของ middle-square method คือท้ายที่สุดแล้วจะซ้ำกับลำดับสุ่มซึ่งสร้างขึ้นก่อนหน้า บางอันจะทำให้เกิดการวนซ้ำเร็วมากเช่น 00000 ซึ่งถ้านำไปทดลองทำตามวิธีนี้จะพบว่าได้ 0000000000 ทุกครั้ง ซึ่งฟอน นอยมันน์ ก็ตระหนักถึงปัญหาดังกล่าวเช่นกัน แต่เขาคิดว่ามันเพียงพอแล้วกับวัตถุประสงค์ในการใช้งานของเขา เขาได้ใช้กลวิธีการทางคณิตศาสตร์บางอย่างในการคาดเดาล่วงหน้าก่อนจะใส่เป็นตัวตั้งต้นซึ่งจะสามารถซ่อนข้อผิดพลาดดังกล่าวไว้ได้ ต่อมา middle-square method ถูกแทนที่จากวิธีการอื่นที่ซับซ้อนและมีความละเอียดอ่อนมากกว่าซึ่งลำดับสุ่มเสมือนที่ได้มีความใกล้เคียงลำดับสุ่มแท้จริงมากกว่า
คาบการวนซ้ำ
ตัวสร้างเลขสุ่มเทียมเริ่มต้นจากสถานะเริ่มต้นอะไรก็ได้โดยใช้สถานะ seed (สถานะเริ่มต้น) เป็นตัวเริ่มต้นของตัวสร้างเลขสุ่มเทียม ซึ่งทำให้เกิดการวนซ้ำของลำดับได้โดยความยาวสูงสุดของลำดับสุ่มเสมือนก่อนเกิดการซ้ำเกิดขึ้นถูกวัดจากขนาดของสถานะซึ่งวัดได้โดยความยาวของบิต ความยาวคาบของการวนซ้ำสูงสุดจะยาวเพิ่มเป็น 2 เท่าทุก 1 บิตที่เพิ่มขึ้นจึงทำให้ง่ายที่จะสร้าง ตัวสร้างเลขสุ่มเทียมที่มีคาบการวนซ้ำที่ยาวเพียงพอสำหรับหลาย ๆ โปรแกรมในทางปฏิบัติ ถ้าสถานะของตัวสร้างเลขสุ่มเทียมมี n บิต คาบการวนซ้ำจะไม่ยาวเกินกว่า 2n เช่น เรจิสเตอร์เลื่อนป้อนกลับได้เชิงเส้นLinear Feedback Shift Registers (LFSRs) โดยปกติจะถูกทำให้มีคาบการวนซ้ำที่มีความยาวแน่นอนคือ 2n−1 ตัวสร้างสมภาคเชิงเส้นLinear congruential generators มีคาบการวนซ้ำซึ่งสามารถคำนวณได้จากการหาตัวประกอบ มิกซ์ Mixes (ไม่มีข้อบังคับ) มีคาบการวนซ้ำโดยเฉลี่ย 2n/2 มิกซ์ Mixes (ซึ่งสามารถย้อนกลับได้) มีคาบการวนซ้ำโดยเฉลี่ย 2n ถึงแม้ว่าตัวสร้างเลขสุ่มเทียมจะมีการซ้ำของผลลัพธ์หลังจากถึงคาบการวนซ้ำแต่การเจอตัวซ้ำไม่ได้หมายความว่ามันครบคาบการวนซ้ำเสมอไปเพราะคาบการวนซ้ำที่แท้จริงอาจจะยาวกว่านี้
รายการ
- ตัวสร้างเลขสุ่มเทียมแบบบลัมบลัมชับ
- (LFSRs)
- Maximal periodic reciprocals
ขั้นตอนวิธีในการเข้ารหัสที่ใช้ตัวสร้างเลขสุ่มเทียม (PRNG)
- ใน counter mode
PRNG APIS ที่มีชื่อเสียง
- Random class ใน the Java programming language
- SecureRandom class ใน the Java programming language
PRNG ที่ใช้ External entropy
- - Microsoft Windows
- - Mac OS X and FreeBSD
- - Linux and Unix
- LavaRnd - The open-source (LGPL) successor to Lavarand
- HotBits
- random.org
ตัวอย่างขั้นตอนวิธีอย่างง่าย
วิธีตัดกลางของผลคูณ (Midproduct Method)
- 1.) เลือกตัวเลขสี่หลัก 2 ค่า x'0 และ x0
- 2.) คูณค่า x'0 และ x0 เข้าด้วยกัน
- 3.) ใชสี่หลักกลางของผลคูณที่ได้ในข้อ 2.) เป็นตัวเลขสุ่มเทียม x1
- 4.) คูณ ค่า x0 และ x1
- 5.) ทำซ้ำขั้นตอน 3.) และ 4.) จนกว่าจะได้ตัวเลขสุ่มเท่าจำนวนที่ต้องการ
วิธีตัวคูณคงที่ (Constant Multiplier Technique
- 1.) กำหนดค่าคงที่ k ขนาดสี่หลัก และค่าเริ่มต้น x0
- 2.) คูณค่า k และ x0 เข้าด้วยกัน
- 3.) ใชสี่หลักกลางของผลคูณที่ได้ในข้อ 2.) เป็นตัวเลขสุ่มเทียม x1
- 4.) คูณ ค่า k และ x1
- 5.) ทำซ้ำขั้นตอน 3.) และ 4.) จนกว่าจะได้ตัวเลขสุ่มเท่าจำนวนที่ต้องการ
วิธีการบวกเศษเหลือ (Additive Congruent Method)
- 1.) กำหนดตัวเลขจำนวนเต็ม x1, x2,..., xn
- 2.) สร้าง xn+1, xn+2, ... จากตัวเลขในข้อ 1.)
- 3.) สร้างตัวเลขสุ่มเทียมโดยใช้สูตร
- xi= (xi-1+xi-n) (mod m)
- Ri-n= xi/m
วิธีการใช้เศษเหลือ (Congruent Method)
- วิธีการที่นิยมใช้ที่สุดในการสร้างตัวเลขแบบสุ่มคือการใช้เศษเหลือของผลคูณ (Multiplicative Congruential Method)
- โดยใช้สูตร xi+1 =axi (mod m)
- ด้วยการกำหนดค่าให้ a และ m ซึ่งจะต้องไม่เป็นค่าลบและกำาหนดค่าเริ่มต้น x0
เวลาในการทำงาน หน่วยความจำที่ใช้ หรือการพิสูจน์ความถูกต้อง
- ขึ้นกับแต่ละขั้นตอนวิธีเพราะขั้นตอนวิธีต่างกันจะมีเวลาในการทำงานและหน่วยความจำที่ใช้ต่างกัน การพิสูจน์ความถูกต้องของตัวสร้างเลขสุ่มเทียมแต่ละขั้นตอนวิธีก็ต่างกันด้วย
ปัญหา
- คาบเวลาการซ้ำสั้นกว่าที่คาดเอาไว้สำหรับบางสถานะ seed (สถานะเริ่มต้น)
- ขาดเอกรูป (Non-Uniform) ในการแจกแจงลำดับสุ่มเสมือนที่สร้างขึ้นมาเมื่อสร้างตัวเลขสุ่มมาแล้วเป็นจำนวนมาก
- เกิดความสัมพันธ์กับค่าที่อยู่ติดกันซึ่งอาจทำให้ผู้โจมตีสามารถคาดเดาตัวต่อไปได้
- การแจกแจงที่มีมิติหรือขอบเขตที่ไม่ดี (poor dimension) ในลำดับสุ่มเสมือนที่ได้จากตัวสร้างเลขสุ่มเทียม
จุดบกพร่องเหล่านี้มีตั้งแต่ไม่สามารถสังเกตเห็นได้จนกระทั่งสามารถเห็นได้อย่างชัดเจน ตัวอย่างหนึ่งก็คือแรนดู RANDU ซึ่งเป็นขั้นตอนวิธีในการสร้างเลขสุ่มเทียมที่ใช้กันมากว่าทศวรรษบนคอมพิวเตอร์ mainframe ซึ่งไม่สมบูรณ์แบบ แต่เนื่องด้วยในสมัยนั้นวิทยาการในการตรวจสอบที่มียังมีไม่เพียงพอ ทำให้ความไม่สมบูรณ์แบบดังกล่าวไม่ถูกตรวจพบเป็นระยะเวลายาวนาน อีกตัวอย่างหนึ่งของปัญหาก็คือการวิจัยในหลาย ๆ สาขาในช่วงเวลาดังกล่าวซึ่งอาศัยการเลือกแบบสุ่ม การจำลองแบบวิธีมอนติคาโล Monte Carlo method หรือในทางอื่น ๆ ได้ผลการวิจัยที่มีความน่าเชื่อถือน้อยกว่าที่ควรจะเป็น
กับการเข้ารหัส
ลำดับสุ่มเสมือนส่วนใหญ่ที่ได้จากขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมเป็นหนึ่งในแกนกลางทั้งทางทฤษฏีและทางปฏิบัติของการเข้ารหัส (Cryptography) ไม่ว่าจะมีวิธีการหรือไม่มีวิธีการในการจำแนกลำดับสุ่มเสมือนคุณภาพสูงของตัวสร้างเลขสุ่มเทียมออกจากลำดับสุ่มแท้จริงโดยที่ยังไม่รู้ขั้นตอนวิธีที่ใช้และยังไม่รู้สถานะเริ่มต้นที่ใช้
ความมั่นคงและระเบียบวิธีการในการเข้ารหัสของขั้นตอนวิธีตัวสร้างเลขสุ่มเทียม มีใช้กันส่วนมากตั้งอยู่บนสมมุติฐานที่ว่าเป็นไปไม่ได้ที่จะแยกลำดับสุ่มเสมือนจากการใช้งานของตัวสร้างเลขสุ่มเทียมที่เหมาะสมออกจากลำดับสุ่มแท้จริงได้ ตัวอย่างหนึ่งที่เห็นได้ชัดคือ กระแสข้อมูลรหัส (stream ciphers) ซึ่งส่วนมากทำงานโดยใช้ตัวดำเนินการทางตรรกศาสตร์ exclusive or (XOR) ระหว่างข้อความปกติกับผลลัพธ์จากตัวสร้างเลขสุ่มเทียมผลิตข้อความรหัส (ciphertext) ออกมา การออกแบบตัวสร้างเลขสุ่มเทียม ที่สามารถเข้ารหัสได้อย่างเพียงพอต่อความต้องการในปัจจุบันนี้เป็นสิ่งที่ยากอย่างสุดสุดเพราะว่า ตัวสร้างเลขสุ่มเทียม ที่ออกแบบนี้นอกจากจะต้องสอดคล้องกฎเกณฑ์ข้อกำหนดพื้นฐานสำหรับตัวสร้างเลขสุ่มเทียมทั่วไปที่ไม่ได้ใช้เข้ารหัสแล้วยังต้องสอดคล้องกับกฎเกณฑ์ข้อกำหนดต่าง ๆ เพิ่มเติมเพื่อเป็นเครื่องยืนยันว่าสามารถใช้เข้ารหัสได้อย่างเพียงพอ
ในการเข้ารหัสที่ปลอดภัย
ตัวสร้างเลขสุ่มเทียมที่เหมาะสำหรับใช้งานในการเข้ารหัส เรียกว่าตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัส cryptographically secure PRNG (CSPRNG) ขณะที่ตัวสร้างเลขสุ่มเทียมทั่ว ๆ ไปนั้นแค่ผ่านการทดสอบทางสถิติจำนวนหนึ่งก็พอ ส่วนตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัสต้องผ่านการทดสอบทางสถิติทั้งหมดและต้องอยู่ภายในเวลาแบบฟังก์ชันพหุนามกับขนาดของค่าเริ่มต้น (seed) ถึงแม้ว่าคุณสมบัติดังกล่าวจะไม่สามารถพิสูจน์ได้ในทางปฏิบัติก็ตาม เรายังสามารถแสดงหลักฐานข้อพิสูจน์ที่แข็งแรงเพียงพอให้เห็นได้ว่าตัวสร้างเลขสุ่มเทียมที่สร้างขึ้นมีความมั่นคงเชิงรหัสหรือไม่ โดยลดรูปคุณสมบัติดังกล่าวไปสู่ปัญหาที่ยากทางคณิตศาสตร์ที่เป็นที่รู้จักกันซึ่งเป็นหนึ่งในกลุ่มปัญหา NP เช่นการแยกตัวประกอบจำนวนเต็มที่มีหลาย ๆ หลัก โดยปกติแล้วต้องใช้เวลาหลายปีในการตรวจสอบกว่าจะสามารถยืนยันได้ว่าขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมใด ๆ นั้นจะเป็นตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัสหรือไม่
รายการของตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัส (CSPRNG)
- Stream ciphers
- Block ciphers วิ่งใน counter หรือ output feedback mode
- ตัวสร้างเลขสุ่มเทียมที่ออกแบบมาเป็นอย่างดีสำหรับการเข้ารหัสโดยเฉพาะ
- Microsoft's Cryptographic Application Programming Interface function CryptGenRandom
- Yarrow algorithm (incorporated in Mac OS X and FreeBSD)
- Fortuna
- การผสมระหว่างขั้นตอนวิธีตัวสร้างเลขสุ่มเทียมดั้งเดิมหลาย ๆ ตัวโดยมีเป้าหมายในการกำจัดลำดับที่ดูเหมือนไม่ได้สุ่มออกไป
- การออกแบบขั้นตอนชนิดพิเศษที่ตั้งอยู่บนสมมุติฐานอย่างยากทางคณิตศาสตร์เช่น Micali-Schnorr, ขั้นตอนวิธี Blum Blum Shub ซึ่งได้พิสูจน์ความมั่นคงของรหัสได้เป็นอย่างดีไว้แล้ว ขั้นตอนวิธีเหล่านี้จะใช้เวลาช้ากว่าตัวสร้างเลขสุ่มเทียมแบบอื่นและใช้งานไม่ได้ในทางปฏิบัติด้านอื่น ๆ นอกจากใช้ในการเข้ารหัสเท่านั้น
BSI evaluation criteria
หน่วยงานความมั่นคงทางสารสนเทศของเยอรมัน (The German Federal Office for Information Security: BSI) ได้จัดตั้งกฎเกณฑ์ในการกำหนดคุณภาพของตัวสร้างเลขสุ่มเทียมขึ้นดังนี้
- K1 ลำดับสุ่มเสมือนซึ่งมีโอกาสต่ำที่หลักที่อยู่ติดกันจะมีค่าซ้ำกัน
- K2 ลำดับสุ่มเสมือนซึ่งไม่สามารถแยกจากลำดับสุ่มแท้จริงด้วยการทดสอบทางสถิติที่แน่ชัด การทดสอบโมโนบิต monobit test (จำนวนที่เท่ากันของเลขศูนย์และเลขหนึ่งในลำดับ), การทดสอบโปกโกอร์ poker test (ตัวอย่างพิเศษของ chi-square test), การทดสอบการวิ่งruns test (นับจำนวนความถี่ของการวิ่งของความยาวที่ต่าง ๆ กัน), การทดสอบการวิ่งระยะยาว longruns test (ตรวจสอบการวิ่ว่ามี ความยาวมากกว่า 34 or หรือใหญ่กว่า 20 000 bits ในลำดับหรือไม่ — both from BSI2 (AIS 20, v. 1, 1999) and FIPS (140-1, 1994), และ การทดสอบความผิดพลาดอันเนื่องมากจากความสัมพันธ์autocorrelation test ใจความสำคัญของการทดสอบเหล่านี้คือลำดับย่อยใด ๆ ที่เลือกมาจะต้องไม่มีข้อมูลใดของตัวถัดไปของลำดับปรากฏอยู่
- K3 สำหรับในทางปฏิบัติเป็นไปไม่ได้ที่ผู้โจมตีใด ๆ จะคำนวณหรือเดาตัวเลขสุ่มได้จากลำดับย่อยใด ๆ ที่ได้มา ตัวก่อนหน้าหรือตัวถัดไปของลำดับหรือจากสถานะใด ๆ ของตัวสร้างเลขสุ่มเทียม
- K4 สำหรับในทางปฏิบัติเป็นไปไม่ได้ที่ผู้โจมตีใด ๆ จะคำนวณหรือเดาตัวเลขสุ่มได้จาก สถานะภายในของตัวสร้างเลขสุ่มเทียม ตัวก่อนหน้าหรือตัวถัดไปของลำดับหรือสถานะก่อนหน้าใด ๆ ของ ตัวสร้างเลขสุ่มเทียม
สำหรับโปรแกรมในการเข้ารหัสตัวสร้างเลขสุ่มเทียม (PRNG) ที่ครบตามเงื่อนไขของมาตรฐาน K3 หรือ K4 เท่านั้นที่ยอมรับได้ว่าเป็นตัวสร้างเลขสุ่มเทียมที่มีความมั่นคงเชิงรหัส (CSPRNG)
การใช้งาน
การแจกแจงไม่เอกรูป (Non-Uniform Distribution)
ตัวเลขที่เลือกมาจากการแจกแจงความน่าจะเป็นที่ไม่เอกรูปสามารถสร้างโดยใช้การแจกแจงเอกรูป (uniform distribution ) ตัวสร้างเลขสุ่มเทียม PRNG และ function ที่เกี่ยวข้องกับการแจกแจง 2 ประเภท
1: cumulative distribution function ของ:
. เลือก c แบบสุ่มจากการแจกแจงเอกรูปและหาความหนาแน่นของความน่าจะเป็นจะได้
ดังนั้น
คือตัวเลขแบบสุ่มที่ได้จากการแจกแจง.
2: ตัวผกผัน Cumulative Gaussian distribution
พร้อมกับ ตัวสร้างเลขสุ่มเทียม เอกรูปแบบอุดมคติในช่วง (0, 1) เป็น input x จะให้ลำดับของค่าบวกซึ่งเป็นการแจกแจงแบบ Gaussian distribution ออกมา
- เมื่อใช้ในทางปฏิบัติการแสดงตัวเลขจะต้องมีการตัดหางที่ยาวไม่มีที่สิ้นสุดของการแจกแจงให้เป็นค่าที่มี่ที่สิ้นสุด
- การคำนวณซ้ำหลายครั้งควรลดให้เป็นแบบ Ziggurat algorithm เพื่อความเร็วที่มากขึ้นของการสร้างด้วยหลักการคล้ายกับ (Rayleigh distribution) และ (Poisson distribution) ก็สามารถนำมาใช้ในการสร้างการแจกแจงแบบไม่เป็นเอกรูปได้เช่นกัน
โปรแกรมประยุกต์และการประยุกต์ใช้งานในด้านอื่น ๆ
- KeyPass
- QFX keyscramble
- โปรแกรมสุ่มเลขบัตรประจำตัวประชาชน-สุ่มเลขบัตรประชาชนสำหรับใช้ในการสมัครสมาชิกเว็บต่าง ๆ เพื่อความปลอดภัยของผู้สมัครสมาชิก
- Passward Generator
- การพยากรอากาศ
- การทำนายอนาคต
- GPS สามารถหาเวลาที่ต่างกันระหว่างเครื่องรับกับดาวเทียมได้อย่างมีประสิทธิภาพและมีราคาไม่แพงทำให้กลายเป็นเครื่องมือที่ทุกคนสามารถใช้ได้
- การโคจรของดาวเทียม ดาวเทียมทุกดวงสามารถใช้คลื่นความถี่เดียวกันได้โดยไม่เกิดการรบกวนต่อกัน ดาวเทียมแต่ละดวงจะมี Pseudo Random code เป็นของเฉพาะตัว ดังนั้นเวลาเครื่องรับนำรหัสมาใช้ต้องให้ถูกตามหมายเลขดาวเทียม
- ทฤษฏีความโกลาหล (Chaos theory) ปรากฏการณ์ที่ดูเหมือนว่าเกิดขึ้นอย่างสะเปะสะปะแต่แฝงไปด้วยความเป็นระเบียบ
- วิธีการชนะที่รูเล็ตคาสิโนออนไลน์จากจุดบกพร่องของตัวสร้างเลขสุ่มเทียมของคาสิโนออนไลน์
ดูเพิ่ม
- Pseudorandom binary sequence
- Random number generator attack
- Quisi random
- Pseudorandom generator theorem
- Pseudorandom function
- Chaos theory
อ้างอิง
- Michael Luby, Pseudorandomness and Cryptographic Applications, Princeton Univ Press, 1996. A definitive source of techniques for provably random sequences.
- Donald Knuth. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1997. . Chapter 3, pp. 1–193.
Extensive coverage of statistical tests for non-randomness.
- R. Matthews Maximally Periodic Reciprocals Bulletin of the Institute of Mathematics and its Applications 28 147-148 1992
- J. Viega, Practical Random Number Generation in Software, in Proc. 19th Annual Computer Security Applications Conference, Dec. 2003.
- John von Neumann, "Various techniques used in connection with random digits," in A.S. Householder, G.E. Forsythe, and H.H. Germond, eds., Monte Carlo Method, National Bureau of Standards Applied Mathematics Series, 12 (Washington, D.C.: U.S. Government Printing Office, 1951) : 36-38.
- NIST Recommendation for Random Number Generation Using Deterministic Random Bit Generators
- Luc Devroye (1986). Non-Uniform Random Variate Generation. New York: Springer-Verlag.
- http://www.tuct.ac.th/Computer/sm/Chapter3.pdf 2016-03-14 ที่ เวย์แบ็กแมชชีน
- http://www.gpsthaionline.com/index.php?option=com_content&view=article&id=96:gps-pseudo-random-code&catid=26:gps-articles&Itemid=57 2011-11-14 ที่ เวย์แบ็กแมชชีน
- http://www.slideshare.net/ApplesMountain/chaos-theory-4968454
- http://www.shmatsunaga.com/?p=395[]
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisudbthkhwamniidrbaecngihprbprunghlaykhx krunachwyprbprungbthkhwam hruxxphipraypyhathihnaxphipray bthkhwamnimienuxhahruxrupaebbkhlaytara nganwicy khxesnxokhrngkar hruxlksnaxunthiimepnsaranukrm bthkhwamnitxngkarcdrupaebbkhxkhwam karcdhna karaebnghwkhx karcdlingkphayin aelaxun bthkhwamnitxngkarphisucnxksr xacepndankarichphasa karsakd iwyakrn rupaebbkarekhiyn hruxkaraeplcakphasaxun twsrangelkhsumethiym xngkvs pseudorandom number generator hrux PRNG khuxtwsrangelkhsumpraephthhnung mikhwamsakhyinthangkhnitsastr karekharhs aelakaresiyngochkh twsrangelkhsumethiymmithngidcakhardaewrsungepnkarsumaeth aelacaksxftaewrsungepn pseudorandomness khaxthibaytwsrangelkhsumethiymhruxthiruckkninchuxtwsrangbitsumaebbkahndid Deterministic random bit generator DRBG epnkhntxnwithisahrbichinkarsrangladbkhxngtwelkhthimikhwamiklekhiyngkbkhunsmbtikhxngkarsum thungladbtwelkhthiidcakkhntxnwithitwsrangelkhsumethiymnicaiklekhiyngkbladbelkhsumaethcring aetkimidepnladbtwelkhaebbsumthiaethcringenuxngcakladbtwelkhthiidxxkmacaktwsrangelkhsumethiymthnghmdidmacakklumelk khxngkhaerimtnthikahndihepntwtngtn seed khxngtwsrangelkhsumethiym thungcamithisamarthnamasrangladbsumaethid aetladbsumesmuxnthiidcaktwsrangelkhsumethiymexngkmikhwamsakhyinthangptibtihlay xyang thngindankarcalxng echnrabbkayphaphthiich indankarekharhs cryptography indan procedural generation swnihyekiywkhxngkbkhxmphiwetxrkrafiks opraekrmprayuktaelawidioxekmkhnxxkaebb khntxnwithiechingsummakmayexngkidxiththiphlmacaktwsrangelkhsumethiymepnswnhnunginkaraekpyha nxkcakkarichnganaelwkarphisucnwatwsrangelkhsumethiymichnganidcringkmikhwamsakhyimaephkn sungkarphisucnnitxngxasykarwiekhraahthangkhnitsastrxyangramdrawnginkarthaihaenicidwatwsrangelkhsumethiymidsrangladbsumesmuxnthimilksnasumephiyngphxsahrbkarichnganprawtitwxyangkarwnsakhxngwithimidedilsaekhwr twsrangelkhsumethiymthixasykhxmphiwetxryukhaerk khidkhnody cxhn fxn nxymnn inpi kh s 1946 ruckkninnamkhxng withimidedilsaekhwr middle square method khntxnwithinikhux rbtwelkhidekhamaepntwtngtnknatwelkhnnmaykkalngdwy 2 aelwnahlktrngklangxxkcakphllphththiid kcaidtwelkhsumkhunmatamtxngkar sungsamarthnatwelkhnimaepntwtngtninkarsrangtwelkhsumxun txipidrhsethiymInput epntwelkh Output ykkalngsxng Input thinatwelkhtaaehnngklangxxk int main int in int tmp in in int tmp2 tmp hacanwnhlk int length 0 while tmp2 gt 0 length tmp2 10 int tmp3 tmp pow 10 length 2 dungswnkhanghnahlkklangxxkma int tmp4 length 2 0 tmp tmp3 pow 10 length 2 1 tmp tmp3 pow 10 length 2 dungswnkhanghlnghlkklangxxkma int out tmp3 pow 10 length 2 tmp4 th i nahl ktrngklangxxkael w return out pyhakhxng middle square method khuxthaythisudaelwcasakbladbsumsungsrangkhunkxnhna bangxncathaihekidkarwnsaerwmakechn 00000 sungthanaipthdlxngthatamwithinicaphbwaid 0000000000 thukkhrng sungfxn nxymnn ktrahnkthungpyhadngklawechnkn aetekhakhidwamnephiyngphxaelwkbwtthuprasngkhinkarichngankhxngekha ekhaidichklwithikarthangkhnitsastrbangxyanginkarkhadedalwnghnakxncaisepntwtngtnsungcasamarthsxnkhxphidphladdngklawiwid txma middle square method thukaethnthicakwithikarxunthisbsxnaelamikhwamlaexiydxxnmakkwasungladbsumesmuxnthiidmikhwamiklekhiyngladbsumaethcringmakkwakhabkarwnsatwsrangelkhsumethiymerimtncaksthanaerimtnxairkidodyichsthana seed sthanaerimtn epntwerimtnkhxngtwsrangelkhsumethiym sungthaihekidkarwnsakhxngladbidodykhwamyawsungsudkhxngladbsumesmuxnkxnekidkarsaekidkhunthukwdcakkhnadkhxngsthanasungwdidodykhwamyawkhxngbit khwamyawkhabkhxngkarwnsasungsudcayawephimepn 2 ethathuk 1 bitthiephimkhuncungthaihngaythicasrang twsrangelkhsumethiymthimikhabkarwnsathiyawephiyngphxsahrbhlay opraekrminthangptibti thasthanakhxngtwsrangelkhsumethiymmi n bit khabkarwnsacaimyawekinkwa 2n echn ercisetxreluxnpxnklbidechingesnLinear Feedback Shift Registers LFSRs odypkticathukthaihmikhabkarwnsathimikhwamyawaennxnkhux 2n 1 twsrangsmphakhechingesnLinear congruential generators mikhabkarwnsasungsamarthkhanwnidcakkarhatwprakxb miks Mixes immikhxbngkhb mikhabkarwnsaodyechliy 2n 2 miks Mixes sungsamarthyxnklbid mikhabkarwnsaodyechliy 2n thungaemwatwsrangelkhsumethiymcamikarsakhxngphllphthhlngcakthungkhabkarwnsaaetkarecxtwsaimidhmaykhwamwamnkhrbkhabkarwnsaesmxipephraakhabkarwnsathiaethcringxaccayawkwaniraykartwxyangkhxngtwsrangelkhsumethiym Pseudo Random Generator Shift register4 bit Fibonacci LFSR phrxmkbaephnphaphaesdngsthana16 bit Fibonacci LFS16 bit Galois LFSRtwsrangelkhsumethiymaebbblmblmchb LFSRs Maximal periodic reciprocalskhntxnwithiinkarekharhsthiichtwsrangelkhsumethiym PRNG in counter modePRNG APIS thimichuxesiyng Random class in the Java programming language SecureRandom class in the Java programming languagePRNG thiich External entropy Microsoft Windows Mac OS X and FreeBSD Linux and Unix LavaRnd The open source LGPL successor to Lavarand HotBits random orgtwxyangkhntxnwithixyangngaywithitdklangkhxngphlkhun Midproduct Method 1 eluxktwelkhsihlk 2 kha x 0 aela x0 2 khunkha x 0 aela x0 ekhadwykn 3 ichsihlkklangkhxngphlkhunthiidinkhx 2 epntwelkhsumethiym x1 4 khun kha x0 aela x1 5 thasakhntxn 3 aela 4 cnkwacaidtwelkhsumethacanwnthitxngkarwithitwkhunkhngthi Constant Multiplier Technique 1 kahndkhakhngthi k khnadsihlk aelakhaerimtn x0 2 khunkha k aela x0 ekhadwykn 3 ichsihlkklangkhxngphlkhunthiidinkhx 2 epntwelkhsumethiym x1 4 khun kha k aela x1 5 thasakhntxn 3 aela 4 cnkwacaidtwelkhsumethacanwnthitxngkarwithikarbwkessehlux Additive Congruent Method 1 kahndtwelkhcanwnetm x1 x2 xn 2 srang xn 1 xn 2 caktwelkhinkhx 1 3 srangtwelkhsumethiymodyichsutr xi xi 1 xi n mod m Ri n xi mwithikarichessehlux Congruent Method withikarthiniymichthisudinkarsrangtwelkhaebbsumkhuxkarichessehluxkhxngphlkhun Multiplicative Congruential Method odyichsutr xi 1 axi mod m dwykarkahndkhaih a aela m sungcatxngimepnkhalbaelakaahndkhaerimtn x0ewlainkarthangan hnwykhwamcathiich hruxkarphisucnkhwamthuktxngkhunkbaetlakhntxnwithiephraakhntxnwithitangkncamiewlainkarthanganaelahnwykhwamcathiichtangkn karphisucnkhwamthuktxngkhxngtwsrangelkhsumethiymaetlakhntxnwithiktangkndwypyhakhabewlakarsasnkwathikhadexaiwsahrbbangsthana seed sthanaerimtn khadexkrup Non Uniform inkaraeckaecngladbsumesmuxnthisrangkhunmaemuxsrangtwelkhsummaaelwepncanwnmak ekidkhwamsmphnthkbkhathixyutidknsungxacthaihphuocmtisamarthkhadedatwtxipid karaeckaecngthimimitihruxkhxbekhtthiimdi poor dimension inladbsumesmuxnthiidcaktwsrangelkhsumethiym priphumi 3 miti khxng 100 000 khathisrangkhunmadwy aernduRANDU odycudaetlacudaesdng 3 ladbyxykhxngtwelkhsumethiym cudbkphrxngehlanimitngaetimsamarthsngektehnidcnkrathngsamarthehnidxyangchdecn twxyanghnungkkhuxaerndu RANDU sungepnkhntxnwithiinkarsrangelkhsumethiymthiichknmakwathswrrsbnkhxmphiwetxr mainframe sungimsmburnaebb aetenuxngdwyinsmynnwithyakarinkartrwcsxbthimiyngmiimephiyngphx thaihkhwamimsmburnaebbdngklawimthuktrwcphbepnrayaewlayawnan xiktwxyanghnungkhxngpyhakkhuxkarwicyinhlay sakhainchwngewladngklawsungxasykareluxkaebbsum karcalxngaebbwithimxntikhaol Monte Carlo method hruxinthangxun idphlkarwicythimikhwamnaechuxthuxnxykwathikhwrcaepnkbkarekharhsladbsumesmuxnswnihythiidcakkhntxnwithitwsrangelkhsumethiymepnhnunginaeknklangthngthangthvstiaelathangptibtikhxngkarekharhs Cryptography imwacamiwithikarhruximmiwithikarinkarcaaenkladbsumesmuxnkhunphaphsungkhxngtwsrangelkhsumethiymxxkcakladbsumaethcringodythiyngimrukhntxnwithithiichaelayngimrusthanaerimtnthiich khwammnkhngaelaraebiybwithikarinkarekharhskhxngkhntxnwithitwsrangelkhsumethiym miichknswnmaktngxyubnsmmutithanthiwaepnipimidthicaaeykladbsumesmuxncakkarichngankhxngtwsrangelkhsumethiymthiehmaasmxxkcakladbsumaethcringid twxyanghnungthiehnidchdkhux kraaeskhxmulrhs stream ciphers sungswnmakthanganodyichtwdaeninkarthangtrrksastr exclusive or XOR rahwangkhxkhwampktikbphllphthcaktwsrangelkhsumethiymphlitkhxkhwamrhs ciphertext xxkma karxxkaebbtwsrangelkhsumethiym thisamarthekharhsidxyangephiyngphxtxkhwamtxngkarinpccubnniepnsingthiyakxyangsudsudephraawa twsrangelkhsumethiym thixxkaebbninxkcakcatxngsxdkhlxngkdeknthkhxkahndphunthansahrbtwsrangelkhsumethiymthwipthiimidichekharhsaelwyngtxngsxdkhlxngkbkdeknthkhxkahndtang ephimetimephuxepnekhruxngyunynwasamarthichekharhsidxyangephiyngphxinkarekharhsthiplxdphytwsrangelkhsumethiymthiehmaasahrbichnganinkarekharhs eriykwatwsrangelkhsumethiymthimikhwammnkhngechingrhs cryptographically secure PRNG CSPRNG khnathitwsrangelkhsumethiymthw ipnnaekhphankarthdsxbthangsthiticanwnhnungkphx swntwsrangelkhsumethiymthimikhwammnkhngechingrhstxngphankarthdsxbthangsthitithnghmdaelatxngxyuphayinewlaaebbfngkchnphhunamkbkhnadkhxngkhaerimtn seed thungaemwakhunsmbtidngklawcaimsamarthphisucnidinthangptibtiktam erayngsamarthaesdnghlkthankhxphisucnthiaekhngaerngephiyngphxihehnidwatwsrangelkhsumethiymthisrangkhunmikhwammnkhngechingrhshruxim odyldrupkhunsmbtidngklawipsupyhathiyakthangkhnitsastrthiepnthiruckknsungepnhnunginklumpyha NP echnkaraeyktwprakxbcanwnetmthimihlay hlk odypktiaelwtxngichewlahlaypiinkartrwcsxbkwacasamarthyunynidwakhntxnwithitwsrangelkhsumethiymid nncaepntwsrangelkhsumethiymthimikhwammnkhngechingrhshruxim raykarkhxngtwsrangelkhsumethiymthimikhwammnkhngechingrhs CSPRNG Stream ciphers Block ciphers wingin counter hrux output feedback mode twsrangelkhsumethiymthixxkaebbmaepnxyangdisahrbkarekharhsodyechphaa Microsoft s Cryptographic Application Programming Interface function CryptGenRandom Yarrow algorithm incorporated in Mac OS X and FreeBSD Fortuna karphsmrahwangkhntxnwithitwsrangelkhsumethiymdngedimhlay twodymiepahmayinkarkacdladbthiduehmuxnimidsumxxkip karxxkaebbkhntxnchnidphiessthitngxyubnsmmutithanxyangyakthangkhnitsastrechn Micali Schnorr khntxnwithi Blum Blum Shub sungidphisucnkhwammnkhngkhxngrhsidepnxyangdiiwaelw khntxnwithiehlanicaichewlachakwatwsrangelkhsumethiymaebbxunaelaichnganimidinthangptibtidanxun nxkcakichinkarekharhsethannBSI evaluation criteriahnwyngankhwammnkhngthangsarsnethskhxngeyxrmn The German Federal Office for Information Security BSI idcdtngkdeknthinkarkahndkhunphaphkhxngtwsrangelkhsumethiymkhundngni K1 ladbsumesmuxnsungmioxkastathihlkthixyutidkncamikhasakn K2 ladbsumesmuxnsungimsamarthaeykcakladbsumaethcringdwykarthdsxbthangsthitithiaenchd karthdsxbomonbit monobit test canwnthiethaknkhxngelkhsunyaelaelkhhnunginladb karthdsxbopkokxr poker test twxyangphiesskhxng chi square test karthdsxbkarwingruns test nbcanwnkhwamthikhxngkarwingkhxngkhwamyawthitang kn karthdsxbkarwingrayayaw longruns test trwcsxbkarwiwami khwamyawmakkwa 34 or hruxihykwa 20 000 bits inladbhruxim both from BSI2 AIS 20 v 1 1999 and FIPS 140 1 1994 aela karthdsxbkhwamphidphladxnenuxngmakcakkhwamsmphnthautocorrelation test ickhwamsakhykhxngkarthdsxbehlanikhuxladbyxyid thieluxkmacatxngimmikhxmulidkhxngtwthdipkhxngladbpraktxyu K3 sahrbinthangptibtiepnipimidthiphuocmtiid cakhanwnhruxedatwelkhsumidcakladbyxyid thiidma twkxnhnahruxtwthdipkhxngladbhruxcaksthanaid khxngtwsrangelkhsumethiym K4 sahrbinthangptibtiepnipimidthiphuocmtiid cakhanwnhruxedatwelkhsumidcak sthanaphayinkhxngtwsrangelkhsumethiym twkxnhnahruxtwthdipkhxngladbhruxsthanakxnhnaid khxng twsrangelkhsumethiym sahrbopraekrminkarekharhstwsrangelkhsumethiym PRNG thikhrbtamenguxnikhkhxngmatrthan K3 hrux K4 ethannthiyxmrbidwaepntwsrangelkhsumethiymthimikhwammnkhngechingrhs CSPRNG karichngankaraeckaecngimexkrup Non Uniform Distribution twelkhthieluxkmacakkaraeckaecngkhwamnacaepnthiimexkrupsamarthsrangodyichkaraeckaecngexkrup uniform distribution twsrangelkhsumethiym PRNG aela function thiekiywkhxngkbkaraeckaecng 2 praephth 1 cumulative distribution function F b displaystyle F b khxngf b displaystyle f b F b bf b db displaystyle F b int infty b f b db 0 F F b F 1 displaystyle 0 F infty leq F b leq F infty 1 eluxk c aebbsumcakkaraeckaecngexkrupaelahakhwamhnaaennkhxngkhwamnacaepncaid F b c displaystyle F b c dngnn b F 1 c displaystyle b F 1 c khuxtwelkhaebbsumthiidcakkaraeckaecngf b displaystyle f b 2 twphkphn Cumulative Gaussian distribution erf 1 x displaystyle operatorname erf 1 x phrxmkb twsrangelkhsumethiym exkrupaebbxudmkhtiinchwng 0 1 epn input x caihladbkhxngkhabwksungepnkaraeckaecngaebb Gaussian distribution xxkma emuxichinthangptibtikaraesdngtwelkhcatxngmikartdhangthiyawimmithisinsudkhxngkaraeckaecngihepnkhathimithisinsud karkhanwnsahlaykhrngerf 1 x displaystyle operatorname erf 1 x khwrldihepnaebb Ziggurat algorithm ephuxkhwamerwthimakkhunkhxngkarsrangdwyhlkkarkhlaykb Rayleigh distribution aela Poisson distribution ksamarthnamaichinkarsrangkaraeckaecngaebbimepnexkrupidechnknopraekrmprayuktaelakarprayuktichnganindanxun KeyPass QFX keyscramble opraekrmsumelkhbtrpracatwprachachn sumelkhbtrprachachnsahrbichinkarsmkhrsmachikewbtang ephuxkhwamplxdphykhxngphusmkhrsmachik Passward Generator karphyakrxakas karthanayxnakht GPS samarthhaewlathitangknrahwangekhruxngrbkbdawethiymidxyangmiprasiththiphaphaelamirakhaimaephngthaihklayepnekhruxngmuxthithukkhnsamarthichid karokhcrkhxngdawethiym dawethiymthukdwngsamarthichkhlunkhwamthiediywknidodyimekidkarrbkwntxkn dawethiymaetladwngcami Pseudo Random code epnkhxngechphaatw dngnnewlaekhruxngrbnarhsmaichtxngihthuktamhmayelkhdawethiym thvstikhwamoklahl Chaos theory praktkarnthiduehmuxnwaekidkhunxyangsaepasapaaetaefngipdwykhwamepnraebiyb withikarchnathirueltkhasionxxnilncakcudbkphrxngkhxngtwsrangelkhsumethiymkhxngkhasionxxnilnduephimPseudorandom binary sequence Random number generator attack Quisi random Pseudorandom generator theorem Pseudorandom function Chaos theoryxangxingMichael Luby Pseudorandomness and Cryptographic Applications Princeton Univ Press 1996 A definitive source of techniques for provably random sequences Donald Knuth The Art of Computer Programming Volume 2 Seminumerical Algorithms Third Edition Addison Wesley 1997 ISBN 0 201 89684 2 Chapter 3 pp 1 193 Extensive coverage of statistical tests for non randomness R Matthews Maximally Periodic Reciprocals Bulletin of the Institute of Mathematics and its Applications 28 147 148 1992 J Viega Practical Random Number Generation in Software in Proc 19th Annual Computer Security Applications Conference Dec 2003 John von Neumann Various techniques used in connection with random digits in A S Householder G E Forsythe and H H Germond eds Monte Carlo Method National Bureau of Standards Applied Mathematics Series 12 Washington D C U S Government Printing Office 1951 36 38 NIST Recommendation for Random Number Generation Using Deterministic Random Bit Generators Luc Devroye 1986 Non Uniform Random Variate Generation New York Springer Verlag http www tuct ac th Computer sm Chapter3 pdf 2016 03 14 thi ewyaebkaemchchin http www gpsthaionline com index php option com content amp view article amp id 96 gps pseudo random code amp catid 26 gps articles amp Itemid 57 2011 11 14 thi ewyaebkaemchchin http www slideshare net ApplesMountain chaos theory 4968454 http www shmatsunaga com p 395 lingkesiy