Содержание
Вокруг трещит и падает мир
Дождь шел три дня. Капли падали и замерзали на стенах, заборах, машинах и ветках деревьев. И если стены, заборы и машины как-то держались, то деревья, обрастая ледяной корой, склонялись к земле все ниже и ниже. Деревья покрылись сосульками, красиво продолжавшими линии ветвей. На третий день я, выезжая на работу, первый раз услышал треск и шум падающей березы на соседнем участке.
Вечером, возвращаясь домой, я уперся в стену из впаянных в лед ветвей и стволов, перегородивших нашу улицу. Ехать дальше было нельзя. На счастье, сквозь лед я увидел приближающуюся фигуру соседа, узбека по имени Егор. Тезка сбегал за бензопилой и через 10 минут мы совместными усилиями пропилили в стене арку, через которую я смог проехать дальше.
Фонари на улице горели, красиво мерцал лед.
Когда заглушили пилу, я отчетливо понял, что мне не нравилось во всей этой красоте. Как только замолкла пила, стал явственно слышен треск. Наш поселок стоит в старом лесу. Деревья метров по 30 высотой и, нагруженные десятками килограммов льда, они гнулись, гнулись и, в конце концов, не выдерживали, трескались и валились на землю. Где-то половина дерева, где-то треть, а где-то и дерево целиком. Стоя среди падающего леса, я не мог быть уверен, что в следующее мгновение мне на голову не упадет соседняя липа. Поэтому я быстро прыгнул в машину и рванул к дому.
Дом тоже стоит среди деревьев, но все же под крышей было спокойнее.
Прошел примерно час и, наконец, случилось то, что, в общем-то, уже давно должно было случиться – где-то дерево упало на провода. Поселок погрузился во мрак.
Я вышел на крыльцо. Вокруг темнота, идет дождь или снег, и то ближе, то дальше – кхххх – трррах! Трещат и валятся деревья. Рядом со старым домом стоит маленькая березовая рощица, всего их штук 10-15, сажал еще мой дед в середине прошлого века. Из них за эту ночь остались целыми две. Остальные все поломаны. Я стоял в темноте, слушал треск и понимал, что ничего не могу сделать ни для деревьев, ни даже для себя. Кто из них уцелеет, уцелеет ли наш дом?
Весь вечер при свечах.
Впрочем, помимо падающих деревьев, появилась еще одна проблема. Котел. Горячую воду по трубам гоняет насос, который работает от электричества, которое отключилось. Если вода перестанет циркулировать, котел перегреется и может взорваться. На случай блэкаута у нас имеется устройство бесперебойного питания для насоса. Работает от автомобильного аккумулятора. Часа три-четыре. Прошло четыре часа, аккумулятор разрядился. Я пошел к машине и снял с нее второй. Он оказался меньше по объему, его хватило на три часа.
Когда устройство запищало, сигнализируя, что до конца работы насоса осталось минут 5-10, в котле как раз полыхало в полную силу. Мы с сыном кинулись вытаскивать пылающие брикеты, заливать их водой. Мы наполнили весь дом дымом, ползали, на четвереньках по котельной, потому что иначе невозможно было дышать, наощупь – глаза в этом дыму было не открыть – доставали лопатой горящие угли и пытались тушить их в ведре с водой. Все было ужасно, но мы справились.
Я бродил по задымленным остывающим комнатам, слышал треск падающих деревьев за окнами и понимал, что мы остались без тепла, без воды и, если дерево упадет-таки на крышу, а это очень возможно, то и без крыши.
И еще я понимал, что ничего не могу с этим сделать.
Вся надежда была на генератор. Только бы он завелся утром. Сейчас, ночью, я решил его не трогать, да и выходить на улицу, чтобы завести его, было жутковато. Заснул я уже под утро, глотая дым и кутаясь в одеяло, мысленно уговаривая генератор не подкачать.
Настало утро. Я выбежал из холодного уже дома. Генератор, конечно, не завелся. Все зимы я держал его в тепле, лелеял, чистил, менял масло, подливал бензин, практически укачивал на руках. И он всегда выручал. Но именно этой зимой я почему-то решил не забирать его домой. Уже давно никаких катаклизмов не случалось, и он стоял, забытый, под навесом, заваленный палыми листьями и уже немного снегом. Генераторы – народ чуткий. Он этого мне не простил.
В это время нас пришел проведать после ночи другой дружественный человек по имени Азиз. Он привел с собой электрика и заявил, что электрик сейчас все починит. «Азиз, — театрально отставив ногу, вскричал я. – Азиз, это – двигатель внутреннего сгорания! Электрик сейчас так же уместен, как водопроводчик при утечке газа!» Едва ли Азиз с безымянным электриком поняли весь трагизм ситуации, но они что-то такое залопотали, из чего я понял, что специалист хочет сперва водки, а потом он починит все незамедлительно.
Пришлось вспоминать мопедно-мотоциклетную юность, проведенную за регулярной чисткой свечей и продуванием карбюраторов. Прокалили, прочистили, продули. Справедливости ради надо сказать, что электрик оказался толковым мужиком и немало помог. И вот генератор затарахтел!
Благородный выхлоп хондовского мотора ласкает слух всех бедолаг вроде меня. Когда дома уже +5 и пар изо рта, когда дети и женщины сбились кучкой в какой-то, по их мнению, самой теплой комнате дома и укрываются там одним одеялом, когда все вокруг трещит и рушится, бодрое тра-та-та-та генератора – лучшее, что может быть на свете.
И вот тогда стало хорошо, а потом и тепло.
Утром мне позвонила одна хорошая знакомая из Москвы. Выслушав мой взволнованный рассказ, она сказала задумчиво: «Ну надо же, а у нас из окна все выглядит очень красиво!»
Вот она, разница городской жизни и жизни в деревне. То, что там красиво, здесь страшно. До сих пор у нас над всеми улицами стоят жуткие арки из обледенелых, погнутых деревьев, до сих пор висят на проводах обломки ветвей, до сих пор днем отключают электричество, чтобы ликвидировать очередной разрыв.
Здесь, за городом, становится очевиднее наша слабость. Что может человек, когда вокруг трещит и падает мир. Только молиться Богу. Ну и держать генератор в тепле.
Фото автора
Владельцы iPhone 14 Pro жалуются в Сети на дрожание и треск камеры
Владельцы iPhone 14 Pro жалуются в Сети на дрожание и треск камеры — Российская газета
Свежий номер
РГ-Неделя
Родина
Тематические приложения
Союз
Свежий номер
Рубрика:
Гаджеты
20. 09.2022 13:46
Богдан Бобров
Первые обладатели iPhone 14 Pro жалуются в интернете на необычные проблемы с камерой.
Владельцы новых яблочных смартфонов постят в Сети видеоролики, на которых отчетливо видно, что модуль камеры при работе сторонних приложений начинает сильно трястись, а в некоторых отдельных случаях надрывно трещит и скрипит. Перезагрузка проблему не решает.
Компания Apple признала проблему и пообещала решить ее до конца сентября с последующими апдейтами.
Поделиться:
#смартфоны
#гаджеты
#Apple
26.11.2022Происшествия
МЧС разработало экстремальное игровое приложение
26.11.2022Экономика
«Запретить продажу iPhone в Китае!» Пользователи Baidu возмущены санкциями США против Huawei и ZTE
26.11.2022Digital
Эльдар Муртазин: Китайское оборудование мешает властям США собирать информацию по всему миру
25.11. 2022Digital
Шварценеггер и Йовович появились в новогоднем видео World of Tanks
25.11.2022Digital
Восстание машин: как защитить себя и домашнюю электронику от взлома?
25.11.2022Digital
Российский стартап «АТОМ» раскрыл логотип будущего электрокара
25.11.2022Digital
Стартовал закрытый бета-тест игры War Robots: Frontiers
25.11.2022Digital
Глава Минцифры Шадаев: Россия достигла технологического суверенитета
25.11.2022Digital
Глава Минцифры не поддержал ограничения на использование WhatsApp
25.11.2022Digital
В Москве прошла презентация игры Atomic Heart
25.11.2022Digital
Россиянам рассказали, как не потерять деньги при вызове мастера по объявлению
25.11. 2022Экономика
Глава Минцифры Шадаев: примерно 20% иностранного ПО не имеют сейчас альтернативы
25.11.2022Digital
«Алиса» внутри: Обзор телевизора от «Яндекса»
24.11.2022Digital
Роскомнадзор: Для онлайн-показов сериалу «Монастырь» не требуется прокатное удостоверение
24.11.2022Экономика
Минцифры пропишет в законе компенсации гражданам за утечки данных
24.11.2022Digital
Глава Минцифры Шадаев: Более 10 тыс. IT-компаний могут лишиться аккредитации
Главное сегодня:
xorshift128 – NCC Group Research
Мостафа Хассан
Криптография, машинное обучение, наступательная безопасность и искусственный интеллект, исследования
15 минут
Краткое описание
- 1. Введение
- 2. Как работает xorshift128 PRNG?
- 3.
Нейронные сети и вентили XOR
- 4. Использование нейронных сетей для моделирования xorshift128 PRNG
- 4.1 Дизайн модели нейронной сети
- 4.2 Результаты моделирования
- 4.3 Модель Deep Dive
- 5. Создание версии xorshift128, устойчивой к машинному обучению
- 6. Заключение
Генераторы случайных чисел (PRNG) с использованием машинного обучения. Взламывая здесь, мы имеем в виду, что можем предсказать последовательность случайных чисел, используя ранее сгенерированные числа, не зная начального числа. Мы начали с взлома простого ГПСЧ, а именно XORShift, следуя указаниям статьи, опубликованной в [1]. Мы упростили структуру нейросетевой модели по сравнению с предложенной в этом посте. Кроме того, мы добились более высокой точности. Этот блог призван показать, как обучить модель машинного обучения, которая может достичь 100% точности при генерации случайных чисел, не зная начального числа. Мы также глубоко погружаемся в обученную модель, чтобы показать, как она работает, и извлечь из нее полезную информацию.
В упомянутом сообщении в блоге [1] автор воспроизвел последовательность xorshift128 PRNG с высокой точностью, не имея начального числа PRNG, используя модель глубокого обучения. После обучения модель может использовать любые четыре последовательных сгенерированных числа для воспроизведения одной и той же последовательности ГПСЧ с побитовой точностью более 95 %. Подробности реализации этого эксперимента и наиболее обученную модель можно найти в [2].
На первый взгляд это кажется немного нелогичным, поскольку вся идея алгоритмов машинного обучения состоит в том, чтобы учиться на шаблонах в данных для выполнения конкретной задачи, начиная от обучения с учителем и без учителя и заканчивая обучением с подкреплением. С другой стороны, основная идея генераторов псевдослучайных чисел состоит в том, чтобы генерировать случайные последовательности и, следовательно, эти последовательности не должны следовать какому-либо образцу. Таким образом, не было никакого смысла (в начале) обучать модель ML, которая учится на шаблонах данных, на PRNG, который не должен следовать никакому шаблону. Не только выучить, но и получить 95% побитовая точность, что означает, что модель будет генерировать точные выходные данные ГПСЧ и ошибается в среднем только на два бита. Итак, как это возможно? И почему машинное обучение может взломать PRNG? Можем ли мы даже улучшить побитовую точность 95%? Это то, что мы собираемся обсудить в оставшейся части этой статьи. Начнем с изучения алгоритма xorshift128.
** Примечание редактора: как это связано с безопасностью? Хотя в этом исследовании рассматривается некриптографический ГПСЧ, в целом нас интересует понимание того, как основанные на глубоком обучении подходы к поиску скрытых шаблонов в функциях, предположительно генерирующих случайный вывод, могут работать в качестве предварительного условия для попытки использовать глубокое обучение для найти ранее неизвестные шаблоны в криптографических (P)RNG, так как это может потенциально послужить интересным дополнительным методом для криптоанализа этих функций. Здесь мы показываем нашу работу в начале исследования этого пространства. **
2. Как работает xorshift128 PRNG?
Чтобы понять, может ли машинное обучение (ML) взломать xorshift128 PRNG, нам нужно понять, как это работает, и проверить, следует ли оно каким-либо шаблонам или нет. Давайте начнем с изучения реализации алгоритма xorshift128 PRNG, чтобы узнать, как он работает. Реализация кода этого алгоритма может быть найдена в Википедии и опубликована в [2]. Вот функция, которая использовалась в репозитории для генерации последовательности PRNG (которая используется для обучения модели ML): 9(т >> 8))
вернуться ш
return _random
Как видно из кода, реализация проста. Он имеет четыре внутренних числа: x, y, z, и w, , представляющих одновременно начальное число и состояние PRNG. Конечно, мы можем обновить эту реализацию генератора, чтобы обеспечить начальное значение другим вызовом функции вместо его жесткого кодирования. Каждый раз, когда мы вызываем генератор, он будет сдвигать внутренние переменные следующим образом: y → x , z → y и w → z . Новое значение w оценивается путем применения некоторых битовых манипуляций (сдвигов и XOR) к старым значениям x и w . Затем новые w возвращаются как новое случайное число, выдаваемое генератором случайных чисел. Назовем выход функции или .
Используя этот код, мы можем вывести логическое выражение каждого бита вывода, что приводит нас к следующим представлениям выходных битов вывода, 9 — это побитовое XOR. Схематическая диаграмма этого алгоритма показана ниже:
Из этого алгоритма видно, что нам нужно только w и x для генерации следующего вывода случайных чисел. Конечно, нам нужно х и х для последующей генерации случайных чисел, но значение o зависит только от х и х .
Итак, после понимания алгоритма мы можем увидеть простую связь между последними четырьмя сгенерированными числами и следующим. Следовательно, если мы знаем последние четыре сгенерированных числа из этого PRNG, мы можем использовать алгоритм для генерации всей последовательности; это может быть основной причиной того, что этот алгоритм не является криптографически безопасным. Хотя сгенерированные алгоритмом числа кажутся случайными без четких отношений между ними, злоумышленник, знающий алгоритм, может предсказать всю последовательность xorshift128, используя любые четыре последовательных сгенерированных числа. Поскольку цель этого поста — показать, как модель ML может изучать скрытые отношения в образце PRNG, мы предположим, что мы знаем только, что существует некоторая связь между вновь сгенерированным числом и его последними четырьмя, не зная реализации алгоритм.
Немного возвращаясь к основному вопросу: могут ли алгоритмы машинного обучения научиться генерировать последовательность xorshift128 PRNG, не зная ее реализации, используя только последние четыре входа?
Чтобы ответить на этот вопрос, давайте сначала представим искусственные нейронные сети (сокращенно ANN или NN) и то, как они могут моделировать вентили XOR.
3. Нейронные сети и вентили XOR
Нейронные сети (NN), также известные как многослойный персептрон (MLP), являются одним из наиболее часто используемых алгоритмов машинного обучения. Он состоит из небольших вычислительных блоков, называемых нейронами или персептронами, организованных в наборы несвязанных нейронов, называемых слоями. Слои связаны между собой, образуя пути от входов НС к ее выходам. На следующем рисунке показан простой пример 2-х слоев NN (входной слой не учитывается). Детали математической формулировки НС выходят за рамки этой статьи.
Пока нейронная сеть обучается на входных данных, связей между нейронами, или весов , становятся сильнее (высокие положительные или низкие отрицательные значения), чтобы представить высокую положительную/отрицательную сильную связь между двумя нейронами. или стать слабее (близко к 0), чтобы показать, что связи вообще нет. В конце обучения эти связи/веса кодируют знания, хранящиеся в модели NN.
Одним из примеров, используемых для описания того, как НС обрабатывают нелинейные данные, является использование НС для моделирования вентиля XOR с двумя входами. Основная причина выбора функции исключающее ИЛИ с двумя входами заключается в том, что хотя она проста, ее выходы не являются линейно разделимыми [3]. Следовательно, использование NN с двумя слоями — лучший способ представить вентиль XOR с двумя входами. На следующем рисунке (из блога Abhranil [3]) показано, как мы можем использовать двухслойную нейронную сеть для имитации XOR с двумя входами. Числа на линиях — это веса, а числа внутри узлов — это пороги (отрицательное смещение) и предполагается использование ступенчатой функции активации.
В случае, если у нас есть более двух входов для XOR, нам нужно будет увеличить количество узлов в скрытом слое (слой посередине), чтобы можно было представить другие компоненты XOR.
4. Использование нейронных сетей для моделирования xorshift128 PRNG
Исходя из того, что мы обсуждали в предыдущем разделе, и нашего понимания того, как работает алгоритм xorshift128 PRNG, теперь становится понятным, что ML может изучать шаблоны, которым следует алгоритм xorshift128 PRNG. Теперь мы также можем решить, как структурировать модель нейронной сети, чтобы воспроизвести алгоритм xorshift128 PRNG. В частности, мы будем использовать плотную нейронную сеть только с одним скрытым слоем, так как это все, что нам нужно для представления любого набора функций XOR, реализованных в алгоритме xorshift128. Вопреки модели, предложенной в [1], мы не видим смысла использовать сложную модель типа LSTM ( «Долгая кратковременная память», тип рекуррентной нейронной сети ), тем более, что все выходные биты напрямую связаны с наборами входных битов с функциями XOR, как мы показали ранее, и нет необходимости сохранять внутреннюю состояний, как это делается в LSTM.
4.1 Дизайн модели нейронной сети
Предлагаемая нами модель будет иметь 128 входных данных на входном слое для представления последних четырех сгенерированных целых чисел, 32-разрядных каждое, и 32 выходных данных в выходном слое, чтобы выразить следующее 32-битное случайно сгенерированное число. Основной гиперпараметр, который нам нужно решить, — это количество нейронов/узлов в скрытом слое. Нам не нужны несколько узлов, которые не могут представлять все термины функции XOR, и в то же время мы не хотим использовать огромное количество узлов, которые не будут использоваться и усложнят модель и увеличат время обучения. время. В этом случае, исходя из количества входных и выходных данных и сложности функций исключающего ИЛИ, мы сделали обоснованное предположение и использовали 1024 скрытые узлы для скрытого слоя. Следовательно, структура нашей нейронной сети выглядит следующим образом (входной слой игнорируется):
________________________________________________________________ Слой (тип) Выходная форма Параметр # ================================================== =============== плотный (Плотный) (Нет, 1024) 132096 _________________________________________________________________ плотности_1 (Плотные) (Нет, 32) 32800 ================================================== =============== Всего параметров: 164,896 Обучаемые параметры: 164 896 Необучаемые параметры: 0 _________________________________________________________________
Как видим, количество параметров (веса и смещения) скрытого слоя составляет 132 096 (128×1024 веса + 1024 смещения), а количество параметров выходного слоя — 32 800 (1024×32 веса + 32 смещения), что дает в общей сложности 164 896 параметров для обучения. По сравнению с моделью, использованной в [1]:
________________________________________________________________
Слой (тип) Параметр формы вывода # ================================================== =============== лстм (LSTM) (нет, 1024) 4329472 _________________________________________________________________ плотный (Плотный) (Нет, 512) 524800 _________________________________________________________________ плотности_1 (Плотные) (Нет, 512) 262656 _________________________________________________________________ плотности_2 (Плотные) (Нет, 512) 262656 _________________________________________________________________ плотности_3 (Плотные) (Нет, 512) 262656 _________________________________________________________________ плотности_4 (Плотные) (Нет, 512) 262656 _________________________________________________________________ плотности_5 (Плотные) (Нет, 32) 16416 ================================================== =============== Всего параметров: 5,921 312 Обучаемые параметры: 5 921 312 Необучаемые параметры: 0 _________________________________________________________________
Эта сложная модель имеет около 6 миллионов параметров для обучения, что усложнит обучение модели и потребует гораздо больше времени для получения хороших результатов. Он также может легко застрять в одном из локальных минимумов в этом огромном 6-миллионном пространстве. Кроме того, при сохранении этой модели и ее последующем обслуживании будет использовано 36 умноженное на пространство, необходимое для хранения/обслуживания нашей модели. Кроме того, количество параметров модели влияет на количество необходимых данных для обучения модели; чем больше параметров, тем больше входных данных необходимо для его обучения.
Еще одна проблема с этой моделью — используемая функция потерь. Наша цель — получить как можно больше правильных битов; следовательно, наиболее подходящей функцией потерь в этом случае является « binary_crossentropy, », а не « mse ». Не вдаваясь в математику обеих этих функций потерь, достаточно сказать, что нас не волнует, будет ли выходное значение равным 0,8, 0,9 или даже 100. Все, о чем мы заботимся, это то, что значение пересекает некоторый порог, чтобы его можно было считать единицей. или не считаться нулем. Еще одним неоптимальным выбором параметра в этой модели является функция активации выходного слоя. Поскольку выходной слой состоит из 32 нейронов, каждый из которых представляет бит, значение которого всегда должно быть 0 или 1, наиболее подходящей функцией активации для этих типов узлов обычно является сигмовидная функция . Напротив, эта модель использует линейную функцию активации для вывода любого значения от -inf до inf. Конечно, мы можем ограничить эти значения, чтобы преобразовать их в нули и единицы, но обучение этой модели будет более сложным и займет больше времени.
Для остальных гиперпараметров мы использовали те же, что и в модели [1]. Кроме того, мы использовали ту же входную выборку, что и другая модель, которая состоит примерно из 2 миллионов случайных чисел, выбранных из приведенной выше функции PRNG для обучения, и 10 000 случайных чисел для тестирования. Образцы случайных чисел для обучения и тестирования формируются в четверку последовательных случайных чисел, которые используются в качестве входных данных для модели, а следующее случайное число используется в качестве выходных данных для модели. Стоит отметить, что мы не думаем, что нам нужен такой объем данных для достижения той производительности, которой мы достигли; мы просто пытались соответствовать статье, на которую делается ссылка. Позже мы можем поэкспериментировать, чтобы определить минимальный размер данных, достаточный для создания хорошо обученной модели. В следующей таблице приведены параметры/гиперпараметры модели для нашей модели по сравнению с моделью, предложенной в [1]:
NN Model in [1] | Our Model | ||
---|---|---|---|
Model Type | LSTM and Dense Network | Dense Network | |
#Layers | 7 | 2 | |
#NEURONS | 1024 LSTM 2592 DENSIO0208 | 5,921,312 (4,329,472 only from the LSTM layer) |
164,896 |
Activation Functions | Hidden Layers: relu Output Layer: linear |
Hidden Layer: relu Output Layer: sigmoid |
|
Loss Function | mse | binary_crossentropy |
NN Model in [1] | Our Model | |
---|---|---|
Bitwise Accuracy | 95 % + | 100 % |
Точность | 26 % | 100 % |
БИТА получение 100% точности обычно не является хорошей новостью. Обычно это означает, что либо у нас нет хорошего представления всего набора данных, либо мы переобучаем модель для выборочных данных, либо проблема детерминирована и не требует машинного обучения. В нашем случае он близок к третьему варианту. Алгоритм xorshift128 PRNG является детерминированным; нам нужно знать, какие входные биты используются для генерации выходных битов, но функция для их соединения, XOR, уже известна.4.3 Подробное описание моделиВ этом разделе мы подробно рассмотрим модель, чтобы лучше понять, что она узнала из данных ГПСЧ и соответствует ли она нашим ожиданиям. 4.3.1 Модель соединений первого уровня Как обсуждалось в разделе 2, xorshift128 PRNG использует последние четыре сгенерированных числа для генерации нового случайного числа. В частности, реализация xorshift128 PRNG использует только первое и последнее числа из четырех, называемых w и 9.0036 x , чтобы сгенерировать новое случайное число, или . Как мы видим, очень мало скрытых узлов подключено к одному из входов, где вес больше ~2,5 или меньше ~-2,5. Остальные узлы с малыми весами от -2 до 2 можно считать несвязанными. Мы также можем заметить, что входы между битами 32 и 95 не связаны ни с какими скрытыми слоями. Это связано с тем, что мы заявили ранее, что реализация xorshift128 PRNG использует только x , биты от 0 до 31, и w , биты от 96 до 127, от входов, а два других входа, y, и z , представляющие биты с 32 по 95, не используются для генерации выходных данных, и это именно то, чему научилась модель. 4.3.2 Анализ выходных данных моделиПодобно тому, что мы делали в предыдущем разделе, на следующем рисунке показаны веса, соединяющие каждый выход по осям X с 1024 скрытыми узлами в скрытом слое: Как и в предыдущем случае. наблюдения, каждый выходной бит связан только с очень немногими узлами из скрытого слоя, может быть, за исключением бита 11, который является менее решающим и может потребовать дополнительной подготовки, чтобы быть менее подверженным ошибкам. Сейчас мы хотим исследовать, как эти выходные биты связаны с входными битами. Здесь мы рассмотрим только первый бит, но все остальное мы можем сделать таким же образом. Если мы сосредоточимся только на бите 0 на рисунке, мы увидим, что он подключен только к пять узлов из скрытых слоев, два с положительными весами и три с отрицательными весами , как показано ниже: Хотя эти узлы выглядят случайными, если мы изобразим их связь со входами, мы получим следующую цифру: Как мы видим, очень мало битов влияет на те скрытые узлы, которые мы обвели на рисунке. 5. Создание устойчивой к машинному обучению версии xorshift128Проанализировав, как работает xorshift128 PRNG и как NN может легко взломать его, мы можем предложить простое обновление алгоритма, которое значительно усложнит взлом с помощью ML. Идея состоит в том, чтобы ввести в начальное число еще одну переменную, которая будет решать:
Это может быть двоично закодировано менее чем 32 битами. Например, только переменные w и x генерируют выходные данные в показанном ранее примере кода, который может быть закодирован в двоичном виде как 1001. Переменная w сдвинута на 11 бит вправо, что может быть закодировано в двоичном виде как 01011 0 , где младший бит 0 представляет правое направление. Переменная x сдвигается на 19 бит вправо, что может быть двоично закодировано как 10011 1 , где младший бит 1 представляет левое направление. Это представление займет 4 бита + 4×6 бит = 28 бит. Конечно, нам нужно убедиться, что 4 бита, которые выбирают переменные, не имеют этих значений: 0000, 0001, 0010, 0100 и 1000, так как они выбрали бы одну или никакую переменную для XOR. Использование этого простого обновления немного усложнит реализацию алгоритма PRNG. Это по-прежнему заставит модель ML изучать только одну возможную последовательность из примерно 16 миллионов различных последовательностей, сгенерированных с помощью одного и того же алгоритма с разными начальными значениями. 6. ЗаключениеВ этом посте обсуждалось, как работает xorshift128 PRNG и как построить модель машинного обучения, которая может учиться на «случайно» сгенерированных числах PRNG, чтобы предсказывать их со 100% точностью. Это означает, что если модель ML получает доступ к любым четырем последовательным числам, сгенерированным из этого PRNG, она может сгенерировать точную последовательность, не получая доступа к начальному числу. Мы также изучили, как мы можем разработать модель NN, которая лучше всего представляла бы этот PRNG. Вот некоторые уроки, извлеченные из этой статьи:
Код Python для обучения и тестирования модели, описанной в этом посте, представлен в этом репозитории в виде блокнота Jupyter. Обратите внимание, что этот код основан на старой версии кода, опубликованной в сообщении в [1], с изменениями, описанными в этом сообщении. Это было сделано намеренно, чтобы одни и те же данные и другие параметры оставались неизменными для объективного сравнения. Подтверждение Я хотел бы поблагодарить моих коллег из NCC Group за их помощь и поддержку, а также за ценные отзывы, особенно в части криптографии/кибербезопасности. Вот несколько имен, которым я хотел бы выразить искреннюю благодарность: Олли Уайтхаус, Дженнифер Ферник, Крис Энли, Томас Порнин, Эрик Шорн и Мари-Сара Лашарит. Ссылки[1] Все говорят о небезопасной случайности, но никто ничего с этим не делает [2] Репозиторий для реализации кода для [1] [3] https://blog.abhranil.net/2015 /03/03/обучение-нейронных-сетей-с-генетическими-алгоритмами/ Нравится:Нравится Загрузка… 10 самых популярных инструментов для взлома паролей [обновлено в 2020 г.]Пароли — наиболее часто используемый метод для аутентификации пользователя. Пароли так популярны, потому что логика, стоящая за ними, понятна людям, и их относительно легко реализовать разработчикам. Однако пароли также могут создавать уязвимости в системе безопасности. Взломщики паролей предназначены для получения учетных данных, украденных в результате утечки данных или другого взлома, и извлечения из них паролей. Что такое взлом пароля? Хорошо спроектированная система аутентификации на основе пароля не хранит фактический пароль пользователя. В результате хакеру или злоумышленнику будет слишком легко получить доступ ко всем учетным записям пользователей в системе. Вместо этого системы аутентификации хранят хэш пароля, который является результатом отправки пароля и случайного значения, называемого солью, через хеш-функцию. Хеш-функции спроектированы так, чтобы быть односторонними, а это означает, что очень сложно определить ввод, который дает заданный вывод. Поскольку хеш-функции также являются детерминированными (это означает, что одни и те же входные данные дают одинаковые выходные данные), сравнение двух хэшей паролей (сохраненного и хэша пароля, предоставленного пользователем) почти так же хорошо, как сравнение реальных паролей. Под взломом пароля понимается процесс извлечения паролей из соответствующего хэша паролей. Это можно сделать несколькими способами:
Большинство инструментов для взлома или поиска паролей позволяют хакеру выполнять любой из этих типов атак. В этом посте описаны некоторые из наиболее часто используемых инструментов для взлома паролей. 1. Hashcat Hashcat — один из самых популярных и широко используемых взломщиков паролей. Он доступен в каждой операционной системе и поддерживает более 300 различных типов хэшей. Hashcat обеспечивает высокопараллельный взлом паролей с возможностью одновременного взлома нескольких разных паролей на нескольких разных устройствах и возможностью поддержки распределенной системы взлома хэшей с помощью наложений. Загрузите Hashcat здесь. 2. John the Ripper John the Ripper — хорошо известная бесплатная программа для взлома паролей с открытым исходным кодом для Linux, Unix и Mac OS X. Также доступна версия для Windows. John the Ripper предлагает взлом паролей различных типов. Это выходит за рамки паролей ОС и включает в себя обычные веб-приложения (например, WordPress), сжатые архивы, файлы документов (файлы Microsoft Office, PDF-файлы и т. д.) и многое другое. Также доступна профессиональная версия инструмента, которая предлагает улучшенные функции и встроенные пакеты для целевых операционных систем. Вы также можете загрузить Openwall GNU/*/Linux, который поставляется вместе с John the Ripper. Загрузите John the Ripper здесь. 3. Brutus Brutus — один из самых популярных онлайн-инструментов для удаленного взлома паролей. Brutus поддерживает ряд различных типов аутентификации, в том числе:
Он также поддерживает протоколы многоступенчатой аутентификации и может атаковать до шестидесяти различных целей одновременно. Он также предлагает возможность приостановить, возобновить и импортировать атаку. Брут не обновлялся несколько лет. Тем не менее, его поддержка широкого спектра протоколов аутентификации и возможность добавления пользовательских модулей делают его популярным инструментом для онлайн-атак по взлому паролей. Загрузите программу поиска паролей Brutus онлайн здесь. 4. Wfuzz Wfuzz — это инструмент для взлома паролей веб-приложений, похожий на Brutus, который пытается взломать пароли с помощью атаки подбора методом грубой силы. Его также можно использовать для поиска скрытых ресурсов, таких как каталоги, сервлеты и сценарии. Wfuzz также может выявлять уязвимости внедрения в приложении, такие как внедрение SQL, внедрение XSS и внедрение LDAP. Ключевые особенности инструмента для взлома паролей Wfuzz:
5. THC Hydra THC Hydra — это онлайн-инструмент для взлома паролей, который пытается определить учетные данные пользователя с помощью атаки подбора пароля методом грубой силы. THC Hydra расширяем за счет возможности простой установки новых модулей. Он также поддерживает ряд сетевых протоколов, включая Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP. -PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID , Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 и v2), Subversion, Teamspeak (TS2 ), Telnet, VMware-Auth, VNC и XMPP. Загрузите THC Hydra здесь. Если вы разработчик, вы также можете внести свой вклад в разработку инструмента. 6. Medusa Medusa — онлайн-инструмент для взлома паролей, похожий на THC Hydra. Он претендует на звание быстрого параллельного, модульного и грубого инструмента для входа в систему. Medusa — это инструмент командной строки, поэтому для его использования необходимы определенные знания командной строки. Скорость взлома пароля зависит от сетевого подключения. В локальной системе он может проверять 2000 паролей в минуту. Medusa также поддерживает параллельные атаки. В дополнение к списку паролей, которые нужно попробовать, также можно определить список имен пользователей или адресов электронной почты для проверки во время атаки. Подробнее об этом читайте здесь. Загрузите Медузу здесь. 7. RainbowCrack Любой взлом паролей требует компромисса между временем и памятью. Если злоумышленник предварительно вычислил таблицу пар пароль/хэш и сохранил их как «радужную таблицу», то процесс взлома пароля упрощается до поиска в таблице. Именно из-за этой угрозы пароли теперь «солят»: добавление уникального случайного значения к каждому паролю перед его хэшированием означает, что требуется гораздо больше радужных таблиц. RainbowCrack — это инструмент для взлома паролей, предназначенный для работы с радужными таблицами. Можно создавать собственные радужные таблицы или использовать уже существующие, загруженные из Интернета. RainbowCrack предлагает бесплатные загрузки радужных таблиц для систем паролей LANMAN, NTLM, MD5 и SHA1. Загрузите радужные таблицы здесь. Также доступны несколько платных радужных столов, которые можно купить здесь. Этот инструмент доступен как для систем Windows, так и для Linux. Загрузите RainbowCrack здесь. 8. OphCrack OphCrack — это бесплатный инструмент для взлома паролей на основе радужных таблиц для Windows. Это самый популярный инструмент для взлома паролей Windows, но его также можно использовать в системах Linux и Mac. Он взламывает хэши LM и NTLM. Для взлома Windows XP, Vista и Windows 7 также доступны бесплатные радужные таблицы. Живой компакт-диск OphCrack также доступен для упрощения взлома. Загрузите OphCrack здесь. Загрузите бесплатные и премиальные радужные таблицы для OphCrack здесь. 9. L0phtCrack L0phtCrack является альтернативой OphCrack. Он пытается взломать пароли Windows из хэшей. Для взлома паролей он использует рабочие станции Windows, сетевые серверы, первичные контроллеры домена и Active Directory. Он также использует атаки по словарю и грубой силе для генерации и подбора паролей. Он был приобретен Symantec и прекращен в 2006 году. Позже разработчики L0pht снова выкупили его и запустили L0phtCrack в 2009 году.. L0phtCrack также имеет возможность сканировать обычные проверки безопасности паролей. Можно установить ежедневные, еженедельные или ежемесячные проверки, и сканирование начнется в запланированное время. Узнайте о L0phtCrack здесь. 10. Aircrack-ng Aircrack-ng — это инструмент для взлома паролей Wi-Fi, который может взламывать пароли WEP или WPA/WPA2 PSK. Учебники по Aircrack-ng доступны здесь. Загрузите Aircrack-ng здесь. Как создать пароль, который трудно взломатьВ этом посте мы перечислили 10 инструментов для взлома паролей. Эти инструменты пытаются взломать пароли с помощью различных алгоритмов взлома паролей. Большинство инструментов для взлома паролей доступны бесплатно. Таким образом, вы всегда должны стараться иметь надежный пароль, который трудно взломать. Вот несколько советов, которые вы можете попробовать при создании пароля.
Чего следует избегать при выборе пароля Киберпреступники и разработчики взломщиков паролей знают все «хитрые» уловки, которые люди используют для создания своих паролей.
|