(Translated by https://www.hiragana.jp/)
伪随机数生成器 - 维基百科,自由的百科全书 とべ转到内容ないよう

伪随つくえすう生成せいせい

维基百科ひゃっか自由じゆうてき百科ひゃっかぜん

伪随つくえすう生成せいせい英語えいごpseudo random number generatorPRNG),またしょう确定せいずいつくえとく生成せいせい英語えいごdeterministic random bit generatorDRBG),[1]いち生成せいせい数字すうじ序列じょれつてき算法さんぽう,其特せい近似きんじずいつくえすう序列じょれつ。伪随つくえすう生成せいせい生成せいせいてき序列じょれつ并不ずいつくえいん此它てきごと一个数完全由一个初始值决定,这个はつはじめ值被しょうずいつくえ种子えいRandom seed(seed种子ゆう使用しよう接近せっきん于真ずいつくえてきかたけんずいつくえすう生成せいせい生成せいせい)。つきかん接近せっきん于真ずいつくえてき序列じょれつ以通过硬けんずいつくえすう生成せいせい生成せいせいただし伪随つくえすう生成せいせいいん为其生成せいせい速度そくどさい现的优势,ざい实践ちゅう显得ゆう重要じゅうよう[2]

PRNG仿真(れいこうむとく卡洛方法ほうほう)、电子ゆうれい过程生成せいせい)以及みつ码学とう应用てき核心かくしんみつほどじょ不能ふのう从以まえてき输出ちゅう预测输出,而要さいようさら复杂てき具有ぐゆう简单PRNGs线性特性とくせいてき算法さんぽう

PRNGてき核心かくしん良好りょうこうてき统计特性とくせい通常つうじょう需要じゅよう严格てき数学すうがく分析ぶんせきらい证明PRNG生成せいせいてき序列じょれつてきじゅん确性あし接近せっきんずいつくえ以满あし预期用途ようと

周期しゅうきせい

[编辑]

PRNG使用しようずいつくえ种子えいRandom seed种子じょう态)从任意にんいはつはじめじょう态启动,使用しようどう一状态进行初始化时,它将はじめ生成せいせいしょうどうてき序列じょれつ。PRNGてき周期しゅうきてい义为:序列じょれつてき无重复前缀长ざい所有しょゆうおこりはじめじょう态中てき最大さいだい值。周期しゅうき受状态数てききりせい通常つうじょうようとくくらい数表示すうひょうじしか而,まい增加ぞうかいち个比とく周期しゅうき长度就可能かのう增加ぞうかいちばい所以ゆえん构建周期しゅうきあし够长てきPRNG对于许多实际应用ほどじょらい说是很容えきてき

如果PRNGてき内部ないぶじょう包含ほうがんくらい么它てき周期しゅうきかいちょう,甚至可能かのう非常ひじょうたん。对于だい多数たすうPRNG,周期しゅうき长度てき计算并不需要じゅようへん历整个周线性はん馈移位寄いきそんLFSRてき周期しゅうき通常つうじょうただしこうせんせいどう方法ほうほうてき周期しゅうき以通过因しき分解ぶんかい进行计算。 つきかんPRNGざい达到周期しゅうききさきかい现重复的结果,ただしじゅう序列じょれつてき现并意味いみいた达了いち个周いん为它てき内部ないぶじょう可能かのう输出ようだい很多。对于输出为1てきPRNGs,这一点尤其明显。

确定せい生成せいせいてき潜在せんざい问题

[编辑]

ざい实践ちゅう,许多つね见的PRNGかい显示导致统计しき检测测试しつ败的じょう况。约翰·冯诺依曼警告けいこく不要ふようPRNG错误かい释为ずいつくえすう生成せいせい,还开玩笑说:“にんなん使用しようざん术方ほう生成せいせいずいつくえすうてきじんみやこただし有罪ゆうざいてき”。[3]

  • ぼう些种じょう态的周期しゅうき预期てきたん(ざい这种じょう况下,这种种子じょう态可以称为“じゃく”);
  • 生成せいせいてき大量たいりょう数字すうじ分布ぶんぷひとし匀;
  • 连续值的关联せい
  • 输出序列じょれつてき维数分布ぶんぷ
  • ぼう些值现的位置いち间的距离与ずいつくえ序列じょれつ分布ぶんぷてき距离不同ふどう

ざい很多领域,21せい纪之まえてき很多赖于ずいつくえ选择、こうむとく卡洛拟或しゃ以其方式ほうしき赖PRNGてき研究けんきゅう工作こうさくゆかり使用しようりょうひん质较てきPRNGs,其可もたれせい可能かのうてき结果ようていとく[4] そく使つかいざいこんてんゆう时也需要じゅよう谨慎,如下めんてきらいくに际统计科学かがく百科ひゃっかぜんえいInternational Encyclopedia of Statistical Scienceてき警告けいこくしょしめせ[5]:

The list of widely used generators that should be discarded is [long] ... Check the default [PRNG] of your favorite software and be ready to replace it if needed. This last recommendation has been made over and over again over the past 40 years. Perhaps amazingly, it remains as relevant today as it was 40 years ago.

举例らい说,こう虑一广泛使用しようてき编程语言Java。Java仍然使用しようせんせいどう方法ほうほう (LCG)らい实现PRNG。[6][7] しか而其てき品質ひんしつ很差。

だい一个避免了主要问题而且运行速度很快的PRNG1998ねん发布てきMersenne Twister。此后还开发了其他だか品質ひんしつてきPRNG。

もと于线せい递归てき生成せいせい

[编辑]

ざい20せいしたはんかのう,PRNGてき标准算法さんぽうゆかりせんせいどう方法ほうほうLCG)构成。众所周知しゅうち,LCGてき质量优,ただし也没ゆうさらこのみてき方法ほうほう。Press et al. (2007) 描述りょう这种じょう况:“如果所有しょゆういん为LCG而受质疑てき科学かがく论文从书じょう消失しょうしつ么每一个架子上都会有一个拳头大小的空隙”。[8]

伪随つくえ生成せいせい构造てき重大じゅうだい进展,ざい二元域中引入的线性递归技术,这种生成せいせい线性はん馈移位寄いきそんゆう关。

1997ねん发明てき梅森うめもり旋转算法さんぽう,避免りょう很多问题[9]梅森うめもり旋转算法さんぽうてき周期しゅうき长达证明ざい623个维じょうひとし分布ぶんぷてき(对于32すう值),どう时它てき运行速度そくど其他统计方法ほうほうかい

ざい2003ねんGeorge Marsaglia提出ていしゅつりょうxorshift生成せいせい家族かぞく[10]它也もと于线せい递归。这种生成せいせいてき运行速度そくど非常ひじょうかいさい结合线性操作そうさつう过了きょう有力ゆうりょくてき统计测试。

ざい2006ねんWELL家族かぞくてき生成せいせい提出ていしゅつ[11] WELl生成せいせいざいぼう些方めんひさげだかりょう梅森うめもり旋转算法さんぽうてき质量,梅森うめもり旋转算法さんぽう具有ぐゆう非常ひじょうだいてきじょう态空间,而且从含有がんゆう大量たいりょう0值的じょう态空间中てき恢复非常ひじょう缓慢。

みつ码安全的ぜんてき伪随つくえすう生成せいせい

[编辑]

适合于加みつ应用ほどじょてきPRNGしょうみつ安全あんぜんてきPRNGCSPRNG)。CSPRNGてきいち必要ひつよう条件じょうけん不知ふちどうはつはじめ种子てき敌人ざいぶんべん生成せいせいてき输出序列じょれつずいつくえ序列じょれつ时只有可ゆかゆるがせりゃくてき优势。换句话说,わかPRNGただ需要じゅようどおり特定とくてい统计测试时,则CSPRNG必须どおり过种规模てき项式复杂内的ないてき所有しょゆう统计测试。つきかん这一性质的证明超出了计算复杂性理论目前的技术水平,大量たいりょうてき证据如下,CSPRNG规约到计算こま难的数学すうがく问题,れい如整すう分解ぶんかい[12] 通常つうじょうざい一个算法被认证为CSPRNGぜん需要じゅよう多年たねんてき检验。

CSPRNGてき类别包括ほうかつ

  • stream ciphers
  • わざ术模しきある输出はん馈模しきてき块加みつ
  • 证密码安全的ぜんてきPRNG,れい如微软的みつ码学应用编程せっこう函数かんすうCryptGenRandomYarrow algorithm集成しゅうせい进Mac OS XFreeBSD)以及Fortuna
  • 组合PRNG个PRNG算法さんぽう组合ざい一起以移除可检测的非随机性
  • もと于数がく难题かり设的设计,れい如Micali–Schnorr generator、Naor-Reingold伪随つくえ函数かんすう、Blum Blum Shub算法さんぽう,这些算法さんぽう具有ぐゆう较强てき安全あんぜんせいそう于传统方ほう,这些算法さんぽうてき速度そくど非常ひじょう缓慢,对于许多应用实际てき

通用つうようPRNG。やめ经证あきらみつ码安全的ぜんてきPRNG以通过单こう函数かんすう构造。[13]しか而,这些构造ざい实际应用ちゅう非常ひじょう缓慢,主要しゅようよう于理论研究けんきゅうゆう证据表示ひょうじNSAむかいNIST认证てき伪随つくえ生成せいせいDual_EC_DRBG注入ちゅうにゅうりょう对称きさき门。[14]

だい多数たすう使用しようPRNGてきみつ码算法的ほうてき安全あんぜんせいもと于下めんてきかり设:PRNGずいつくえ序列じょれつてきぶんべん不可ふかぎょうてき

BSI评估标准

[编辑]

とくこく联邦しんいき安全あんぜん办公しつ(とくBundesamt für Sicherheit in der Informationstechnik, BSI)せい订了四条评估确定性随机生成器的标准。[15] 如下:

  • K1 - 产生てきずいつくえすう序列じょれつ彼此ひし不同ふどうてきがいりつ应该很高てき
  • K2 - すえぼう些统计测试,无法ぶんべん产生てき序列じょれつずいつくえ序列じょれつ。这些测试包括ほうかつ: monobit测试(序列じょれつちゅうてき01てき数量すうりょう相等そうとう)、poker测试(chi-squared测试てき特殊とくしゅじょう况)、runs测试(不同ふどう长度运行てき频率)、BSI[15] NIST,[16]てきlongruns测试、autocorrelation测试。
  • K3 - 给定にんなん序列じょれつにんなんおさむ击者无法计算きさき序列じょれつあるもの生成せいせいてき内部ないぶじょう
  • K4 - 给定生成せいせいてき内部ないぶじょう态,にんなんおさむ击者无法计算まえてき序列じょれつあるもの生成せいせいまえてきじょう

对于みつ码学应用,ただゆう满足K3K4标准てき生成せいせい接受せつじゅてき

数学すうがくてい

[编辑]

给定

  • - うえてきがいりつ分布ぶんぷ,其中实数しゅうじょうてきBorel set
  • - そらしゅうれい
  • - そら集合しゅうごう

たたえいち个函すう是正ぜせい整数せいすうてきいち个子しゅう)为一个伪随机生成器,とう且仅とう

相關そうかん條目じょうもく

[编辑]

參考さんこう資料しりょう

[编辑]
  1. ^ Barker, Elaine; Barker, William; Burr, William; Polk, William; Smid, Miles. Recommendation for Key Management (PDF). NIST Special Publication 800-57. NIST. July 2012 [19 August 2013]. (原始げんし内容ないようそん (PDF)于2013-06-26). 
  2. ^ Pseudorandom number generators. Khan Academy. [2016-01-11]. (原始げんし内容ないようそん于2020-11-26). 
  3. ^ Von Neumann, John. Various techniques used in connection with random digits (PDF). National Bureau of Standards Applied Mathematics Series. 1951, 12: 36–38 [2019-02-25]. (原始げんし内容ないようそん (PDF)于2020-11-06). 
  4. ^ Press et al. (2007), chap.7
  5. ^ L'Ecuyer P. (2010), "Uniform random number generators", International Encyclopedia of Statistical Science (editor—Lovric M.) Springer.
  6. ^ Random (Java Platform SE 8)页面そん档备份そん互联网档あん), Java Platform Standard Edition 8 Documentation.
  7. ^ Random.java页面そん档备份そん互联网档あん) at OpenJDK.
  8. ^ Press et al. (2007) §7.1
  9. ^ Matsumoto, Makoto; Nishimura, Takuji. Mersenne twister: a 623-dimensionally equi-distributed uniform pseudo-random number generator (PDF). ACM Transactions on Modeling and Computer Simulation (ACM). 1998, 8 (1): 3–30 [2019-02-25]. doi:10.1145/272991.272995. (原始げんし内容ないようそん (PDF)于2019-09-25). 
  10. ^ Marsaglia, George. Xorshift RNGs. Journal of Statistical Software. July 2003, 8 (14) [2019-02-25]. (原始げんし内容ないようそん于2015-09-02). 
  11. ^ Panneton, François; L'Ecuyer, Pierre; Matsumoto, Makoto. Improved long-period generators based on linear recurrences modulo 2 (PDF). ACM Transactions on Mathematical Software. 2006, 32 (1): 1–16 [2019-02-25]. doi:10.1145/1132973.1132974. (原始げんし内容ないようそん (PDF)于2020-08-11). 
  12. ^ Song Y. Yan. Cryptanalytic Attacks on RSA. Springer, 2007. : 73. ISBN 978-0-387-48741-0. 
  13. ^ Pass, Rafael. Lecture 11: The Goldreich-Levin Theorem (PDF). COM S 687 Introduction to Cryptography. [20 July 2016]. (原始げんし内容ないようそん (PDF)于2019-07-12). 
  14. ^ Matthew Green. The Many Flaws of Dual_EC_DRBG. [2019-02-25]. (原始げんし内容ないようそん于2016-08-20). 
  15. ^ 15.0 15.1 Schindler, Werner. Functionality Classes and Evaluation Methodology for Deterministic Random Number Generators (PDF). Anwendungshinweise und Interpretationen (AIS). Bundesamt für Sicherheit in der Informationstechnik: 5–11. 2 December 1999 [19 August 2013]. (原始げんし内容ないようそん (PDF)于2018-01-19). 
  16. ^ Security requirements for cryptographic modules. FIPS. NIST: 4.11.1 Power–Up Tests. 1994-01-11 [19 August 2013]. (原始げんし内容ないようそん档于2013-05-27). 

參考さんこう書目しょもく

[编辑]
  • Barker E., Kelsey J., Recommendation for Random Number Generation Using Deterministic Random Bit Generators页面そん档备份そん互联网档あん), NIST SP800-90A, January 2012
  • Brent R.P., "Some long-period random number generators using shifts and xors", ANZIAM Journal, 2007; 48:C188–C202
  • Gentle J.E. (2003), Random Number Generation and Monte Carlo Methods, Springer.
  • Hörmann W., Leydold J., Derflinger G. (2004, 2011), Automatic Nonuniform Random Variate Generation, Springer-Verlag.
  • Knuth D.E.. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89684-2. Chapter 3. [Extensive coverage of statistical tests for non-randomness.]
  • Luby M., Pseudorandomness and Cryptographic Applications, Princeton Univ Press, 1996. ISBN 9780691025469
  • von Neumann J., "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.
  • Peterson, Ivars. The Jungles of Randomness : a mathematical safari. New York: John Wiley & Sons. 1997. ISBN 0-471-16449-6. 
  • Press W.H., Teukolsky S.A., Vetterling W.T., Flannery B.P. (2007), Numerical Recipes (Cambridge University Press).
  • Viega J., "Practical Random Number Generation in Software页面そん档备份そん互联网档あん)", in Proc. 19th Annual Computer Security Applications Conference, Dec. 2003.

外部がいぶ連結れんけつ

[编辑]