LINUX.ORG.RU

Источник этропии для мк без АЦП

 , ,


0

1

Младший бит АЦП это самое очевидное решение. А если его нет? Есть компаратор.

Чип stm8l001j3

Насколько кривое решение взять жирный псевдо рандом (начиная с уникального зерна для каждой железки) и секурную хеш функцию поверх него?

Могу ещё как нибудь компаратор превратить в антенну и ловить шум из эфира. Если это не потребует сложной схемы.

★★★★

Последнее исправление: bga_ (всего исправлений: 1)

Могу ещё как нибудь компаратор превратить в антенну и ловить шум из эфира.

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

Harald ★★★★★
()

IC к нему гену на хреновой комплектухе :)

Morin ★★★★★
()
Ответ на: комментарий от Morin

Ну отксорить с записанный с этой же ноги секунду назад. Как ты навяжешь? Рядом передатчик поставишь? И что, ну ‘навяжешь’ ты зерно псевдослучайного с точностью плюс минус два бита на байт, что есть примеры из реальной жизни где так шифр в скрывали? Это настолько теоретическая теория, что её и нет. Хотя-бы 1 байт попробуйточно навязать (ты ж ещё и момент начала чтения не знаешь) чтоб светодиод зажечь|потушить, тогда поверю)

pihter ★★★★★
()

Каждую ногу выход закоротить на компаратор, в процессе работы будет куча всякой псевдорандомной хрени на них. Только между собой их не коротить, просто от каждого выхода к своему транзистору, а от каждого транзистора/оптопары на компаратор, можно ещё перед этим 4-и-не поставить и смешивать сигналы. Как работать будет не знаю, просто от балды придумал =) Ещё ко всему этому можно присобачить плохое, старое микрореле, и брать с него дребезжание то самое с которым борятся когда оно на тактовых кнопках возникает.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от pihter

у тебя тут откуда-то биты байты еще какая хрень понеслась) нет еще ничего, ты утверждал наводка, вектор атаки на такую байду навязанная частота.

теоретизировать сейчас как и что и в каких условиях это очень плохая затея

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

Morin ★★★★★
()
Ответ на: комментарий от Morin

Что значит - вектор атаки - частота? Ну наведешь ты мне частоту на пин, она все равно точно не прочитается. Читаешь 8 бит, ждёшь полученное число тактов, читаешь один бит - случайный, потом снова так. В реальном мире повлиять на данные такой атакой нельзя. В чистой математической теории - может быть

pihter ★★★★★
()

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

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

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 3)
Ответ на: комментарий от pfg

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

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

Morin ★★★★★
()
  • Подключить к ножке контроллера конденсатор через резистор.
  • Подключить этот конденсатор к компаратору.
  • Запустить таймер, подать на ножку единичку.
  • По срабатыванию компаратора засечь значение счётчика таймера. Оно будет в определённой мере случайным.
Beewek ★★★
()

Вся жизнь моя источник энтропии…

anonymous
()
Ответ на: комментарий от pihter

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

Harald ★★★★★
()

Младший бит АЦП это самое очевидное решение.

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

alysnix ★★★
()
Ответ на: комментарий от Morin

можно попросить таки поискать таку статью. а то теории достали…
теоретически и я вижу вездесрущую 50-герцовую наводку на шум с экрана осцилографа. и предполагаю как это можно использовать в случае однобитного АЦП - компаратора как %тс%. но исключить такую наводку в схемотехнике достаточно просто. да и простой програмный фильтр вычистит последовательность от дублей + сидинг гсч. но это всё на мой далекий взгляд…
в общем интересно почитать умную статейку.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)

Так компаратор — считай половина оцепе: http://microsin.net/programming/avr/avr400-low-cost-adc.html

Кроме того, на него можно просто завести шум транзистора/диода. Например, на одну ногу сглаженный конденсатором, на вторую — несглаженный.

Можно попробовать ксорить весь объём рамы при старте и/или состояние всех регистров. Некоторые регистры при ресете могут не сбрасываться и будут содержать мусор. Какие именно — должно быть написано в даташите. Но только на один такой регистр, конечно, полагаться не стоит.

жирный псевдо рандом

У некоторых из вариантов PCG заявлена неплохая секурность. Вот обычный, несекурный 32-битный пример:

uint32_t pcg32_random() {
    /*
        PCG PRNG by Melissa E. O'Neill.
        https://www.pcg-random.org/

        Function returns 32-bit random value
        of high quality randomness.
    */

    static uint64_t
        state = 0xdaef2b3823a9bd06;     /* Init state */
    const uint64_t
        incr  = 0x4e83b442d281bc75;     /* Increment */
    uint32_t
        xorshifted,
        rot;

    xorshifted = ((state >> 18) ^ state) >> 27;
    rot = state >> 59;
    state = state * 0x5851f42d4c957f2d + (incr | 1);

    return (xorshifted >> rot) | (xorshifted << ((-rot) & 31));
}

Секурные там примерно той же сложности. То есть почти бесплатные.

anonymous
()
Ответ на: комментарий от Harald

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

Биты с компоратора накапливать в байты после чего делать с ними операцию XOR с каким либо низкочастотным сигналам, например другого компоратора настроенного на другой диапазон.
В принципе можно использовать несколько таких компораторов и псевдослучайным образом выбирть из них пару и делать операцию xor.

torvn77 ★★★★★
()
Ответ на: комментарий от alysnix

биты глубже 11-12 разряда в среднеобывательском АЦП обычно весьма случайны. сделать АЦП с реальными 16 битами уже сложно и требовательно к элементной базе, разводке платы и защите от наводок. и т.д. и т.п. хотя и технологии растут.

pfg ★★★★★
()
Ответ на: комментарий от torvn77

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

Биты с компаратора накапливать в байты после чего делать с ними операцию XOR с каким либо низкочастотным сигналам, например другого компаратора настроенного на другой диапазон.
В принципе можно использовать несколько таких компараторов и псевдослучайным образом выбирть из них пару и делать операцию xor.

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

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

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от torvn77

диода Ганна(вроде так называют))

зенера. он же стабилитрон, блин

alysnix ★★★
()

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

alysnix ★★★
()
Ответ на: комментарий от torvn77

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

pfg ★★★★★
()
Ответ на: комментарий от pfg

генераторный элемент с частотой генерации в в диапазоне единиц-десятков ГигаГерц с зависимостью частоты от приложенного напряжения…

еще резонатор ему нуна размером с пивную банку.

alysnix ★★★
()
Ответ на: комментарий от alysnix

скорость работы :) компаратор по сути однобитное АЦП. пачка таких компараторов создает параллельное прямого преобразования АЦП.
наибольший шум стабилитрон выдает, когда он находится на «перегибе» ВАХ характеристики, т.е. при напряжении стабилизации.

pfg ★★★★★
()
Ответ на: комментарий от pfg

мда, что-то поиск в моих интернетах стал совсем плох, нашел только старую статью от этих ребят с атакой на gpg по наводке. но тоже интересно. где остальное-то :)

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

http://www.cs.tau.ac.il/~tromer/papers/handsoff-20140731.pdf

а вообще поковыряйся - http://www.cs.tau.ac.il/~tromer/leisec.html

правда были еще команды с такими исследованными, если совсем лень не станет искать, то подкину

Morin ★★★★★
()
Последнее исправление: Morin (всего исправлений: 2)
Ответ на: комментарий от alysnix

не обязательно. емнип резонатор нужен для сужения полосы генерации и стабилизации частоты.
в случае рнд-генератора нужно с точностью до наоборот.

pfg ★★★★★
()
Ответ на: комментарий от pfg

наибольший шум стабилитрон выдает, когда он находится на «перегибе» ВАХ характеристики, т.е. при напряжении стабилизации.

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

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

alysnix ★★★
()
Ответ на: комментарий от alysnix

но непонятно тут разрешение компаратора, сможет ли он поймать этот шум.

Усилить оба сигнала?

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

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от alysnix

если про стабилитрон, то ток будет один :) ибо точка стабилизации Uст, Iст на характеристике одна.
прямолинейное соответствие шума от протекающего тока емнип только для линейных элементов / участков характеристик.
в точке пробоя накладывается шум какойто нестабильности.

pfg ★★★★★
()
Ответ на: комментарий от pfg

если про стабилитрон, то ток будет один :) ибо точка стабилизации Uст, Iст на характеристике одна. прямолинейное соответствие шума от протекающего тока емнип только для линейных элементов / участков характеристик.

«ток стабилизации» это ток, при котором коэфф.стабилизации максимален. стабилизация будет и при меньшем и при большем токе… стабилитрон и при микротоке стабилизирует, просто плохо…кстати кажется при миротоке и сильней всего шумит…лень в диаграммки в инете искать .

а эдс шума там - это падение напряжения от флуктаций обратного тока на внутреннем сопротивлении.

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

PS: но если компаратор несимметричен то шум получится розовый.

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от alysnix

да согласен, выразился не точно.

Наибольший уровень шумов стабилитрона наблюдается в области перелома вольт-амперной характеристики. Инструментально снятые кривые высокого разрешения показывают, что ВАХ перелома имеют не гладкий, а ступенчатый характер; случайные сдвиги этих ступеней и случайные переходы тока со ступени на ступень порождают так называемый шум микроплазмы. Этот шум имеет спектр, близкий белому шуму в полосе частот 0—200 кГц. При переходе из области перелома ВАХ в область токов стабилизации уровень этих шумов резко снижается
википедия:Стабилитрон

pfg ★★★★★
()
#define _RAND_MULTIPLIER (1103515245)
#define _RAND_INCREMENT  (12345)

static u32 global_next = 1;

static void nextrand(void) {
    global_next = global_next * _RAND_MULTIPLIER + _RAND_INCREMENT;
}

void _srand(u32 seed) {
    global_next = seed;
}

u32 _randu32(void) {
    nextrand();
    return global_next;
}

Вам не нужен сверхсекурный рандом, этого хватит. По сути это то, что было в gcc до определенной версии.

PPP328 ★★★★★
()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от Morin

АЦП как раз вы с диода и и усилителя и предлагаете. Где я говорил про АЦП? Моему способу хватит и пина без подтяжки

pihter ★★★★★
()
Ответ на: комментарий от Harald

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

Как? О чем ты? Технически как выполнить перебор всех возможных квантов времени, а не теоретически?

и в каждой итерации проходимся по твоему алгоритму,

как? проделываешь типа все то же самое что должен делать контроллер? ну типа ЭН тактов ниче не делать. А как ты знаешь что он еще и прерывание никакое за это время отрабатывать не будет?

если прочиталось такое значение,

откуда ты узнаешь какое там прочиталось?

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

при каком еще совпадении? как ты узнаешь что энтропию правильно подобрал?

в общем, в реальном мире, описанное тобой на самом деле настолько сложно, что невозможно: на мой взгляд вы тут хором ерундой страдаете – ответ на вопрос ТС-а – 1 мин и три строчки кода, без единого взмаха паяльником и лишней детали.

pihter ★★★★★
()
Ответ на: комментарий от pihter

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

Morin ★★★★★
()
Ответ на: комментарий от xmikex

Ну так инициализируй начальный сид количеством тиков, значением шума с ножки или временем с жпс.

PPP328 ★★★★★
()

Диоды полупроводниковые/Генераторы шума/2Г401 ©.
Схема ©.

quickquest ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.