Jump to content

Системные вызовы энтропии

(Перенаправлен из Getrandom )

Системные вызовы энтропии -это системные вызовы в Unix, операционной системы ядрах через которые процессы могут получить энтропийные или случайные данные. Первый из них был getentropy, введенный в операционную систему OpenBSD в выпуске 5.6 (ноябрь 2014 г.), как рефакторинг подхода SYSCTL (3) KERN_ARND, используемого с 1997 года. [ 1 ] Linux предлагает очень похожий системный вызов, getrandom, который был основан на getentropy. [ 2 ] Впервые он был доступен в Linux 3.17, выпущенном в октябре 2014 года. [ 3 ] В июле 2015 года Solaris представила слегка измененные версии getentropy и getrandom. [ 4 ] В августе 2015 года FreeBSD представил read_random Системный вызов для получения случайных данных из ядра. [ 5 ]

Эти системные вызовы позволяют процессам получить доступ к качественным случайным данным без открытия и чтения от псевдо-разгонов случайности .

Microsoft Windows ' CryptGenRandom и iOS яблочный SecRandom API очень похожи. Тем не менее, они не реализованы в качестве системных вызовов.

Мотивация

[ редактировать ]

Традиционно Unix-подобные операционные системы предоставляют случайные данные через два псевдо-расстояния : /dev/random и /dev/urandomПолем Тем не менее, безопасное и надежное чтение случайных данных с этих устройств может быть трудным и сложным. Например, злоумышленник может вмешиваться в доступ к процессу к псевдо-разгонам, открывая все доступные дескрипторы файлов или с аналогичной формой атаки истощения ресурсов . Использование этих устройств также мешает отзыву привилегий . Недевилизованные процессы часто отказываются в возможности открытия и чтения файлов и устройств, а устройства случайности даже не видны для хронов процессов .

Сложность использования случайности псевдо-разгонов часто заставляет разработчиков использовать стандартные библиотечные функции. Некоторые из них, такие как программирования C язык rand(), Posix 's random(), и drand48(), очень небезопасны, когда они используются для криптографии или аналогичных приложений, потому что эти алгоритмы фактически детерминированные, и были преднамеренно калечены, чтобы удовлетворить требования к семенам через интерфейсы srand(), srandom(), и srand48().

Существует значительная разница между этими вызовами: getentropy() гарантирует, что случайные числа будут возвращены немедленно, без какого -либо блокировки. Требуется операционная поддержка, которая гарантирует инициализацию потока случайных данных при первой же возможности. Поощрять другие операционные системы следовать этой модели, getentropy() не может указать ошибки в приложении. Другие вызовы, описанные здесь, могут возвращать ошибки вместо того, чтобы заблокировать неопределенно блокировать. Такая блокирующая семантика была вовлечена в серьезные проблемы. [ 6 ]

Поскольку безопасность становится более распространенным приоритетом в разработке программного обеспечения, случайность качества используется чаще и в большем количестве контекстов. Из -за этого обеспечение качественной случайности становится все более основной ответственностью ядра. Системные вызовы - это традиционный интерфейс, посредством которого процесс использует сервисы основного ядра , а ядра поддерживают доступ к случайности через системные вызовы.

Использование

[ редактировать ]

Поскольку это быстрее и добавляет еще один слой смешивания энтропии, обычно предполагается, что процессы используют данные этих Syscalls с помощью криптографически защищенного генератора номеров псевдорядома (CSPRNG), а не присваивания полученных данных непосредственно переменным. Для этой цели стандартная библиотека OpenBSD C включает в себя функцию arc4random, какие программы ожидают вызову, когда им понадобятся случайные данные. [ 1 ] Нравиться getentropy, arc4random Также не может блокировать и не вернуть ошибку.

Этот подход позволяет программе извлекать меньше энтропии из ядра, не уменьшая прочность его случайных данных. А getentropy Системный вызов разработан на основе этого предположения, поставляя не более 256 байтов за вызов. [ 1 ] [ 7 ]

Смотрите также

[ редактировать ]
  1. ^ Jump up to: а беременный в "GetEntropy (2) страница OpenBSD Man" . OpenBSD Ручные страницы . OpenBSD . Получено 27 мая 2016 года .
  2. ^ «[Патч, RFC] случайный: ввести системный вызов Getrandom (2)» . LKML . 17 июля 2014 года . Получено 30 декабря 2015 года .
  3. ^ "Linux 3.17" . Linux ядра новичков . Получено 30 декабря 2015 года .
  4. ^ Даррен, Моффат. «Соларис новых системных вызовов: getEntropy (2) и getrandom (2)» . /dev/urandom . Оракул. Архивировано из оригинала 2 августа 2017 года . Получено 3 января 2016 года .
  5. ^ "Revision R286839" . svnweb.freebsd.org . FreeBSD . Получено 29 августа 2017 года .
  6. ^ «Питоны блокируются во время загрузки» . Получено 28 апреля 2017 года .
  7. ^ "Arc4random (3) страница OpenBSD Man" . OpenBSD Ручные страницы . OpenBSD . Получено 27 мая 2016 года .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a9061b1244a124476641eb18a068d709__1679922600
URL1:https://arc.ask3.ru/arc/aa/a9/09/a9061b1244a124476641eb18a068d709.html
Заголовок, (Title) документа по адресу, URL1:
Entropy-supplying system calls - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)