УДК 519.21
Гунькин М.А. студент
4 курс, факультет «Информатика и системы управления» МГТУ им.
Н.Э. Баумана Россия, г. Москва
Шапиев М.М. студент
4 курс, факультет «Информатика и системы управления» МГТУ им.
Н.Э. Баумана Россия, г. Москва Никитин К.И. студент
4 курс, факультет «Информатика и системы управления» МГТУ им.
Н.Э. Баумана Россия, г. Москва ВЫБОР ИСТОЧНИКА СЛУЧАЙНОСТИ ДЛЯ ГЕНЕРАТОРА
СЛУЧАЙНЫХ ЧИСЕЛ
Аннотация: Одним из самых критичных вопросов при создании какого-либо генератора случайных величин с нужным нам распределением вероятности, является выбор качественного базового генератора. В качестве базового генератора можно выбрать аппаратный или программный генератор. Аппаратные генераторы имеют лучшую энтропию чем программные, так как они основаны на физических явлениях, таких как дробовой шум, тепловой шум, квантовые эффекты, фотоэффект, и т.д. Так же их существенным плюсом является отсутствие периода работы Т. Это является большим плюсом, особенно для криптографии.
В статье рассматриваются: генератор случайных чисел, псевдослучайные числа, распределение вероятности, аппаратные генераторы, /dev/random, CryptGenRandom, Java SecureRandom, Intel RdRand.
Gunkin M.A. student
4 year, Faculty of Computer Science and Management Systems
BMSTU them. N.E. Bauman Russia, Moscow Shapiev M.M. student
4 year, Faculty of Computer Science and Management Systems
BMSTU them. N.E. Bauman Russia, Moscow Nikitin K.I. student
4 year, Faculty of Computer Science and Management Systems
BMSTU them. N.E. Bauman Russia, Moscow
Annotation: One of the most critical issues when creating a random variable generator with the probability distribution we need is the choice of a high-quality basic generator. You can select a hardware or software generator as the base generator. Hardware generators have better entropy than software ones, as they are based on physical phenomena, such as shot noise, thermal noise, quantum effects, photoelectric effect, etc.also their essential advantage is the lack of operating period T. This is a big plus, especially for cryptography.
The article discusses: the random number generator, pseudo-random numbers, probability distribution, generators, hardware /dev/random, CryptGenRandom, Java SecureRandom, the Intel RdRand.
Одним из самых критичных вопросов при создании какого-либо генератора случайных величин с нужным нам распределением вероятности, является выбор качественного базового генератора. В качестве базового генератора можно выбрать аппаратный или программный генератор. Аппаратные генераторы имеют лучшую энтропию чем программные, так как они основаны на физических явлениях, таких как дробовой шум, тепловой шум, квантовые эффекты, фотоэффект, и т.д. Так же их существенным плюсом является отсутствие периода работы Т. Это является большим плюсом, особенно для криптографии.
В качестве кандидатов на базовый генератор рассматривались четыре варианта:
/dev/random в UNIX/Linux - специальные символьные псевдоустройства в некоторых UNIX-подобных системах. Они предоставляют интерфейс к системному генератору случайных чисел, который выводит шум из драйверов устройств и других источников в «хаотичный» пул (англ. entropy pool). Генератор также сохраняет необходимое количество битов шума в этом пуле и формирует из него случайную либо псевдослучайную последовательность чисел. «Истинная» случайность попадает в систему. Вычисляется её энтропия и немедленно добавляется к значению внутренней энтропии счётчика. После исправления и привнесения белого шума (whitening) получившаяся энтропия передаётся в пул ядра, откуда берут случайные числа /dev/random и /dev/urandom. /dev/random получает их из пула напрямую, если у счётчика энтропии имеется запрашиваемое количество чисел. Конечно, при этом счётчик уменьшается. В противном случае счётчик блокируется до тех пор, пока в систему не попадёт новая порция энтропии. Важный момент заключается в том, что получаемые /dev/random данные обязательно подвергаются операции привнесения белого шума. С /dev/urandom та же самая история, за исключением момента, когда в системе не оказывается нужного количества энтропии: вместо применения блокировки он получает «низкокачественные» случайные числа от CSPRNG (Cryptographically secure pseudorandom number generator), работающего вне рассматриваемой нами системы. Стартовое число для этого CSPRNG
выбирается лишь один раз (или каждый раз, неважно) исходя из имеющихся в пуле данных. Его нельзя считать безопасным. Достоинством данного генератора является то, что он включен во все UNIX подобные системы и надежность источника энтропии. Но после запуска ОС необходим длительный период времени для накопления количества энтропии, запрошенного пользователем при запуске генератора.
CryptGenRandom - это криптографически защищенная функция генерации псевдослучайных чисел, которая включена в Microsoft CryptoAPI. В программах Win32 корпорация Майкрософт рекомендует использовать ее для генерации случайных чисел. Источниками энтропии служат текущее время, размер жёсткого диска, размер свободной памяти, номер процесса и NETBIOS-имя компьютера Преимущества данного генератора заключаются в том, что он встроен по-умолчанию в Windows и скорость работы. Явным недостатком можно назвать сильную зависимость качества генерируемых последовательностей от используемого криптопровайдера (CSP). Java SecureRandom - использует детерминированный алгоритм для формирования псевдослучайной последовательности из истинно случайного seed. В SecureRandom реализована неочевидная логика работы, зависящая от операционной системы, параметров -Djava.security.egd, securerandom.source и механизма инициализации. Инициализация SHA1PRNG может быть явной и неявной. По умолчанию поддерживаются три варианта неявной инициализации (получения seed): NativeSeedGenerator, URLSeedGenerator, ThreadedSeedGenerator. Какой из них будет использоваться - зависит от операционной системы и параметра securerandom.source. Байты seed, полученные одним из трех способов, конкатенируются с байтами из функции getSystemEntropy и затем результат перемешивается с помощью SHA1: State0= SHA1(getSystemEntropy() || seed), где || означает конкатенацию. Реализация NativeSeedGenerator работает в случае, если securerandom.source=file:/dev/urandom или file:/dev/random. В Linux и Solaris эта реализация читает байты из /dev/random, а в Windows используется Microsoft CryptoAPI. URLSeedGenerator работает, когда securerandom.source!=file:/dev/urandom или file:/dev/random. Он просто читает байты из указанного источника. Реализация ThreadedSeedGenerator работает, если параметр securerandom.source не указан и использует несколько потоков исполнения (threads). Явная инициализация SHA1PRNG происходит при вызове либо конструктора SecureRandom(byte[] seed) (при этом State0 будет присвоено SHA1(seed)), либо методов setSeed(long seed) или setSeed(byte[] seed) — здесь Statei будет присвоено значение Statei 0 seed. Достоинство данного генератора большой объем энтропии(внутреннего состояния). Но его отрицательной стороной является медленное накопление требуемой энтропии, что значительно сказывается на скорости работы. По сравнению с Java SecureRandom /dev/random блокируется при нехватке энтропии, что приводит к зависанию приложения.
Intel RdRand - это инструкция для генерации случайного числа при помощи встроенного генератора случайных чисел. В основе этого генератора лежит цифровая схема, на двух инверторах и двух транзисторах изображенная на рис.1.
Рис.1 Цифровая схема генератора Bull Mountain
При включении транзисторов инверторы выставляют одинаковые значения на Node A и Node B (логическую 1). При возрастании тактовой частоты оба транзистора выключаются и появляется непредсказуемость, так как нельзя предугадать какой узел выставится в положение 0, а какой в положение 1.
Генератор Тип СВ Достоинства Недостатки
/dev/random Случайная Есть во всех Unix, надёжный источник энтропии Длительный период времени для накопления требуемого количества энтропии
Microsoft CryptoAPI Псевдослучайная Встроен по-умолчанию в Windows, высокая скорость работы Сильная зависимость от используемого криптопровайдера(CSP)
Java SecureRandom Псевдослучайная Большой объем внутреннего состояния Медленный сбор энтропии
Intel RdRand Случайная Высокая скорость работы и накопления энтропии Ограничение по аппаратной платформе (только в процессорах Intel 2012 и новее)
Заключение
Рассмотрев вышеупомянутые генераторы и проанализировав итоговую таблицу, было решено выбрать в качестве базового генератора Intel RdRand, так как он обладает высокой скоростью работы наравне с генератором Microsoft, но при этом генерирует истинно случайные величины. Существуют и более производительные генераторы, но для их реализации необходимо иметь дополнительное аппаратное обеспечение. Поэтому мы
выбрали относительно высокие показатели скорости в сочетании с доступностью и простотой реализации.
Использованные источники:
1. Кнут Д. Искусство программирования. Том 2. Получисленные алгоритмы. // М.: Вильямс, 2001, 832 с.
2. Источник энтропии для базового генератора непрерывно распределенных случайных величин. Черненький В.М., Шапиев М.М., Никитин К.И. // Журнал "Динамика сложных систем XXI век" №4, 2017, 18-21 стр., ООО «Издательство «Радиотехника».
3. Intel Developer Documentation, "Intel Digital Random Number Generator Revision 2.0", // California, USA: Intel Corporation, 2014
4. Intel Developer Documentation, "Intel 64 and IA-32 Architectures", // California, USA: Intel Corporation, 2016
УДК 51-74
Гунькин М. А. студент
4 курс, факультет «Информатика и системы управления»
МГТУ им. Н.Э. Баумана Россия, г. Москва
Никитин К.И. студент
4 курс, факультет «Информатика и системы управления» МГТУ им. Н.Э. Баумана Россия, г. Москва
Шапиев М. М. студент
4 курс, факультет «Информатика и системы управления» МГТУ им.
Н.Э. Баумана Россия, г. Москва СПОСОБЫ МАШИННОГО ОБУЧЕНИЯ И ЕГО ПРИМЕНЕНИЕ НА
ПРАКТИКЕ
Аннотация: С каждым годом популярность машинного обучения все больше увеличивается. Вы можете услышать про машинное обучение уже не только узких кругах и в специальной литературе, но и в любом другом месте. Многие из нас слышали про машинное обучение, но не многие из нас знакомы со способами машинного обучения. Способы машинного обучения бывают совершенно разные, а порой даже противоположные друг другу. Например, метод обучения с учителем совершенно противоположен методу обучения с учителем. Машинное обучения уже давно показало себя не только в теории и на бумаге, но и на практике. Несмотря на то, что внедрение машинного обучения довольно дорогостоящий процесс на сегодняшний день, многие глобальные корпорации активно внедряют его во все бизнес-процессы и это уже дает результаты. Выгоды от использования машинного обучения уже сейчас с лихвой покрывают затраты на него, а это значит, что в будущем, технология будет развиваться.