Безопасность

/ dev / random против / dev / urandom и насколько они безопасны?

/ dev / random против / dev / urandom и насколько они безопасны?

Начиная

Кто бы мог подумать, что создание случайного числа будет таким беспорядком, это должно быть так же просто, как угадать число где-нибудь между заданным диапазоном. Но это не так просто, как кажется, и до сих пор доказано, что все машины не могут генерировать истинное случайное число самостоятельно.

Почему машины не могут генерировать истинные случайные числа самостоятельно?

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

Почему так важно генерировать истинное случайное число?

Возникает вопрос, почему так важна генерация истинных случайных чисел, и ответ на этот вопрос связан с проблемами безопасности. Большинство криптографических алгоритмов основаны на генерации случайных чисел, поскольку эти случайные числа используются для создания криптографических ключей, и если генерируемые случайные числа не являются действительно случайными по своей природе, это делает все эти криптографические методы более слабыми, и эти ключи можно предсказать относительно легче. используя алгоритм, который использовался для генерации этих случайных ключей. Это самая важная причина для истинных случайных чисел, кроме таких приложений, как азартные игры.

Генератор случайных чисел в ядрах Linux:

Тема для нашего сегодняшнего обсуждения основана на генераторе случайных чисел Linux, на каких факторах основан этот генератор и действительно ли это случайное число или это просто еще одно обычно ненадежное случайное число.

Linux использует генератор псевдослучайных чисел (PRNG) или криптографически безопасный генератор псевдослучайных чисел (CSPRNG), что означает, что он использует сложные математические формулы и свойства среды для достижения максимальной случайности. Linux была первой ОС, которая включила PRNG в свое пространство ядра. Это было реализовано Теодором Цо в 1994 году.

В Linux есть три категории генераторов случайных чисел: / dev / random, / dev / urandom, / dev / arandom. Это все три файла, в которых Linux хранит случайные числа. Случайные числа в этих файлах генерируются с использованием шума окружающей среды от драйверов устройств и других источников. Кроме того, чтобы гарантировать случайность в своих случайных числах, Linux использует энтропию, которая представляет собой степень неопределенности или беспорядка между ними. Вы также можете найти страницу руководства для генератора случайных чисел Linux (ГСЧ) здесь:

http: // man7.org / linux / man-страницы / man4 / random.4.html

/ dev / случайный против / dev / urandom против / dev / arandom:

Основные различия между / dev / random, / dev / urandom и / dev / arandom заключаются в том, что / dev / random блокирует, если энтропия не указывает на достаточную случайность, / dev / urandom никогда не блокируется, даже если генератор псевдослучайных чисел не полностью заполняется при загрузке и, наконец, / dev / arandom блокируется только тогда, когда генератор псевдослучайных чисел еще не полностью заполнен. Короче говоря, / dev / random - самый безопасный из всех, затем идет / dev / arandom, а наименее безопасный - / dev / urandom. Обычно используются / dev / random и / dev / urandom, потому что / dev / arandom во многих отношениях похож на / dev / urandom. Короче говоря, оценка энтропии для пула случайных чисел используется для определения случайности генерируемых чисел. Чем больше энтропия, тем больше случайности и лучше. Текущее количество энтропии и размер его пула энтропии доступны в / proc / sys / kernel / random / с именами entropy_avail и pool_size соответственно, которые можно отобразить в терминале с помощью команд:

кошка / proc / sys / ядро ​​/ случайный / entropy_avail

А также:

кошка / proc / sys / ядро ​​/ случайный / размер_пул

Как urandom, так и random используются в разных сценариях. 'Urandom' используется там, где есть постоянная потребность в случайных числах, и его случайность не так важна, в то время как 'random' используется там, где существует проблема безопасности, и его случайность должна быть надежной, поскольку он блокирует вывод случайных чисел, если энтропия не до отметка. Хотя энтропия для urandom (Unlimited Random) не намного слабее, но рекомендуется использовать random, когда требуется большая безопасность из-за возможности атак на число, сгенерированное urandom.

Слабые стороны генераторов случайных чисел Linux

Для оборудования с энергонезависимой памятью:

Для ядер Linux генератор случайных чисел не подходит для встроенного оборудования, такого как маршрутизаторы, в которых состояние загрузки предсказуемо, а источник достаточной энтропии ограничен. Для этого типа оборудования рекомендуется сохранить и использовать состояние генератора случайных чисел (ГСЧ) перед выключением, которое будет использоваться при следующей загрузке. В таких случаях с маршрутизаторами злоумышленники могут только скомпрометировать и предсказать сгенерированные случайные числа, если у них есть доступ ко всем каналам связи маршрутизатора, и они перехватывают его каналы связи, или если они напрямую получили доступ к сохраненному состоянию RNG из самого маршрутизатора.

Из-за этого недостатка ГСЧ в случае оборудования на помощь приходят сторонние генераторы энтропии. Эти генераторы энтропии, такие как 'hasged', используют синхронизацию кэша процессора, внешние устройства ввода аудио и видео для увеличения энтропии до приемлемой степени.

Оценка энтропии:

Как упоминалось ранее, ядро ​​Linux определяет случайность с точки зрения энтропии, но фактически не вычисляет энтропию каждый раз, а вместо этого использует оценки энтропии. Несколько исследований также показали, что оценка энтропии случайных чисел, используемая в Linux, не подходит или не подходит для более точных оценок, что делает общую случайность чисел более слабой.

Хотя в генераторе случайных чисел Linux есть некоторые недостатки, но он намного лучше по сравнению с другими генераторами случайных чисел, не говоря уже о текущих исправлениях, которые предоставляются участниками и разработчиками Linux.

Заключение:

Все это было с моей стороны про Генератор случайных чисел в ядре Linux. Я хорошо провел время, распространяя эти знания с вами. Надеюсь, вы узнали что-то новое, а также поделитесь этими знаниями со всем миром. Наконец, спасибо, что потратили время на эту статью.

Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...
Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...