Bitcoin Forum
May 03, 2024, 09:46:38 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 6 7 »  All
  Print  
Author Topic: Истинный ГСЧ (True RNG, TRNG)  (Read 14794 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 20, 2015, 09:00:34 AM
Last edit: January 29, 2015, 06:56:53 AM by needbmw
 #1

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

мне очень понравилась идея квантового ГСЧ на основе счетчика Гейгера-Мюллера.
в результате после небольшого обсуждения был собран подопытный девайс из Raspberry PI и советского дозиметра "Север" на трубке самой распространенной марки СБМ-20. быдлокод пока только в зародыше, буду выкладывать обновления и результаты тестов по факту их появления.

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



работая на фоновых значениях гамма-излучения, глупо ожидать высокой скорости от TRNG, в среднем сейчас генератор выдает 1 случайный бит в 8-12 секунд (возбуждать счетчик от источника гамма-ИИ просьба не предлагать, чтобы не иметь проблем со здоровьем и законом).

Code:
root@raspberrypi:~/rng# ./rng 
01010000 0x50 0.086 bps 0.12 uSv/h
11100110 0xE6 0.066 bps 0.09 uSv/h
10101000 0xA8 0.080 bps 0.11 uSv/h
10011111 0x9F 0.089 bps 0.12 uSv/h
00110101 0x35 0.096 bps 0.13 uSv/h
00111101 0x3D 0.080 bps 0.11 uSv/h
00011100 0x1C 0.092 bps 0.13 uSv/h
10101101 0xAD 0.096 bps 0.13 uSv/h

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

для ответа на закономерный вопрос "накой это вообще нужно" приведу две картинки с этого сайта:

True random bitmap


PHP rand() on Windows bitmap


а теперь представьте, что частные ключи к вашим монетам были сгенерированы вторым генератором  Roll Eyes



ввиду отсутствия модератора на форуме топик само-модерируемый, трёп не по теме буду выпиливать без всякого сожаления  Smiley

NO PSAKING!
1714772798
Hero Member
*
Offline Offline

Posts: 1714772798

View Profile Personal Message (Offline)

Ignore
1714772798
Reply with quote  #2

1714772798
Report to moderator
1714772798
Hero Member
*
Offline Offline

Posts: 1714772798

View Profile Personal Message (Offline)

Ignore
1714772798
Reply with quote  #2

1714772798
Report to moderator
1714772798
Hero Member
*
Offline Offline

Posts: 1714772798

View Profile Personal Message (Offline)

Ignore
1714772798
Reply with quote  #2

1714772798
Report to moderator
The block chain is the main innovation of Bitcoin. It is the first distributed timestamping system.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714772798
Hero Member
*
Offline Offline

Posts: 1714772798

View Profile Personal Message (Offline)

Ignore
1714772798
Reply with quote  #2

1714772798
Report to moderator
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 20, 2015, 09:00:52 AM
 #2

резерв

NO PSAKING!
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
January 20, 2015, 09:14:32 AM
 #3

Значительная часть постов из данной темы может быть найдена тут ещё:

https://bitcointalk.org/index.php?topic=704756.msg10205657#msg10205657

P.S. На посты becool внимание можно не обращать.
fruit
Legendary
*
Offline Offline

Activity: 1064
Merit: 1023


habr


View Profile
January 20, 2015, 11:05:47 AM
 #4

А не проще ли, для домашнего использования, ГСЧ на основе рисунка (пузырьки) среза буханки чёрного хлеба?
Надо ещё сгенерить - срезал ещё ломоть.

Прошу, громко не смеяться - я не специалист по криптографии.



Картинки со срезами хлеба


~DefaultTrust (Trust - is fraud.)
Доверие - это разновидность мошенничества.
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 20, 2015, 11:12:14 AM
 #5

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

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

NO PSAKING!
OZR
Sr. Member
****
Offline Offline

Activity: 281
Merit: 250

You're in my wonderland!


View Profile
January 20, 2015, 11:41:39 AM
 #6

Задумался. Privkey сгенерированный мне в VanityGen по логике явно должен быть псевдо-рандомным и потенциально уязвим...

*Впрочем, велика вероятность, что сгенерированные адреса Bitcoin Core, такие же псевдо-рандомные, а это уже чрезвычайно серьёзная проблема... Очередной и очень важный повод добить программирование и увидеть картинку своими глазами... Грусть.*
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 20, 2015, 12:03:49 PM
 #7

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

продам свежие квантовые случайные числа, недорого  Grin

NO PSAKING!
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
January 20, 2015, 12:17:40 PM
 #8

<кэп>Ну продавать их смысла уже нет, потому что ты их видел.</кэп>  Smiley
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 20, 2015, 01:55:12 PM
 #9

пока копятся данные, я решил исследовать RNG чипа BCM2708, на котором собственно сделана сама распи.
как выяснилось, помимо обычного /dev/urandom существует еще драйвер bcm2708-rng, открывающий доступ к аппаратному ГСЧ чипа через устройство /dev/hwrng

Quote
root@raspberrypi:~/rng# dd if=/dev/urandom bs=1M count=1 | ent
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 1.36604 s, 768 kB/s
Entropy = 7.999849 bits per byte.

Optimum compression would reduce the size
of this 1048576 byte file by 0 percent.

Chi square distribution for 1048576 samples is 219.28, and randomly
would exceed this value 90.00 percent of the times.


Arithmetic mean value of data bytes is 127.4724 (127.5 = random).
Monte Carlo value for Pi is 3.150364496 (error 0.28 percent).
Serial correlation coefficient is 0.001382 (totally uncorrelated = 0.0).
root@raspberrypi:~/rng#

красным выделены результаты Chi2-теста, на котором как раз и сыпятся ГПСЧ

Quote
root@raspberrypi:~/rng# modprobe bcm2708-rng
root@raspberrypi:~/rng# dd if=/dev/hwrng bs=1M count=1 | ent
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 10.8145 s, 97.0 kB/s
Entropy = 7.999822 bits per byte.

Optimum compression would reduce the size
of this 1048576 byte file by 0 percent.

Chi square distribution for 1048576 samples is 259.20, and randomly
would exceed this value 50.00 percent of the times.

Arithmetic mean value of data bytes is 127.4226 (127.5 = random).
Monte Carlo value for Pi is 3.140568316 (error 0.03 percent).
Serial correlation coefficient is 0.001274 (totally uncorrelated = 0.0).

у аппаратного генератора все в порядке, Chi2 девиация 50%

UPD: при множественных запусках тоже бывают забросы до 90%, надо разбираться с ним плотнее

NO PSAKING!
tvskit
Legendary
*
Offline Offline

Activity: 1358
Merit: 1008



View Profile
January 20, 2015, 10:47:33 PM
 #10

Может за основу гнч взять и изучить помехи при помощи обычной антенны вч или нч сигнала, который валит из космоса не прирывно и мощно, при этом используюя лубой доступный приемник, булавку?
A-Bolt
Legendary
*
Offline Offline

Activity: 2314
Merit: 2302


View Profile
January 20, 2015, 11:00:31 PM
 #11

Может за основу гнч взять и изучить помехи при помощи обычной антенны вч или нч сигнала, который валит из космоса не прирывно и мощно, при этом используюя лубой доступный приемник, булавку?
А как отделить космический шум от сигналов радиостанций и помех от зарядки мобильника, воткнутой в розетку рядом с приёмником?
tvskit
Legendary
*
Offline Offline

Activity: 1358
Merit: 1008



View Profile
January 20, 2015, 11:19:07 PM
 #12

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

Иногда это сигнал/шум, а иногда, каждую секунду/1000000000, мошность излучения гамма - солнце, мангитары, пульсары и т.д.  и это четко отделяется.
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 21, 2015, 08:11:09 AM
 #13

Иногда это сигнал/шум, а иногда, каждую секунду/1000000000, мошность излучения гамма - солнце, мангитары, пульсары и т.д.  и это четко отделяется.

а конкретизировать алгоритм "четкого" отделения можно?
ведь он напрямую будет влиять на результат.

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

NO PSAKING!
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
January 21, 2015, 03:15:23 PM
 #14

Неоспоримым плюсом использования ионизирующих частиц в качестве источника энтропии является то, что при хорошем алгоритме счета такой источник очень трудно испортить халтурной реализацией. По сути, здесь вообще значения не имеет даже такой обычный предмет головной боли, как плавающие от температуры характеристики элементной базы.
Subw
Hero Member
*****
Offline Offline

Activity: 672
Merit: 500


View Profile
January 21, 2015, 06:19:34 PM
 #15

велосипедисты, про  /dev/random не слышали?
fsb4000
Legendary
*
Offline Offline

Activity: 1400
Merit: 1000



View Profile
January 21, 2015, 06:29:30 PM
 #16

велосипедисты, про  /dev/random не слышали?
смешно, шутку оценил  Smiley
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 21, 2015, 07:25:08 PM
 #17

велосипедисты, про  /dev/random не слышали?

нет, а что это?  Huh

NO PSAKING!
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
January 21, 2015, 08:05:12 PM
 #18

велосипедисты, про  /dev/random не слышали?

нет, а что это?  Huh
Системное устройство для поиска жопы.

https://twitter.com/brainslug/status/11814377181

Code:
$ time grep -i жопа /dev/urandom
Binary file /dev/urandom matches

real 0m13.895s
user 0m0.615s
sys 0m13.165s
Subw
Hero Member
*****
Offline Offline

Activity: 672
Merit: 500


View Profile
January 21, 2015, 08:33:23 PM
 #19

велосипедисты, про  /dev/random не слышали?

нет, а что это?  Huh
то же что ты сделал только бесплатно
needbmw (OP)
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008



View Profile
January 23, 2015, 06:02:21 AM
Last edit: January 23, 2015, 11:55:50 AM by needbmw
 #20

эх, жаль пропала увлекательная дискуссия  Smiley

итак, промежуточные результаты

режим TRUE_RNG ("швейцарский" алгоритм "4 кванта на бит"):

Code:
root@raspberrypi:~/rng# ent out1.bin
Entropy = 7.829581 bits per byte.

Optimum compression would reduce the size
of this 1199 byte file by 2 percent.

Chi square distribution for 1199 samples is 265.05, and randomly
would exceed this value 50.00 percent of the times.

Arithmetic mean value of data bytes is 125.2644 (127.5 = random).
Monte Carlo value for Pi is 3.256281407 (error 3.65 percent).
Serial correlation coefficient is 0.033513 (totally uncorrelated = 0.0).

все очень неплохо даже при такой небольшой выборке в 1199 байт

далее самый быстрый конвеерный алгоритм "1 квант на бит":

Code:
root@raspberrypi:~/rng# ent out2.bin
Entropy = 7.253107 bits per byte.

Optimum compression would reduce the size
of this 2094 byte file by 9 percent.

Chi square distribution for 2094 samples is 2354.83, and randomly
would exceed this value 0.01 percent of the times.

Arithmetic mean value of data bytes is 126.8706 (127.5 = random).
Monte Carlo value for Pi is 3.426934097 (error 9.08 percent).
Serial correlation coefficient is 0.010534 (totally uncorrelated = 0.0).

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

сейчас дополнительно реализован алгоритм "3 кванта на бит", результат ниже:

Code:
root@raspberrypi:~/rng# ent out3.bin
Entropy = 7.874998 bits per byte.

Optimum compression would reduce the size
of this 1420 byte file by 1 percent.

Chi square distribution for 1420 samples is 244.36, and randomly
would exceed this value 50.00 percent of the times.

Arithmetic mean value of data bytes is 124.7901 (127.5 = random).
Monte Carlo value for Pi is 3.169491525 (error 0.89 percent).
Serial correlation coefficient is 0.019137 (totally uncorrelated = 0.0).

видим, что с энтропией и Chi2 все нормально.

также реализован алгоритм "2 кванта на бит", но данные пока только набираются.

UPD:

Code:
root@raspberrypi:~/rng# ent out.bin
Entropy = 7.841278 bits per byte.

Optimum compression would reduce the size
of this 1173 byte file by 1 percent.

Chi square distribution for 1173 samples is 248.86, and randomly
would exceed this value 50.00 percent of the times.

Arithmetic mean value of data bytes is 130.0068 (127.5 = random).
Monte Carlo value for Pi is 3.117948718 (error 0.75 percent).
Serial correlation coefficient is -0.003621 (totally uncorrelated = 0.0).

что же, все три варианта кроме "1 квант - 1 бит" демонстрируют отличные и очень схожие результаты.
буду искать альфа-счетчик  Smiley


NO PSAKING!
Pages: [1] 2 3 4 5 6 7 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!