Linux: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ /dev/random

Как извСстно, Ρƒ /dev/random, криптографичСски стойкого Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° псСвдослучайных чисСл (CSPRNG), имССтся ΠΎΠ΄Π½Π° нСприятная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° – Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π—Π° послСдниС нСсколько мСсяцСв срСдства Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайных чисСл Π² ядрС Π±Ρ‹Π»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹, Π½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² этой подсистСмС Ρ€Π΅ΡˆΠ°Π»ΠΈΡΡŒ Π½Π° протяТСнии Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π°ΠΌΠΎΠΊ. Π‘Π°ΠΌΡ‹Π΅ послСдниС измСнСния Π±Ρ‹Π»ΠΈ сдСланы с Ρ†Π΅Π»ΡŒΡŽ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ систСмного Π²Ρ‹Π·ΠΎΠ²Π° getrandom () ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы, Π½ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ Π² основС этого, Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ случайного ΠΏΡƒΠ»Π°. НСдавний ΠΏΠ°Ρ‚Ρ‡ ΡƒΠ΄Π°Π»ΠΈΠ» Π±Ρ‹ этот ΠΏΡƒΠ», ΠΈ, слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ направится ΠΊ основному ядру.

Π­Π½Π΄ΠΈ Лутомирски (Andy Lutomirski) ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ°Ρ‚Ρ‡Π° Π² ΠΊΠΎΠ½Ρ†Π΅ дСкабря. Он вносит Β«Π΄Π²Π° основных сСмантичСских измСнСния Π² случайных API LinuxΒ». ΠŸΠ°Ρ‚Ρ‡ добавляСт Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π»Π°Π³ GRND_INSECURE ΠΊ систСмному Π²Ρ‹Π·ΠΎΠ²Ρƒ getrandom() (хотя Лутомирский обращаСтся ΠΊ Π½Π΅ΠΌΡƒ ΠΊΠ°ΠΊ ΠΊ getentropy(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² glibc с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ getrandom() с фиксированными Ρ„Π»Π°Π³Π°ΠΌΠΈ); этот Ρ„Π»Π°Π³ заставляСт Π²Ρ‹Π·ΠΎΠ² всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ количСство Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π±Π΅Π· Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Ρ‡Ρ‚ΠΎ эти Π΄Π°Π½Π½Ρ‹Π΅ случайны. Π―Π΄Ρ€ΠΎ просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ всС усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ случайныС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. «ВСроятно, Π»ΡƒΡ‡ΡˆΠ΅Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ β€žINSECUREβ€œ (нСбСзопасным), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ использованию этого API для Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² бСзопасности».

ΠŸΠ°Ρ‚Ρ‡ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ». Π’ настоящСС врСмя ядро ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° ΠΏΡƒΠ»Π° случайных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… соотвСтствуСт /dev/random, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” /dev/urandom, ΠΊΠ°ΠΊ описано Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ 2015 Π³ΠΎΠ΄Π°. Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ» β€” это ΠΏΡƒΠ» для /dev/random; Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ для этого устройства Π±ΡƒΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ (имССтся Π² Π²ΠΈΠ΄Ρƒ Π΅Π³ΠΎ имя) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΈΠ· систСмы Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ собрана «достаточная» энтропия для удовлСтворСния запроса. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ чтСния ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ссли Π² ΠΏΡƒΠ»Π΅ нСдостаточно энтропии.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· /dev/random Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ getrandom() со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ flags Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ (ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Π»Π°Π³ GRND_RANDOM Π² noop). ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСского Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл (CRNG), Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· /dev/random ΠΈ Π²Ρ‹Π·ΠΎΠ²Ρ‹ getrandom(…,0) Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ количСство случайных Π΄Π°Π½Π½Ρ‹Ρ….

Лутомирский Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: Β«Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ» Linux ΠΈΠ·ΠΆΠΈΠ» сСбя. CRNG Linux Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π΄Π°ΠΆΠ΅ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ» Π½Π΅ являСтся Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π² любом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, ΠΈ для Π΅Π³ΠΎ поддСрТания трСбуСтся ΠΌΠ½ΠΎΠ³ΠΎ инфраструктуры ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ цСнности».

ИзмСнСния Π±Ρ‹Π»ΠΈ сдСланы с ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ пострадали, ΠΈ Π½Π° самом Π΄Π΅Π»Π΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ гСнСрация ΠΊΠ»ΡŽΡ‡Π΅ΠΉ GnuPG, станСт помСньшС.

Β«Π­Ρ‚ΠΈ сСрии Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. /dev/urandom остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ. /dev/random ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ блокируСтся сразу послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½ΠΎ блокируСтся мСньшС, Ρ‡Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅. getentropy () с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ подходящим для практичСских Ρ†Π΅Π»Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅Β».

Лутомирский ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π΄ΠΎ сих ΠΏΠΎΡ€ остаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ вопрос ΠΎ Ρ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ ядро ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «истинныС случайныС числа», Ρ‡Ρ‚ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ядро. Он Π²ΠΈΠ΄ΠΈΡ‚ для этого Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ: «соблюдСниС государствСнных стандартов». Лутомирский ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Ссли ΡƒΠΆ ядро Π΄ΠΎΠ»ΠΆΠ½ΠΎ это ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ, Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ сдСлано Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ пСрСнСсСно Π² пространство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, прСдоставив Π΅ΠΌΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для создания Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡƒΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π¨Ρ‚Π΅Ρ„Π°Π½ ΠœΡŽΠ»Π»Π΅Ρ€ (Stephan MΓΌller) ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл Linux (LRNG) (Π² настоящСС врСмя Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° 26 вСрсия) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ способом прСдоставлСния истинных случайных чисСл для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² этом Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ. LRNG Β«ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт трСбованиям Β«Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ источникам энтропии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайных Π±ΠΈΡ‚ΠΎΠ²Β» SP800-90BΒ», Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ государствСнных стандартов.
ΠœΡΡ‚ΡŒΡŽ Π“Π°Ρ€Ρ€Π΅Ρ‚Ρ‚ (Matthew Garrett) Π²ΠΎΠ·Ρ€Π°ΠΆΠ°Π» ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° «истинныС случайныС Π΄Π°Π½Π½Ρ‹Π΅Β», отмСчая, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ устройства Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ смодСлированы достаточно Ρ‚ΠΎΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… прСдсказуСмыми: Β«ΠΌΡ‹ здСсь Π½Π΅ ΠΎΡ‚Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹Π΅ события».

ΠœΡŽΠ»Π»Π΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ происходит ΠΎΡ‚ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠ³ΠΎ стандарта AIS 31 для описания Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ «с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, с ΠΊΠ°ΠΊΠΎΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ источник ΡˆΡƒΠΌΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ½Ρ‚Ρ€ΠΎΠΏΠΈΡŽΒ».

Помимо Ρ€Π°Π·Π½ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡƒΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ это прСдлагаСтся ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ LRNG, просто ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ссли ΠΎΠ½ доступСн Π±Π΅Π· ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.

Как сказал Лутомирский: Β«Π­Ρ‚ΠΎ Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Если Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π³Π»ΡƒΠΏΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ gnupg, ΠΎΠ½ΠΈ просто истощат Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ основныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с /dev/random: ΠΎΠ½ склонСн ΠΊ DoS (Ρ‚. Π΅. ΠΈΡΡ‚ΠΎΡ‰Π΅Π½ΠΈΡŽ рСсурсов, врСдоносному влиянию ΠΈΠ»ΠΈ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡƒ), ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ для Π΅Π³ΠΎ использования Π½Π΅ трСбуСтся, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ склонСн ΠΊ злоупотрСблСниям. Gnupg β€” это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, это ΠΏΠΎΠ»Π½Ρ‹ΠΉ коллапс. Если ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ gnupg ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΡ‹ снова ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π΅ΠΌΒ».

ΠœΡŽΠ»Π»Π΅Ρ€ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ getrandom() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ GnuPG ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот интСрфСйс, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ обСспСчит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ» Π±Ρ‹Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½. На основС дискуссий с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ GnuPG Π’Π΅Ρ€Π½Π΅Ρ€ΠΎΠΌ ΠšΠΎΡ…ΠΎΠΌ (Werner Koch) ΠœΡŽΠ»Π»Π΅Ρ€ считаСт, Ρ‡Ρ‚ΠΎ гарантия β€” это СдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ GnuPG Π² настоящСС врСмя Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ нСпосрСдствСнно ΠΈΠ· /dev/random. Но Ссли Π΅ΡΡ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ ΠΎΡ‚ΠΊΠ°Π·Ρƒ Π² обслуТивании (ΠΊΠ°ΠΊ Π½Π° сСгодня /dev/random), Ρ‚ΠΎ ΠΏΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ Лутомирского, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ прилоТСниями.

Π’Π΅ΠΎΠ΄ΠΎΡ€ Π¦Π°ΠΎ (Theodore Yue Tak Ts’o), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ подсистСмы случайных чисСл Linux, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» своС ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ нСобходимости Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ»Π°. Он сказал, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ этого ΠΏΡƒΠ»Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ эффСктивно ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΈΠ΄Π΅ΠΈ, Ρ‡Ρ‚ΠΎ Linux ΠΈΠΌΠ΅Π΅Ρ‚ настоящий Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл (TRNG): «это Π½Π΅ являСтся бСссмыслицСй, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всСгда Π΄Π΅Π»Π°Π»ΠΈ *BSD".

Он Ρ‚Π°ΠΊΠΆΠ΅ обСспокоСн Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прСдоставлСниС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° TRNG Π±ΡƒΠ΄Π΅Ρ‚ просто ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС ΠΏΡ€ΠΈΠΌΠ°Π½ΠΊΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ считаСт, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅, учитывая Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Linux, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ TRNG Π² ядрС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π΅ Ρ€Π΅ΡˆΠΈΡ‚ Π΄Π°ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° основС root-ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ: Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² цСлях бСзопасности Π±Ρ‹Π»ΠΎ установлСно ΠΊΠ°ΠΊ root, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Β«Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΒ» случайным числам".

ΠœΡŽΠ»Π»Π΅Ρ€ спросил, Π½Π΅ отказался Π»ΠΈ Π¦Π°ΠΎ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ сам Π΄Π°Π²Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ». Π¦Π°ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π·ΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈ Лутомирского ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²ΠΎΠ·Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² добавлСния Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйса ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ядро.

Β«Π―Π΄Ρ€ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π» Π»ΠΈ ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½ noise source Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ GPG ΠΈΠ»ΠΈ OpenSSL β€” это смутноС ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ TRUERANDOM Β«Π»ΡƒΡ‡ΡˆΠ΅Β», Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ хотят большСй бСзопасности, Ρ‚ΠΎ, нСсомнСнно, ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ заблокируСтся, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, спСциалист ΠΏΠΎ выпуску дистрибутива) вставит Π΅Π³ΠΎ Π² init скрипт ΠΈ систСмы пСрСстанут Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ самому Линусу Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΡƒΒ».

Π¦Π°ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ выступаСт Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„Π°ΠΌ ΠΈ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нуТдаСтся Π² TRNG, способ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΠ½Ρ‚Ρ€ΠΎΠΏΠΈΡŽ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ сбор энтропии β€” это Π½Π΅ Ρ‚ΠΎΡ‚ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ядром Π½Π° всСвозмоТных ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΈΠΌ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдствах, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, само ядро Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ количСство энтропии, обСспСчиваСмоС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ источниками.

Β«Π―Π΄Ρ€ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ вмСстС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ noise source, ΠΈ ΠΎΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚, сколько Π±ΠΈΡ‚ энтропии ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° пытаСтся ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Β«Π΄Π΅Ρ€Π³Π°Π½Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ энтропии» Π½Π° простой Π΄ΠΎ бСзобразия Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ CPU для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… случаСв IOT/Embedded, ΠΊΠΎΠ³Π΄Π° всС рассинхронизировано с СдинствСнным мастСр-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ инструкции CPU для пСрСупорядочСния ΠΈΠ»ΠΈ пСрСимСнования рСгистра ΠΈ Ρ‚. Π΄.Β».

«МоТно Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ прСдоставлСнии инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эти расчСты, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ дистрибутива просто Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ. Если ΠΆΠ΅ это ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΎΠ², Ρ‚ΠΎ ΠΏΡƒΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ сдСлано Π² ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС. И Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π°Ρ‚ΡŒ GPG, OpenSSL ΠΈ Ρ‚. Π΄., Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ: Β«ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ «истинной случайности» ΠΈ Π½Π΅ согласны Π½Π° мСньшСС». МоТно Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ прСдоставляСм интСрфСйсы ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ благодаря доступу ΠΊ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ noise sources, ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ noise source смоТСт Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства».

ИмСла мСсто нСбольшая дискуссия ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ интСрфСйс, вСдь, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… событий ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ послСдствия Π² ΠΏΠ»Π°Π½Π΅ бСзопасности. Π¦Π°ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄Ρ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ наТатия клавиш) ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡƒΠ» ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ сбора энтропии: Β«ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ этого Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ пространство, Π΄Π°ΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ систСмный Π²Ρ‹Π·ΠΎΠ², Π±Ρ‹Π»ΠΎ Π±Ρ‹, ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅, Π½Π΅Π±Π»Π°Π³ΠΎΡ€Π°Π·ΡƒΠΌΠ½ΠΎΒ». Π’ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΈ событий ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ давняя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° подсистСмы случайных чисСл Linux находится Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ. ИзмСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подсистСма случайных чисСл ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π»Π° Π² послСднСС врСмя, фактичСски ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ DoS Π² процСссС Π΅Π΅ использования. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ появились эффСктивныС способы ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ случайныС числа, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ядро. Если ΠΆΠ΅ TRNG всС Π΅Ρ‰Π΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»Π΅Π½ для Linux, Ρ‚ΠΎ этот нСдостаток Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π½ΠΎ, скорСС всСго, это Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ самого ядра.

НСмного Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ πŸ™‚

Бпасибо, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Ρ‘Ρ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ. Π’Π°ΠΌ нравятся наши ΡΡ‚Π°Ρ‚ΡŒΠΈ? Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ большС интСрСсных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²? ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ нас, ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ² Π·Π°ΠΊΠ°Π· ΠΈΠ»ΠΈ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π² Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ, ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ VPS для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ $4.99, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ entry-level сСрвСров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π½Π°ΠΌΠΈ для Вас: Вся ΠΏΡ€Π°Π²Π΄Π° ΠΎ VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ΠΎΡ‚ $19 ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΄Π΅Π»ΠΈΡ‚ΡŒ сСрвСр? (доступны Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ с RAID1 ΠΈ RAID10, Π΄ΠΎ 24 ядСр ΠΈ Π΄ΠΎ 40GB DDR4).

Dell R730xd Π² 2 Ρ€Π°Π·Π° дСшСвлС Π² Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ Equinix Tier IV Π² АмстСрдамС? Волько Ρƒ нас 2 Ρ… Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 Π’Π’ ΠΎΡ‚ $199 Π² НидСрландах! Dell R420 β€” 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB β€” ΠΎΡ‚ $99! Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ инфраструктуру ΠΊΠΎΡ€ΠΏ. класса c ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ сСрвСров Dell R730xd Π•5-2650 v4 ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ 9000 Π΅Π²Ρ€ΠΎ Π·Π° ΠΊΠΎΠΏΠ΅ΠΉΠΊΠΈ?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com