Знай себе числа генерируй на основе непредсказуемых данных физического мира — немудреная мысль эта преследует человека на протяжении всего пути современной криптографии. Псевдослучайные генераторы чисел (PRNG), основанные на одних лишь математических алгоритмах, предсказуемы или подвержены внешнему влиянию, поэтому аппаратные генераторы, использующие различные источники энтропии, считаются золотым стандартом безопасности.


Однако даже генераторы реальных случайных чисел (RNG), собирающие непредсказуемые данные физических явлений, имеют недостатки: они могут быть громоздкими, медленными и дорогостоящими в производстве. Нет никакой гарантии, что проприетарная система не открыта для спецслужб — поэтому разработчики FreeBSD, отказались от непосредственного использования аппаратных генераторов, встроенных в чипы Intel.


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


100 лет назад для получения случайных чисел бросали игральные кубики, раздавали карты, собирали номера из шляпы. В 1927 году статистик Леонард Генри Калеб Типпетт опубликовал первую в мире «таблицу случайности» — 41 600 чисел — полученную путем сбора данных о площади английских церквей.


В 1955 году корпорация RAND опубликовала книгу, которая на долгие годы стала одним из главных источников данных о рандоме — «Миллион случайных цифр со стандартным отклонением 100 000». Возможно, книгу до сих пор никто не прочитал от корки до корки — почти весь ее текст состоит из пятизначных чисел.


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


«Игрушечный» генератор



Фонд Electronic Frontier Foundation (EFF), занимающийся борьбой за общечеловеческие права в вопросах, связанных с новыми технологиями связи, предложил простой способ создания безопасных паролей, основанный на использовании физического генератора случайных чисел.


Способ действительно простой — в его основе игральные кости.


Бросаем пять игральных кубиков одновременно, и записываем получившиеся цифры. Допустим, кубики расположились слева направо так: 4, 3, 4, 6, 3. Открываем список EFF's Long Wordlist, чтобы найти соответствующее слово рядом с 43463. Это слово «panoramic».


Процедура повторяется пять раз. В результате у нас получается что-то вроде panoramic nectar precut smith banana handclap — парольная фраза, которая имеет около 221 073 919 720 733 357 899 776 вариаций.


С помощью мнемоники фразу легко запомнить. С учетом наличия 2?? альтернатив брутфорсом подобрать ваш пароль будет крайне сложно.


ChaosKey



Кейт Паккард, активный разработчик Debian, лидер проекта X.Org, создатель XRender, XComposite и XRandR, совместно с известным сторонником открытых данных, главой направления Linux-проектов Hewlett-Packard Бдейлом Гарби разработали недорогой, но надежный генератор случайных чисел ChaosKey.


Устройство с открытым исходным кодом ChaosKey 1.0 было представлено на конференции DeConf16 Debian. Цель разработки — добавить реальную энтропию генератору случайных чисел, обеспечить высокий уровень безопасности и снизить цену до минимума.


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


Сам полнофункциональный RNG похож на маленькую флешку и занимает один USB-разъем. Конструкция платы минималистична — на ней фактически имеется только процессор и транзисторы для генерации шума. Скорость передачи случайных значений — около мегабайта в секунду.


И по поводу цены. Устройство можно заказать, но все схемы и прошивка выложены в открытый доступ — разработчики сами рекомендуют каждому создавать и совершенствовать ChaosKey.


Z1FFER



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


Z1FFER не является законченным продуктом и не поставляется с каким-либо ПО (авторы делятся лишь несколькими сценариями и инструкцией для начала работы). Он предназначен для работы на платформе arduino, однако не имеет подтвержденной надежности от взлома извне. Устройство в первую очередь для тех, кто хочет лично «пощупать» технологию генерации чисел с помощью железа.


Z1FFER использует тепловой шум от резистора, удваивая сигнал, что приводит к экспоненциальному росту сложности предсказания последовательности бит.


QRBG121



Грешно было бы не упомянуть в этой теме генератор случайных чисел QRBG121, который по неизвестной причине однажды стал маскотом одной из имиджборд рунета. QRBG121 (Quantum Random Bit Generator), возможно, действительно, у кого-то вызывает умиление, но самое интересное скрывается внутри коробочки.


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


Лава-лампы в Cloudflare



Компания CloudFlare, которая сама заявляет, что через ее сеть проходит «около 10 % мирового трафика», защищает интернет-проекты от DDoS-атак, но и ей самой нужна защита. Трафик, который проходит через сети CloudFlare, шифруется — и в этом помогает сотня разноцветных лава-ламп на «Стене Энтропии».


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


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


В двух других офисах CloudFlare используются иные способы получать случайные значения. В Лондоне камера снимает движения трех хаотических маятников, а в Сингапуре поставили счетчик Гейгера, замеряющий показатели радиоактивного распада небольшого кусочка урана. В последнем случае уран используется в качестве «источника данных», поскольку для радиоактивного излучения характерна случайность каждого отдельного акта распада.


Все эти способы работы с данными привлекают внимание к деятельности компании, чья работа часто остается невидимой для обычных клиентов.


HotBits



HotBits — сайт, который предоставляет всем желающим истинные случайные числа, генерируемые с помощью счетчика Гейгера, регистрирующего ионизирующее излучение. Вы заполняете на сайте форму запроса с указанием количества случайных байт и выбираете предпочтительный способ получения данных. Предварительная заявка необходима, поскольку аппаратное обеспечение HotBits позволяет создавать данные со скромной скоростью около 100 байт в секунду.


После того, как случайные числа предоставляются клиенту, они немедленно удаляются из системы — одни и те же данные никогда не будут отправлены разным пользователям (если, конечно, вы доверяете HotBits).


Для получения еще большей надежности данных существует ресурс EntropyPool, который собирает и «миксует» случайные биты из разных источников, включая HotBits и random.org (этот ресурс, в свою очередь, «добывает» энтропию атмосферного радиошума). Люди, которые переживают за квантовую безопасность в максимальной степени, к вышеназванным ресурсам могут добавить онлайн-сервис Quantum Random Bit Generator.


Квантовые флуктуации вакуума



Схематическое представление пространственно-временных отклонений от уровня невозмущенных вакуумных флуктуаций электрического поля
Источник


Вакуум, вопреки названию («vacuus» — пустой), истинно пустым считать нельзя, поскольку в нем в силу принципа неопределенности Гейзенберга беспрестанно рождаются и умирают виртуальные частицы — происходят так называемые квантовые флуктуации, колебания уровня энергии в единице объема пространства-времени.


Канадские физики сконструировали быстрый и конструктивно простой генератор случайных чисел на базе вакуумных флуктуаций. Генератор состоит из импульсного лазера с высокой частотой излучения, среды с высоким коэффициентом преломления (алмаз) и детектора. Проходя через алмаз, каждый импульс на детекторе показывает разные характеристики, в зависимости от вакуумных флуктуаций поля, которые встретились на пути фотонов. В спектре рассеянного излучения на выходе появляются спектральные линии, которых нет в спектре первичного света, а из-за непредсказуемости вакуумных флуктуаций эти линии каждый раз отличаются непредсказуемым образом.


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


Осталось сделать этот генератор достаточно компактным и дешевым, чтобы начать его массовое использование.


Сервер случайных чисел ANU Quantum



Альтернативный вариант, основанный на измерении квантовой флуктуации вакуума, предлагает сайт ANU Quantum. Случайные числа, выложенные в открытый доступ, генерируются в реальном времени в лаборатории Центра квантовых вычислений и коммуникационных технологий Университета Нового Южного Уэльса (Сидней, Австралия).


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


Серийная квантовая случайность



Существует не так много компаний, создающих устройства QRNG (Quantum Random Number Generator). Лидером в этом направлении сейчас называют швейцарский стартап ID Quantique (IDQ), с 2001 года создающий коммерческие генераторы квантовых случайных чисел. IDQ предлагает множество форматов QRNG, как показано на изображении выше. Одно из самых популярных устройств компании — USB Quantum, генерирующее больше случайных чисел, чем вам, вероятно, может понадобиться в этой жизни.



Другая известная в этой области компания — QuintessenceLabs. В компании утверждают, что их версия QRNG-устройства настолько мощная, что эквивалентна 60 устройствам IDQ.



Компания ComScire на рынке QRNG-устройств представлена с 1994 года. На изображении выше представлен топовый источник случайных чисел, дающий поток данных из смешения различных типов транзисторных шумов со скоростью 128 Мбит/сек.


Генератор из углеродных нанотрубок



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


Исследователи построили генератор случайных чисел из статической ячейки памяти с произвольным доступом (SRAM), напечатанной специальными чернилами, содержащими полупроводниковые углеродные нанотрубки. Ячейка памяти использует флуктуации теплового шума для генерации случайных бит.


Генератор из углеродных нанотрубок можно напечатать на гибких пластиковых подложках, что позволяет интегрировать его в крошечные устройства гибкой электроники — носимые датчики, одноразовые этикетки, элементы умной одежды. Печать ячеек SRAM с нанотрубками относительно недорогой процесс, что позволяет использовать их в производстве бытовой электроники.


Генератор квантовых случайных чисел из смартфона



В 2014 году Женевский университет отметился устройством QRNG, которое использует восьмимегапиксельную камеру смартфона Nokia N9.


Камера смартфона подсчитывает количество фотонов, попадающих на каждый отдельный пиксель. Источником света выступает обычный светодиод. Работа камеры и светодиода регулируется так, чтобы каждый пиксель в 8 МП камере обнаруживал около 400 фотонов за короткое время. Число фотонов на всех пикселях преобразуется в последовательность случайных чисел со скоростью 1,25 Гбит/сек.


Такая скорость — не рекорд. Еще в 2011 году Intel показал, что их процессорный генератор создает поток случайных чисел со скоростью около 3 Гбит/сек. Однако все компоненты QRNG могут быть интегрированы на чипе стоимостью в несколько долларов и легко добавлены в любые портативные электронные устройства, включая смартфоны.


Истинная случайность


Имея так много источников данных, логично задаться вопросом: а как в действительности проверить случайность бит?


Национальный институт стандартов и технологий США предложил «Пакет статистических тестов для случайных и псевдослучайных генераторов чисел для криптографических приложений». В его состав входят 15 статистических тестов, целью которых является определение меры случайности бит, порожденных либо аппаратными, либо программными генераторами.


Одни из самых строгих статистических тестов предложил профессор Джордж Марсалья из Университета штата Флорида. «Тесты diehard» включают 17 различных проверок, некоторые из них требуют очень длинных последовательностей: минимум 268 мегабайт.


Случайность можно проверить с помощью библиотеки TestU01, представленной Пьером Л`Экуйе и Ричардом Симардом из Монреальского университета, включающей классические тесты и некоторые оригинальные, а также посредством общедоступной библиотеки SPRNG.


Еще один полезный сервис для количественного измерения случайности — http://www.fourmilab.ch/random.


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

Комментарии (72)


  1. Victor_koly
    13.11.2017 17:33

    Генератор, который пробует измерить в нескольких транзисторах процессора (дешевый кристалл на 100 миллионов элементов) количество возбужденных носителей (должны подчиняться статистике Ферми-Дирака). При этом кусок кремния охлаждается до температуры 128 K.


  1. demfloro
    13.11.2017 18:13

    Также стоит упомянуть свободную программную реализацию генератора случайных чисел NeuG. Работает на STM32F103 контроллере, как пример на FST-01.


    1. StjarnornasFred
      14.11.2017 23:59

      Можно задать странный/глупый вопрос?
      1) Чем отличается псевдослучайное число от истинно случайного с практической точки зрения?
      2) Можно ли создать генератор случайных (истинных или псевдо) чисел на основе математической формулы, без взятия аппаратных данных? Проще говоря, существует ли такое математическое выражение, которое даёт произвольный результат?
      3) Петя загадал число от 1 до 10. Является ли оно истинно случайным или псевдослучайным?
      3) Вася бросил игральную кость, выпало число от 1 до 6. Тот же вопрос.


      1. vanxant
        15.11.2017 07:12

        1. Псевдослучайное число, зная все входные параметры, можно вычислить. И, что хуже, все последующие числа псевдослучайной последовательности — тоже. Истинно случайное — нельзя. Ну хотя бы по причине того, что у него «все входные параметры» — это существенный кусок Вселенной.
        2. Псевдо — можно. Тысячи их. Теория хаоса в помощь. Истинно — нет.
        3. Пока Петя один и число одно — да, число случайное, хотя и «не очень». Если Петя выдаёт 10 чисел в день, или если взяли по объявлению 10 примерно одинаковых Петь из дефолт сити — они очень даже предсказуемы. Ну, энтропия на уровне плинтуса, евпоча.
        3, который 4. Если Вася не шулер и т.п., то да.


      1. Survtur
        16.11.2017 11:46

        2) нельзя, потому что у математического алгоритма есть начало. И вот если несколько человек начнёт с начала, то у них будут одинаковые последовательности.


      1. Victor_koly
        16.11.2017 13:25

        Совершенно случайных чисел посчитать Вы не сможете.
        Но, как пример, есть такая возможность:
        что она позволяет извлечь любую конкретную шестнадцатеричную или двоичную цифру числа pi без вычисления предыдущих


      1. Samoglas
        16.11.2017 20:16

        3) Петя загадал число от 1 до 10. Является ли оно истинно случайным или псевдослучайным?

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

        Есть такая программа, heshby ссылка на скачивание heshby.zip внизу страницы. Она играет в чет-нечет.
        Человек жмет + или -, а программа пытается предугадать, что человек выберет в следующий раз.
        Выиграть у нее очень сложно, мне не удавалось. А ведь это 46 кб., консольная прога из 2000 года. То ли еще будет.


  1. fireSparrow
    13.11.2017 18:20

    Напомнило рассказ «Продавец случайных чисел»


  1. sshmakov
    13.11.2017 19:04

    После того, как случайные числа предоставляются клиенту, они немедленно удаляются из системы — одни и те же данные никогда не будут отправлены разным пользователям (если, конечно, вы доверяете HotBits).

    Вообще-то, могут, вероятность совпадения есть. Другое дела, что нет способа узнать, было ли это и кому были отправлены такие же данные.


  1. porutchik
    13.11.2017 19:23

    > Знай себе числа генерируй на основе непредсказуемых данных физического мира
    C чего они вдруг непредсказуемые? Всё предопределено Большим Взрывом.


    1. Victor_koly
      13.11.2017 19:25

      Квантмех говорит, что есть неопределенность. А уж задача «посчитать события, имея за исходные данные параметры Большого взрыва» — совсем фантастика.


      1. myldy
        14.11.2017 09:09

        Ну если только наша вселенная не является компьютерной симуляцией…


        1. sshmakov
          14.11.2017 09:44

  1. Nuwen
    13.11.2017 21:11

    А мне вспомнился «Глас Господа» С. Лема.

    Заголовок спойлера
    Там в начале некто торговал большими таблицами случайных чисел — всем что осталось от эксперимента по поиску внеземных сигналов. Потом ему предъявили претензии что его случайные числа некачественны — содержат порядок.


    1. BubaVV
      14.11.2017 02:28

      Вроде там не получится избавиться от 50 Гц


  1. maslyaev
    13.11.2017 21:50

    Чисто для себя при генерировании случайных чисел я предпочитаю выдачу системного генератора дополнять псевдорандомом, получаемым из пользовательского ввода. Никогда ведь не может быть уверенности в том, что аппаратный генератор, на чём бы он ни был собран, действительно выдаёт энтропию строго 1 бит/бит. Дополнительно на всякий случай запузырить в генерируемое ещё немножко энтропии в любом случае не повредит. Тем более, что сделать это не просто, а очень просто.

    Базовая идея в том, что энтропия результата операции XOR всегда не меньше (в вырожденном случае равна) энтропии слагаемого, имеющего максимальную энтропию. Это легко доказывается через формулу Шеннона.

    Пример на Питоне:

    import os
    import getpass
    import hashlib
    
    def prandom_gen(user_input):
        # Генератор ПСЧ на основе SHA-256
        curr_val = user_input.encode('utf-8')
        while True:
            curr_val = hashlib.sha256(curr_val).digest()
            for i in range(len(curr_val)):
                yield curr_val[i]
    
    def random_gen(extra_entropy_gen):
        while True:
            yield os.urandom(1)[0] ^ next(extra_entropy_gen)
    
    # Пользуем:
    u_random = getpass.getpass('Побарабаньте по клавиатуре: ')
    my_rnd_32b = bytes(next(random_gen(prandom_gen(u_random))) for i in range(32))
    print(hex(int.from_bytes(my_rnd_32b, byteorder='big'))[2:])
    

    Поскольку выдаваемое системным ГСЧ и набарабаненное пользователем на клавиатуре взаимно независимы (надеюсь, это доказывать не нужно), энтропия юзерского ввода честно добавляется к энтропии ГСЧ и, если её в принципе можно было улучшить, то улучшает. А если улучшать было некуда, то не ухудшает.


    1. worldmind
      13.11.2017 23:04

      А есть научная статья где это описано и доказана надёжность?


      1. maslyaev
        13.11.2017 23:18

        Неа. По крайней мере, я не видел. Если хотите, можете сами её написать ;)

        Общая схема доказательства: берём два независимых бита A и B. Информационная энтропия первого у нас:
        IA = — p1Alog2p1A — (1-p1A)log2(1-p1A)
        где p1A — это вероятность того, что A=1.

        Для второго аналогично:
        IB = — p1Blog2p1B — (1-p1B)log2(1-p1B)

        Вероятность единицы после XORа:
        p1X = p1A*(1-p1B) + p1B*(1-p1A)

        Вот это подставить в формулу Шеннона и показать, что IX >= max(IA, IB)


    1. vanxant
      14.11.2017 02:34

      Проблема с модными нонче виртуалками и прочими там докерами. Там нету никакого пользовательского ввода…


      1. Survtur
        14.11.2017 12:43

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


        1. vanxant
          14.11.2017 13:28

          Сразу после включения виртуалки там ещё нет никаких задержек или событий, которые могут плавать по времени. Точнее они есть, но никакой случайности там нет, при каждом запуске на конкретной железке будет примерно одно и то же. А /dev/random может быть нужен прямо сразу — например, для генерации сеансовых ключей, чтобы куда-то подключиться и получать/передавать запросы и данные.
          Это довольно известные грабельки.


          1. Survtur
            14.11.2017 17:53

            Далее если примерно одинаково, то этого вполне достаточно, чтобы рандомная последовательность стала другой.


            1. vanxant
              14.11.2017 18:57

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


      1. Victor_koly
        14.11.2017 13:22

        Виртуалка отслеживает поворот шлема пользователя или как? Ну или нужно сразу прикрутить считыватель мозговых ритмов.


      1. maslyaev
        14.11.2017 14:55

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

        Кстати, в примере на Питоне дурака свалял. Пользовать генератор надо так:

        # Пользуем:
        u_random = getpass.getpass('Побарабаньте по клавиатуре: ')
        my_rnd_gen = random_gen(prandom_gen(u_random))
        my_rnd_32b = bytes(next(my_rnd_gen) for i in range(32))
        print(hex(int.from_bytes(my_rnd_32b, byteorder='big'))[2:])
        

        Иначе prandom_gen инициализируется каждый раз заново, и в результате ничего интересного не выдаёт.


        1. Alexeyslav
          15.11.2017 09:27

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


          1. maslyaev
            15.11.2017 13:23

            Хеширование не увеличит энтропию
            Совершенно верно. Я бы даже сказал, что она её немножко уменьшает. И ограничивает сверху своей разрядностью. Но любим мы хеш-функцию не за привносимую энтропию (которой нет), а за то, как Вы справедливо заметили, что она эту энтропию размазывает так, что не оставляет атакующему ни малейшего шанса довольствоваться тем, что часть данных ему известна.

            Допустим, злоумышленник захватил контроль над аппаратным ГСЧ и всё выдаваемое им ему известно. Мы подмешали через хеш разнообразие пользовательского ввода, задержки файловых операций, показания системных часов и ещё немножко всякого разного, что удалось наковырять. Всего каких-то 20 байт энтропии, из которых 10 взяли из источников, тоже подконтрольных злоумышленнику. Сгенерили 4096-битный RSA-ключ. Реально из полтысячи байт у нас энтропии только несчастные оставшиеся 10 байт. Катастрофа? Вовсе нет, потому что 10 байт — это триллион триллионов вариантов, и злоумышленнику нужно будет честно перебрать хотя бы половину из них. Из этих проскочивших мимо перехвата 10 байт каждый бит полностью меняет всю картину, поэтому злоумышленник получает в лицо перспективу брутфорсить триллион триллионов. И это всего-то на проскочивших 10 байтах энтропии.

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


            1. Alexeyslav
              15.11.2017 14:34

              В виртуальных машинах и/или на одинаковом железе результат такой функции будет очень близок если не абсолютно одинаков.
              Ну, атакующему будет чуть сложней подобрать условия для атаки но это очень ненадёжный источник энтропии в целом.
              Что касается машинного обучения, так там хватит и обычного ГПСЧ с нужными характеристиками и инициализацией хешем от обычного счетчика миллисекунд. Нет смысла городитьпримешивать случайности от железа.


              1. maslyaev
                15.11.2017 16:06

                В виртуалках понятие «железо» очень расплывчато. Рассчитывать, что виртуалка удовлетворит требованиям системы реального времени с выверенными до микро- и наносекунд временами выполнения операций, вообще не приходится. Вот вам и пусть не особо мощный источник неопределённости, но всё же вполне достаточный для того, чтобы наковырять несчастные 10 байт. А перспектива брутфорсить триллион триллионов — это не «сложней подобрать условия», а пипец.

                Понимаете, вокруг темы генерирования СЧ накручена куча совершенно лишнего словоблудия. Вплоть до многословных и на редкость бестолковых рассуждений о глобальной детерминированности всего сущего. Если не отвлекаться на весь этот бред, а тупо и упрямо решать прикладные задачи, то можно заметить, что с чем с чем, а с непредсказуемостями в нашем грешном мире всё в полном порядке. Более чем достаточно для удовлетворения любых наших мыслимых потребностей. Вот с предсказуемостью — не так хорошо, но это уже совсем другая тема.


                1. Alexeyslav
                  15.11.2017 16:59

                  10 байт наковыряете только при полной непредсказуемости(это когда время доступа к каждому сектору винчестера варьируется от 0 до 255мс независимо на старте ли это или в работе, но ведь так не бывает — обычно это стабильное число с незначительными отклонениями) поведения железа. В реальности, в одних и тех же условиях железо будет давать минимум вариаций, вот эти вариации и надо будет подобрать которых наберётся с 10 байт всего 8..10 бит. Ну ладно пусть даже 20 бит — задача эта уже посильная.


                  1. maslyaev
                    15.11.2017 18:36

                    Не прибедняйтесь. Немножко фантазии и изворотливости, и всё получится.

                    А давайте поэкспериментируем. Будем замерять время срабатывания функции получения текущего времени. Вот такой, например, код:

                    import time
                    
                    def tst(length):
                    	lst = [] # Сюда складируем результаты замеров
                    	cnt = {} # Сюда посчитаем частоты
                    	for i in range(length):
                    		t1 = time.perf_counter()
                    		time.time() # Системный вызов. Самый простой.
                    		t2 = time.perf_counter()
                    		val = t2-t1
                    		lst.append(val)
                    		cnt[val] = 1 + (cnt[val] if val in cnt else 0)
                    	print('Статистика:')
                    	print('min={};\nmax={};\navg={};\ndistinct={}'		.format(min(lst), max(lst), sum(lst)/len(lst), len(cnt)))
                    	vals = list(cnt)
                    	vals.sort()
                    	def translator_gen():
                    		letters = '0123456789abcdefghijklmnopqrstuvwxyz'
                    		for l in letters:
                    			yield l
                    		n = 0
                    		while True:
                    			n += 1
                    			yield '({})'.format(n)
                    	t_g = translator_gen()
                    	dct = {}
                    	print('Гистограмма:')
                    	for val in vals:
                    		el = next(t_g)
                    		dct[val] = el
                    		print('{}\t{}\t{}'.format(el, val, cnt[val]))
                    	print('Последовательность:')
                    	print(''.join(dct[val] for val in lst))
                    
                    tst(10000)
                    

                    У меня оно выдало такое:
                    Статистика:
                    min=4.2765486796270125e-07;
                    max=6.842478342150571e-06;
                    avg=8.856732967615244e-07;
                    distinct=20
                    Гистограмма:
                    0 4.2765486796270125e-07 123
                    1 4.2765532271005213e-07 10
                    2 8.553097359254025e-07 8062
                    3 8.553101906727534e-07 1271
                    4 1.2829646038881037e-06 271
                    5 1.2829650586354546e-06 94
                    6 1.710619471850805e-06 104
                    7 1.7106199265981559e-06 38
                    8 2.1382743398135062e-06 6
                    9 2.138274794560857e-06 6
                    a 2.5659296625235584e-06 1
                    b 3.42123894370161e-06 1
                    c 3.848894266411662e-06 1
                    d 4.276549134374363e-06 1
                    e 5.131858870299766e-06 1
                    f 5.559513738262467e-06 2
                    g 5.987168606225168e-06 4
                    h 5.987169060972519e-06 1
                    i 6.41482347418787e-06 1
                    j 6.842478342150571e-06 2
                    Последовательность:
                    a3223225232222222224224343222232322223232222223222222323222222
                    32322222222222222232222222232222222432222422242222225432342023
                    22232224222222322224222224222322222222222232222222323022222222
                    23232467456642724222222222325222222243222222242223222220222222
                    323222222222232322222223232222222032222222… ну и так далее,
                    всего 10000 знаков

                    Вопрос: из этих 10000 знаков наковыряется 10 байт энтропии, или всё же нет?


                    1. Alexeyslav
                      15.11.2017 22:53

                      А фот фиг его знает. Но видно что в основном всё крутится около двойки. Отклонения, полагаю, из-за того что рядом работают ещё какие-то процессы. Но возьмём например виртуальные машины разворачивающиеся с одного и того же образа, У них старт будет происходить примерно по одному и тому же сценарию, разнообразия будет ещё меньше. Впрочем, да… часто когда у нас есть время накопить данные то может быть энтропия и наберётся нужная, но когда говорят об аппаратных ГСЧ подразумевают что потребность в случайных числах достаточно высока и нет времени что-то копить, успевай только отдавать хорошие числа на каждый такт…


    1. Oplkill
      14.11.2017 17:59

      Рандом из мышки будет более качественным, клавиатуры у всех одинаковы и пальцы лежат на них тоже одинаково.(попробуйте в популярной мморпг игра зарегестрировать никнейм стуча рандомно по клавиатуре) Причем брать рандом из мышки за предыдущую 1 минуту отслеживания.(отслеживать пассивно)


      1. maslyaev
        14.11.2017 21:50

        Можно и с мышки, но, понимаете ли, испытываю серьёзные затруднения снимать данные мышки из-под Питона :)) Поэтому в примере клавиатурный ввод. А так-то, конечно, если задастся целью, внутри компа можно найти довольно много непредсказуемостей, которые после скармливания хеш-функции могут послужить неплохим источником ацкого хаоса.

        Показанный подход — он не на замену аппаратному ГСЧ, а как подстраховка на случай, если паранойя говорит, что чисто теоретически с ним может быть что-нибудь не так. Случаи ведь разные бывают, правда ведь?

        Если на цифрах, то смотрите. Идеальный ГСЧ даёт энтропию 1 бит/бит. Допустим, мы имеем неидеальный, и у него 0.99. Это нас печалит. Хочется поднять хотя бы до 0.995, то есть в два раза. Вопрос: с источником какой энтропии его нужно переXORить, чтобы добиться желаемого? Правильный ответ: с источником, имеющим энтропию 0.6. То есть с совершенно криптографически трешовым. 0.6 — это когда очередной бинарный знак угадывается с вероятностью 85%.


        1. Barafu
          15.11.2017 15:32

          Линукс делает это за вас: собирает энтропию из мышки, задержек Ethernet и ещё забыл чего, миксует и разбавляет этим результаты /dev/random. Чистый матан же выдаётся из /dev/urandom. Если энтропия кончится, /dev/random повиснет до появления новой.


          Это поведение можно отключить в настройках ядра, так что аккуратнее с VPS и вендорским дистром.


          1. maslyaev
            15.11.2017 16:51

            Линукс делает это за вас
            Не знаю как кто, но я не привык на все 100% доверять чужим решениям «из коробки». Разработчики Линукса — безусловно молодцы, честь им и хвала, но я всё же сам в тех местах, где больнее всего было бы падать, своими руками подстелю немножко соломки. Тем более, что соломка нынче поразительно дёшева и точно (и это математически доказывается) ничему не мешает. Собственноручно стелить соломку — правильная привычка, разве нет?


  1. silveruser
    13.11.2017 23:03

    Интересно, неужели не существует никаких математических методов, позволяющих протестировать и опровергнуть (или, наоборот, доказать) «теорию заговора» об Intel-овском RdRand?

    Я, конечно, понимаю, что рассказы Сноудена это «наше всё» (ну, или «ваше всё», или «ФСБ/СВР всё»), у разработчики FreeBSD, верящие этим рассказам, тоже «железобетонный довод» (для некоторых), но все же… Где всемогущество математики?


    1. vanxant
      14.11.2017 02:45

      А как, собственно? По словам самого интела, там есть физический источник энтропии, дальше он шифруется AES-ом (который в данном случае просто очень хорошо перемешивает входные биты), дальше идёт как seed для обычного аппаратного ГПСЧ. Любой матан на выходе увидит работу этого самого ГПСЧ.
      Теперь предположим, что у товарищей в пыльных шлемах есть специальная магическая инструкция, которая отключает физический сбор энтропии и подаёт на вход аеса заранее подготовленную «товарищами» последовательность чисел типа 1, 1437, 183598, 17, 35881287 и т.д. Как определить, что эта инструкция у вас сработала? Никак. При этом весь ваш рандом полностью скомпрометирован.


      1. silveruser
        14.11.2017 05:35

        Я не знаю «как», потому и спросил (знал бы — рассказал бы сам). Но так получается, что всё базируется на «теории заговора», то бишь словах Сноудена, который сам является непонятно кем (с точки зрения моей личной «теории заговора» — завербованным агентом КГБ/ФСБ/СВР, поскольку данный «разоблачитель и любитель свободы и демократии» как-то уж слишком долго сидит в далеко не самой демократичной и свободной стране, а его «разоблачения» слишком уж «направленно-точечные»).

        Я понимаю, что чип Ivy Bridge так просто не просканируешь и не перепроверишь (если это вообще технически возможно), но ведь в этом можно обвинить практически любого производителя сложных современных чипов!

        Просто, если допустить, что Intel все-таки не делал «закладок» и «back doors» для спецслужб, то весь этот разнокалиберный зоопарк, описанный в статье выше, попросту не нужен! И практически 100% не нужен для «несекьюрных» приложений (насколько я понимаю, весь сыр-бор разгорелся именно из за secure применений), а там спрос на real random generators вовсе не нулевой.


      1. silveruser
        14.11.2017 09:57

        Посоветовавшись со стариком Оккамом, у меня к Вам появился здравый вопрос: ну, хорошо, допустим, Вы с Эдиком Снегопритонским, правы, и «секретным службам США» (каким именно, кстати — CIA, FBI, NSA?) каким-то непонятным образом удалось заставить Intel вставить хитрую hardware закладку в генератор случайных чисел, активируемую специальным кодом (хотя каким путём — это остается вне моего воображения, в США все работает немного по другому, нежели в России, и главы этих ведомств отнюдь не избираются пожизненно, и вполне могут, за нарушение Конституции, попасть в тюрьму до конца своих дней). Ну ладно, допустим все эти крайне маловероятные допущения.

        Но… Когда, а, главное, каким образом, будет подаваться эта супер-секретная команда на компьютеры ФСБ/СВР etc.? Т.е. если генератор не по настоящему случайный, я думаю, математика сможет это доказать. Если же его заложенная «неслучайность» активируется определенной командой (последовательностью etc.), то как американские спецслужбы могут активировать эту команду в нужное время для определенных процессоров?!

        Вы знаете, старик Оккам подсказал мне, что Ваше мнение, равно как и мнение разработчиков FreeBSD, базируется на пустоте, глупых слухах, запущенных, скорее всего, ФСБ/СВР для каких-то своих целей. Элементарная логика это полностью опровергает.

        Буду рад услышать Ваши возражения по делу, с указанием конкретной, реально применимой в настоящее время, технологии.


        1. geher
          14.11.2017 11:13

          Со Сноуденом все проще, чем кажется. Если он попытается выехать в любую "самую демократичную и свободную" страну, то достаточно быстро окажется на родине со всеми вытекающими.
          Главы спецслужб нигде не назначаются пожизненно, и везде их могут посадить. Но для того, чтобы посадить, нужно сначала предъявить и доказать незаконность действий, т.е. в данном конкретном случае добыть факты использования данной штуки (а перед тем твердо доказать само наличие данной штуки) против граждан США без решения суда. Применение этой штуки против граждан других стран по крайней мере за пределами США не является незаконным.
          Подать команду на компьютер в сети с дырявой ОС — не вопрос.
          Так что возможность такой закладки вполне себе есть, а потому каждый уважающий себя параноик (коим обязан быть любой безопасник) просто обязан считать, что она точно есть.
          Как подавать команду на компьютеры КГБ? А с чего вы решили, что это ЦА данной команды?


          1. silveruser
            14.11.2017 14:20

            Касательно Сноудена (перефразируя «утиный тест»):

            Если кто-то выглядит как агент ФСБ, ведет себя, как агент ФСБ и говорит, как агент ФСБ, то это, вероятно, и есть агент ФСБ

            Кстати, у некоторых спецслужб принято предателей не просто судить и сажать, а убивать или травить полонием.
            Подать команду на компьютер в сети с дырявой ОС — не вопрос.
            Старик Оккам с Вами не согласен: во-первых, откуда взялось предположение о «дырявой ОС»? Во-вторых, откуда взялась сеть? В-третьих, если спецслужбы непонятным путём (Вы так и не написали источник паранойи — каким образом можно надавить на топ-менеджент, совет директоров и проектировщиков/разработчиков Intel-а, чтобы а) заставить их внести «закладку» (ведь, в случае огласки, это многомиллиардные потенциальные потери!) b) сохранить это в полнейшем секрете (только перевербованный КГБ Сноуден об это «знает» — но никаких доказательств не приводит, естественно)) и «внедрили» подобную закладку, то как/откуда они узнают, когда и каким образом ее нужно активировать?

            Т.е. предположи Вы, что, дескать, просто собираются слушать весь SSL трафик (т.е. RdRand не является источником истинных случайных данных) — в этом случае, во-первых, математика должна помочь, а во-вторых, все равно больно шаткое предположение — т.е. спецслужба идёт на огромный риск, осуществляя преступное, неконституционное давление на частную компанию (огромную, кстати! С очень влиятельными людьми в совете директоров) в расчёте на некое будущее применение это «закладки». Т.е. по Вашей «логике» (так называемой) они должны были также надавить и на всех поставщиков OS, не так ли? Ну, чтобы они обязательно использовали RdRand, а во-вторых, оставили «дырку» для активации?

            потому каждый уважающий себя параноик (коим обязан быть любой безопасник)
            Нет, не обязан. Каждый уважающий себя «безопасник» должен быть специалистом-профессионалом, а вовсе не параноиком или шизофреником. Это, IMHO, строжайше противопоказано, ибо быстро приводит к обязательному ношению шапочек из фольги, а также «изъятию генетического материала россиян».


            1. geher
              14.11.2017 19:07

              Если кто-то выглядит как агент ФСБ, ведет себя, как агент ФСБ и говорит, как агент ФСБ, то это, вероятно, и есть агент ФСБ

              Странные у вас представления об агентах ФСБ, если для вас Сноуден выглядит как агент ФСБ.


              Кстати, у некоторых спецслужб принято предателей не просто судить и сажать, а убивать или травить полонием.

              А причем ту калоши?


              Старик Оккам с Вами не согласен: во-первых, откуда взялось предположение о «дырявой ОС»? Во-вторых, откуда взялась сеть?

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


              каким образом можно надавить на топ-менеджент, совет директоров и проектировщиков/разработчиков Intel-а

              А почему сразу надавить, когда можно полюбовно договориться?
              Ну и давят таки периодически, слезно прося сделать бэкдор. И не факт, что не для отвлечения внимания от полюбовной договоренности.
              Оно, конечно, тоже теория заговора, но тут как в анекдоте про корову.


              они должны были также надавить и на всех поставщиков OS, не так ли? Ну, чтобы они обязательно использовали RdRand, а во-вторых, оставили «дырку» для активации?

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


              Нет, не обязан. Каждый уважающий себя «безопасник» должен быть специалистом-профессионалом, а вовсе не параноиком или шизофреником.

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


              1. silveruser
                14.11.2017 21:25

                Извините, но у Вас с логикой проблемы, и Вы явно одержимы вариантом «в интернете кто-то не прав». Я так и не услышал логически непротиворечивого сценария, даже с точки зрения приверженца «теории заговора» и всеми чрезвычайно маловероятными допущениями, об использовании уязвимости команды RdRand (и RdSeed).

                Ну, то есть что-то вроде:
                — NN лет назад CIA/FBI/NSA/«контора» Стивена Кинга принимает решение о проведении операции «RdRand»
                — шантажом/слезными уговорами они заставляют руководство Intel принять нужное им решение, а всех инженеров, вовлеченных в проект, переводят в Los Alamos для сохранения секретности
                — весь проект базируется лишь на том предположении, что именно эта команда будет использоваться во всех security приложениях, которыми будут пользоваться враги свободы и демократии
                — для активации решено использовать особую последовательность команд, телепатически передаваемых на CPU, для чего срочно выращиваются пара супергероев-мутантов с телепатическими способностями
                — ну, и так далее :D

                Вон, «дыра» в SSL была годами, это тоже злобные спецслужбы постарались? Или, может, просто разработчик «накосячил»? Хотя с точки зрения «заговорщика» в репу комиттил не иначе как жидорептилоид.

                А паранойя, даже и в бытовом смысле слова, это тоже диагноз (равно, как и слепая вера в «теорию заговора»). Мне, все же, куда проще поверить в людей, получивших взятку от конкурентов Intel, нежели, чем в серьезных любителей шапочек из фольги.

                P.S. Это мой последний пост на эту тему, так как, во-первых, ничего нового по теме Вы сообщить мне явно не можете, а переубеждать сторонника «теории заговора» явно неблагодарное занятие. Могу только порекомендовать Вам немедленно избавиться от всех «пиндосских штучек с закладками», и перейти на православный, тёплый и ламповый «Эльбрус» (или что там в Сколково «изобрели»?)


                1. geher
                  15.11.2017 16:07

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


                  Что же до сценариев, то держите:


                  1. Интел не при делах, это всего лишь эксплойт, который пока не пофиксили.
                  2. Есть желание руководства США (и не только, но Интел известно чья компания, потому будем про США) получить бэкдоры ко всему. Желание неоднократно было озвучено публично. Есть желание — есть попытки его реализовать. Где-то через суд (а аусть Эппл нарисует нам программу, которая расшифрует нам любой телефон этой компании), где-то тихо договорившись (мы вам мегагосконтоакт, а вы нам эксплойт, и не фиксите его, пока не эксплойт не станет широко известен).
                    Все.
                    Ваш же сценарий вообще какой-то нежизненный.

                  шантажом/слезными уговорами они заставляют руководство Intel принять нужное им решение,

                  Вы забыли вариант — предложить деньги.


                  а всех инженеров, вовлеченных в проект, переводят в Los Alamos для сохранения секретности

                  Зачем?!!! Инженеоы реализуют фичу из ТЗ (например, механизм для тестирования), и знать не знают, зачем и для кого оно на самом деле.
                  А если кто знает, то подписку о неразглашении с него. А если кто проболтается, то вешаем ярлык "теория заговора".


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

                  Вообще бред.
                  Дыра такого рода является точно таким же узким инструментом, как и куча других дыр как в системе, так и в прикладных программах.
                  И использоватся она будет в некотором узком пространстве, ограниченном (как обычно) набором факторов вроде: процессор от Интел, наличие подходящей дыры в ОС для использования, наличие канала доступа к ЭВМ, наличие программы, использующей этот ГСЧ, данные которой представляют интерес.
                  А для других случаев будут искать, выторговывать и требовать другие дыры.


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

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


        1. vanxant
          14.11.2017 11:57

          Закладки были, есть и будут на всех уровнях, от железа до обновлений винды. Не имею права говорить за наших, хотя инцидентов был вагон, но вспомните хотя бы stuxnet и иранские центрифуги. Или хотя бы тот факт, что Т-Платформы оказались под санкциями задолго до Крыма. Да и Аню Чапман не просто так обменивали.
          Побочных каналов связи — вагон и маленькая тележка. Начиная от радио-излучений и «спец-версий» железа для конкретного покупателя, продолжая закладками в тех же цисках и обновлениях винды и заканчивая идиотами, которые подключают к рабочему ПК с совсекретной инфой свисток мобильного интернета, чтобы смотреть порнушку.


          1. silveruser
            14.11.2017 14:23

            Закладки были, есть и будут на всех уровнях, от железа до обновлений винды.
            Хоть один реальный факт привести можете?

            Про «радио-излучения», с Вашего позволения, я все-таки промолчу, а то совсем уж нехорошо получается. Спорить на таком уровне, если честно, я не готов (равно, как не спорю с «плоскоземельщиками» и «пендосов на луне не было»).


            1. dTex
              14.11.2017 14:42
              +1

              ("Проблема утечки информации через побочные электромагнитные излучения")=>Яндекс.поиск


              1. Victor_koly
                14.11.2017 16:23

                «видеосигнал от видеокарты к контактам электронно-лучевой трубки монитора» — на ЖК и цифровом интерфейсе получим кашу?
                Да, там тоже поможет шапочка из фольги.


                1. Alexeyslav
                  15.11.2017 10:34

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


                  1. Victor_koly
                    15.11.2017 17:21

                    Хорошо, мой Вам рецепт защиты от получения электромагнитных сигналов с компа.
                    Сначала предположим, что нам нужно перекрыть диапазон от 3 кГц (колебания речи в кабеле к колонкам/наушникам) до 5 ГГц (порядок частоты процессора). Берем много меди и считаем, в какой слой нам её нужно раскатать. Я хочу взять полторы толщины скин-слоя для частоты 3 кГц, это выйдет 0.572 мм.
                    Если в отдельных местах выйдет чуть меньше — не беда, лишь бы эти участки не были больше половины длины волны при 5 ГГц (lambda = 6 см). Обкрутить этой фольгой нужно источник излучения, то есть наш комп и всю периферию.
                    Потом фольгу нужно заземлить. Вы могли бы заземлить её на батарею, но вдруг спецслужбы смогут подключить к ней вольтметр? По этому мы будем заземлять её на конденсатор. Что бы рассчитать емкость конденсатора, нужно просто оценить спектр мощности нашей аппаратуры и понять, сколько максимум Дж энергии она может передать за характерную половину периода. Имея емкость и энергию мы например получаем, что конденсатор зарядится на 20 мДж, при емкости 1 мкФ — в нем возникнет напряжение 200 В.
                    Осталось придумать что будет, если оставить конденсатор внутри этой нашей «клетки».


                    1. Alexeyslav
                      16.11.2017 13:46

                      Это если бы там протекал постоянный ток… а так конденсатор — реактивный элемент, не будет в себе копить заряд от переменного тока, клетка и конденсатор образуют колебательный контур и будут гонять ток пока тот не рассеется на активных уастках цепи или на потерях в диэлектрике. Да и второй вывод конденсатора куда подключать?


                      1. Victor_koly
                        16.11.2017 14:07

                        Мне нужно не накопить заряд, а сохранить куда-то энергию того излучения, которое мы хотим не выпустить наружу. Второй выход никуда подключать не нужно, мы заряжаем только 1 пластину. На следующей половине периода (понятие условное для реального спектра излучений компа) этот заряд уменьшается под действием возникшего потенциала противоположного знака со стороны «клетки».
                        Но, если Вы не боитесь такого уровня сигнала от Вашей электроники, можете заземлять на батарею. Тогда разумное условие — постоянная RC системы «конденсатор — проводник до батареи» должна соответствовать времени хотя бы в несколько раз меньше периода нашего «полезного сигнала». Если боитесь буквально передать сигнал от колонок с частотой 44.1 кГц, то нужно RC < 22.5 мкс.


            1. vanxant
              14.11.2017 15:26

              Хоть один реальный факт привести можете?

              Вы издеваетесь? ACPI, WoL, IPMI, TXE и прочее — в железе. Банальные удалённый рабочий стол и скайп в винде. Ни один современный комп не выключен полностью, если его физически не вынули из розетки. Он типа спит и ждёт команд на всех интерфейсах, включая радио. Чьих? Только ли авторизованных админов? Тут же, на хабре, пишут — что нет, не только.
              Но продолжайте верить в розовых единорогов несгибаемой честности. Та же американская военщина заставила Интел выдать лицензию AMD и создать себе конкурента, по сути переломав через колено весь их совет директоров с акционерами. Но вы продолжайте верить, что от менее публичных просьб АНБ и ЦРУ у Интела, разумеется, иммунитет.
              Что касается радио, то лучше молчите, может за умного сойдёте. Картинку с монитора можно снимать с десятков, при хороших условиях — сотен метров, просто по воздуху. Для эзернета по меди можно устроить MitM, не повреждая кабель и не оставляя следов, причём если нужно только чтение трафика — достаточно прямых рук и ардуинки. Вайфай штатно пробрасывается на километры при помощи антенны из г… на и палок. Дыры в шифровании там находят каждые пару лет — и тут же заботливые производители добавляют новые. А на большинстве компов сегодня вайфай есть и работает. Даже если беспроводная сеть логически отключена в юзерской ОС, адаптер технически продолжает слушать эфир и работать с точки зрения встроенного в чипсет отдельного процессора.


        1. Andronas
          15.11.2017 09:48

          Вы слишком идеализируете Штаты и их псевдодемократию. Пока не доказано что закладки в процессорах нет, остаются только досужие домыслы на этот счёт.


    1. immaculate
      14.11.2017 05:09

      Не понимаю, почему разработчики FreeBSD отказались от использования аппаратного генератора если в процессорах Intel вагон гораздо более серьезных закладок типа Intel ME: «Мы забили досками форточку, чтобы в дом не забрались воры, но оставили входную дверь открытой».


  1. serkuznec
    13.11.2017 23:04

    > И не будем забывать про самый главный критерий — каждый следующий бит в последовательности случайных данных должен быть предсказан с вероятностью, не превышающей вероятность встретить динозавра на улице ;)

    Может быть я чего-то не понял? Вероятность предсказания бита в случайной последовательности, как и в случае подброса монетки = 0.5
    Вероятность же встретить динозавра на улице намного меньше меньше 0.5


    1. iChaos
      14.11.2017 00:12

      Это отсылка к бородатому анекдоту:

      Спросили у блондинки, какова вероятность встретить динозавра на улице, она ответила: «50% – либо встречу, либо нет».


  1. cybrex
    13.11.2017 23:04

    Ещё такая российская разработка как «Соболь», плата для PCI разъёма. Кроме ГСЧ выполняет и ряд других функций.


  1. r85qPZ1d3y
    14.11.2017 02:05

    Кажется, я знаю как взломать Лава-лампы в Cloudflare, где они находятся?


    1. aszhitarev
      14.11.2017 11:20

      На «стене энтропии», написано же.


    1. Xitsa
      15.11.2017 11:08

      Перед тем как взламывать, стоит почитать как они на самом деле используются: блог Cloudflare.


  1. BalinTomsk
    14.11.2017 06:51

    www.aliexpress.com/item/New-Nite-Tritium-Glowing-Illuminated-Keyring-Keychain-Glow-Stick-Ring-10-Years/32594661791.html

    Такая лампочка и фотоприемник — 10 лет сигнала.


    1. Victor_koly
      14.11.2017 13:25

      Купить любой кусок радиоактивного изотопа и приставить к нему счетчик Гейгера. Уже в статье реализовали.


      1. Alexeyslav
        14.11.2017 18:27

        Медленно, увы…


  1. fivehouse
    14.11.2017 14:04

    А еще есть шум на аудиокарте, как минимум 2х канальный. Шум в камере. Пакеты в ethernet сети, либо WiFi. Динамика обращения к HDD/SSD. И многократная комбинация всего этого.


  1. Tsvetik
    14.11.2017 15:41

    Все эти ГСЧ на флешках и аудиокартах — полная фигня.
    Ставится рядом помеха и случайные числа становятся уже неслучайными.


  1. kvaps
    14.11.2017 15:51

    image


  1. Samoglas
    14.11.2017 19:53

    Был такой занятный проект Psyleron от выходцев из Принстона, но судя по сайту, проект уже не живой.

    Еще может быть полезной таблица:

    Comparison of hardware random number generators


  1. Barafu
    15.11.2017 16:34

    Кто живёт/работает возле нагруженного шоссе или людной улицы, можно просто выставить камеру за окно и снимать с неё картинки в BMP, потом брать с них хеш. Фонтан чистейшего рандома раз в 10 секунд.


    1. SandroSmith
      17.11.2017 11:17

      А если там флешмоб устроят? С замирнием который.


  1. SandroSmith
    17.11.2017 11:16

    Это обязанно быть здесь
    image