Как стать автором
Обновить

Комментарии 82

Генератор, который пробует измерить в нескольких транзисторах процессора (дешевый кристалл на 100 миллионов элементов) количество возбужденных носителей (должны подчиняться статистике Ферми-Дирака). При этом кусок кремния охлаждается до температуры 128 K.
Также стоит упомянуть свободную программную реализацию генератора случайных чисел NeuG. Работает на STM32F103 контроллере, как пример на FST-01.
Можно задать странный/глупый вопрос?
1) Чем отличается псевдослучайное число от истинно случайного с практической точки зрения?
2) Можно ли создать генератор случайных (истинных или псевдо) чисел на основе математической формулы, без взятия аппаратных данных? Проще говоря, существует ли такое математическое выражение, которое даёт произвольный результат?
3) Петя загадал число от 1 до 10. Является ли оно истинно случайным или псевдослучайным?
3) Вася бросил игральную кость, выпало число от 1 до 6. Тот же вопрос.
1. Псевдослучайное число, зная все входные параметры, можно вычислить. И, что хуже, все последующие числа псевдослучайной последовательности — тоже. Истинно случайное — нельзя. Ну хотя бы по причине того, что у него «все входные параметры» — это существенный кусок Вселенной.
2. Псевдо — можно. Тысячи их. Теория хаоса в помощь. Истинно — нет.
3. Пока Петя один и число одно — да, число случайное, хотя и «не очень». Если Петя выдаёт 10 чисел в день, или если взяли по объявлению 10 примерно одинаковых Петь из дефолт сити — они очень даже предсказуемы. Ну, энтропия на уровне плинтуса, евпоча.
3, который 4. Если Вася не шулер и т.п., то да.
это существенный кусок Вселенной

Который тоже можно (практически нереально) вычислить :-)
2) нельзя, потому что у математического алгоритма есть начало. И вот если несколько человек начнёт с начала, то у них будут одинаковые последовательности.
Совершенно случайных чисел посчитать Вы не сможете.
Но, как пример, есть такая возможность:
что она позволяет извлечь любую конкретную шестнадцатеричную или двоичную цифру числа pi без вычисления предыдущих
НЛО прилетело и опубликовало эту надпись здесь
После того, как случайные числа предоставляются клиенту, они немедленно удаляются из системы — одни и те же данные никогда не будут отправлены разным пользователям (если, конечно, вы доверяете HotBits).

Вообще-то, могут, вероятность совпадения есть. Другое дела, что нет способа узнать, было ли это и кому были отправлены такие же данные.
> Знай себе числа генерируй на основе непредсказуемых данных физического мира
C чего они вдруг непредсказуемые? Всё предопределено Большим Взрывом.
Квантмех говорит, что есть неопределенность. А уж задача «посчитать события, имея за исходные данные параметры Большого взрыва» — совсем фантастика.
Ну если только наша вселенная не является компьютерной симуляцией…
НЛО прилетело и опубликовало эту надпись здесь
Вроде там не получится избавиться от 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:])

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

Общая схема доказательства: берём два независимых бита 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)
Проблема с модными нонче виртуалками и прочими там докерами. Там нету никакого пользовательского ввода…
Там же есть какие-то входные данные, задержки их получения, задержки доступа к внешним ресурсам и прочие события, которые могут плавать по времени, почему бы эти задержки не использовать для внесения рандома?
Сразу после включения виртуалки там ещё нет никаких задержек или событий, которые могут плавать по времени. Точнее они есть, но никакой случайности там нет, при каждом запуске на конкретной железке будет примерно одно и то же. А /dev/random может быть нужен прямо сразу — например, для генерации сеансовых ключей, чтобы куда-то подключиться и получать/передавать запросы и данные.
Это довольно известные грабельки.
Далее если примерно одинаково, то этого вполне достаточно, чтобы рандомная последовательность стала другой.
… но недостаточно для криптографических приложений.
В бутлоге все эти ваши тайминги заботливо указаны, алгоритм микширования известен, ибо сорцы открыты, алгоритмы генерации сеансовых ключей открыты — бери и генерируй точно такую же последовательность и точно такой же ключ.
Даже если что-то где-то в логе не указано, стоимость подбора брутфорсом получается смешная по меркам криптографии.
Виртуалка отслеживает поворот шлема пользователя или как? Ну или нужно сразу прикрутить считыватель мозговых ритмов.
Тоже можно выкрутиться. В компе есть много такого, из чего можно наковырять пару бит непредсказуемости. То же время доступа к какому-нибудь файлу. Или время выполнения сетевого запроса чего-нибудь откуда-нибудь. А после проворачивания этого бита через мясорубку хеширования имеем полный хаос. В информационном плане энтропия, конечно, увеличивается именно на эти несколько бит, но выдаваемая последовательность переколбашивается полностью.

Кстати, в примере на Питоне дурака свалял. Пользовать генератор надо так:
# Пользуем:
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 инициализируется каждый раз заново, и в результате ничего интересного не выдаёт.
Ненадёжно. Время доступа, задержки можно контролировать тем самым поставив под сомнение случайность этих величин. Метод применим только в идеализированном мире.
Хеширование не увеличит энтропию, оно просто распределит биты равномерно по выборке. С таким же успехом можно внутренние часы хешировать, или аппаратный счетчик микросекунд процессора.
Хеширование не увеличит энтропию
Совершенно верно. Я бы даже сказал, что она её немножко уменьшает. И ограничивает сверху своей разрядностью. Но любим мы хеш-функцию не за привносимую энтропию (которой нет), а за то, как Вы справедливо заметили, что она эту энтропию размазывает так, что не оставляет атакующему ни малейшего шанса довольствоваться тем, что часть данных ему известна.

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

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

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

А давайте поэкспериментируем. Будем замерять время срабатывания функции получения текущего времени. Вот такой, например, код:
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 байт энтропии, или всё же нет?
А фот фиг его знает. Но видно что в основном всё крутится около двойки. Отклонения, полагаю, из-за того что рядом работают ещё какие-то процессы. Но возьмём например виртуальные машины разворачивающиеся с одного и того же образа, У них старт будет происходить примерно по одному и тому же сценарию, разнообразия будет ещё меньше. Впрочем, да… часто когда у нас есть время накопить данные то может быть энтропия и наберётся нужная, но когда говорят об аппаратных ГСЧ подразумевают что потребность в случайных числах достаточно высока и нет времени что-то копить, успевай только отдавать хорошие числа на каждый такт…
Такая борода в принципе архиватором (неплохой способ навскидку прикинуть энтропию сигнала) должна ужиматься раз в 10-20. Итого будет 500-1000 байт. Если дать фору в 10 раз на то, что архиватор работает не в «god mode», имеем 50-100 байт чистой как слеза ребёнка непредсказуемой и дикой неопределённости. Более чем достаточно для того, чтобы превратить взлом в полностью безнадёжное предприятие.

Что касается конкретно ваших виртуалок, то никто кроме вас с ними не проэкспериментирует. Как говорится, у вас руль, вы и поворачивайте.
Вот только какими силами? Как правило, поток случайных чисел нужен очень огромный, а значит на входе должен быть в 100 раз больше. Где его взять? Например 100М случайных чисел в секунду, грязными?
Для чего может быть нужно 100М высокоэнтропийных СЧ/с? Решили шифровать магистральный канал кодовым блокнотом? Когда затеваются затеи такого масштаба, можно себе позволить вложить миллион баксов в квантовый ГСЧ, охлаждаемый жидким гелием. Потому что туда-сюда какой-то жалкий миллион погоды не делают. Я говорил про простое и надёжное решение, реализуемое на коленке за пять минут. Если нужно освоить хренову уйму бабла, такие решения априорно не годятся.
я про 100М грязными, чтобы в лучшем случае получить с них 1М очищенных, отборных СЧ.
НЛО прилетело и опубликовало эту надпись здесь
Можно и с мышки, но, понимаете ли, испытываю серьёзные затруднения снимать данные мышки из-под Питона :)) Поэтому в примере клавиатурный ввод. А так-то, конечно, если задастся целью, внутри компа можно найти довольно много непредсказуемостей, которые после скармливания хеш-функции могут послужить неплохим источником ацкого хаоса.

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

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

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


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

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

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

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

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

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

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

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

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

Касательно Сноудена (перефразируя «утиный тест»):
Если кто-то выглядит как агент ФСБ, ведет себя, как агент ФСБ и говорит, как агент ФСБ, то это, вероятно, и есть агент ФСБ

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

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

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

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


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

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


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

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


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

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


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

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


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

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

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

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

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

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

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

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


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


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

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

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


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

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


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

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


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

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

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

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

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

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

Вы издеваетесь? ACPI, WoL, IPMI, TXE и прочее — в железе. Банальные удалённый рабочий стол и скайп в винде. Ни один современный комп не выключен полностью, если его физически не вынули из розетки. Он типа спит и ждёт команд на всех интерфейсах, включая радио. Чьих? Только ли авторизованных админов? Тут же, на хабре, пишут — что нет, не только.
Но продолжайте верить в розовых единорогов несгибаемой честности. Та же американская военщина заставила Интел выдать лицензию AMD и создать себе конкурента, по сути переломав через колено весь их совет директоров с акционерами. Но вы продолжайте верить, что от менее публичных просьб АНБ и ЦРУ у Интела, разумеется, иммунитет.
Что касается радио, то лучше молчите, может за умного сойдёте. Картинку с монитора можно снимать с десятков, при хороших условиях — сотен метров, просто по воздуху. Для эзернета по меди можно устроить MitM, не повреждая кабель и не оставляя следов, причём если нужно только чтение трафика — достаточно прямых рук и ардуинки. Вайфай штатно пробрасывается на километры при помощи антенны из г… на и палок. Дыры в шифровании там находят каждые пару лет — и тут же заботливые производители добавляют новые. А на большинстве компов сегодня вайфай есть и работает. Даже если беспроводная сеть логически отключена в юзерской ОС, адаптер технически продолжает слушать эфир и работать с точки зрения встроенного в чипсет отдельного процессора.
Вы слишком идеализируете Штаты и их псевдодемократию. Пока не доказано что закладки в процессорах нет, остаются только досужие домыслы на этот счёт.
Не понимаю, почему разработчики FreeBSD отказались от использования аппаратного генератора если в процессорах Intel вагон гораздо более серьезных закладок типа Intel ME: «Мы забили досками форточку, чтобы в дом не забрались воры, но оставили входную дверь открытой».
Интересно, неужели не существует никаких математических методов, позволяющих протестировать и опровергнуть (или, наоборот, доказать) «теорию заговора» об Intel-овском RdRand?
Для этого всего-то нужно хакнуть AES :))
> И не будем забывать про самый главный критерий — каждый следующий бит в последовательности случайных данных должен быть предсказан с вероятностью, не превышающей вероятность встретить динозавра на улице ;)

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

Спросили у блондинки, какова вероятность встретить динозавра на улице, она ответила: «50% – либо встречу, либо нет».
Ещё такая российская разработка как «Соболь», плата для PCI разъёма. Кроме ГСЧ выполняет и ряд других функций.
Кажется, я знаю как взломать Лава-лампы в Cloudflare, где они находятся?
На «стене энтропии», написано же.
Перед тем как взламывать, стоит почитать как они на самом деле используются: блог Cloudflare.
Купить любой кусок радиоактивного изотопа и приставить к нему счетчик Гейгера. Уже в статье реализовали.
Медленно, увы…
А еще есть шум на аудиокарте, как минимум 2х канальный. Шум в камере. Пакеты в ethernet сети, либо WiFi. Динамика обращения к HDD/SSD. И многократная комбинация всего этого.
Все эти ГСЧ на флешках и аудиокартах — полная фигня.
Ставится рядом помеха и случайные числа становятся уже неслучайными.
НЛО прилетело и опубликовало эту надпись здесь

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

А если там флешмоб устроят? С замирнием который.
Это обязанно быть здесь
image
Почему не 42?
Вы где-нибудь видели игральный кубик с 42 гранями?
А почему бы и нет? Только для такого «кубика» нужна будет довольно качественная поверхность для игры, грани будут не такими устойчивыми(скорей всего 3х-угольные или 4х-угольные) как у 6-гранного, неровности поверхности могут сместить баланс на спорное промежуточное положение…

Потому что игральной костью можно выбросить максимум 7. И то, это удалось единственному человеку.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий