Comments 14
Все никак не соберусь написать статью о fortuna ) Вот там ГПСЧ так ГПСЧ
Сам генератор там вроде несложный. Похож на CTR, только вместо блочного шифра, хэш функции используются. А вот функции сбора и хранения энтропии это да. Тема для отдельного топика.
А вообще соберись уже) Очень интересно про него будет подробности почитать.
А вообще соберись уже) Очень интересно про него будет подробности почитать.
Там вообще два вида генератора, один основной с очень красивой самокоррекцией на случай подставы, и кучка второстепенных, которые держат энтропию до поры до времени. Единственный минус — надо постоянно его подкармливать, но это не страшно. Можно и счетчиком тикать.
А статью написать то несложно, просто у меня в голове очень давно крутится один большой проект, который либо я буду делать сам, либо опишу его идею в виде цикла статеек (в т.ч. и про фортуну) и заброшу. Так что я пока в терзаниях )
А статью написать то несложно, просто у меня в голове очень давно крутится один большой проект, который либо я буду делать сам, либо опишу его идею в виде цикла статеек (в т.ч. и про фортуну) и заброшу. Так что я пока в терзаниях )
Я не в теме, а что за Fortuna?
В последнем варианте вы возвращаете только один бит результата (ну или несколько). Разве, если делать то же самое для Мерсенна и сдвигового регистра, это не увеличит криптостойкость?
Надо ещё добавить, что есть и другие стойкие и не очень генераторы ПСП.
Интересно, кстати, а если на выход того же регистра сдвига добавить хэш — функцию (т.е. накапливать например 160 бит информации и брать SHA1 от этого) это сильно увеличит его криптостойкость? По скорости это наверно получится как CTR.
Интересно, кстати, а если на выход того же регистра сдвига добавить хэш — функцию (т.е. накапливать например 160 бит информации и брать SHA1 от этого) это сильно увеличит его криптостойкость? По скорости это наверно получится как CTR.
По идеи, при добавлении хэш-функции к тому же самому Вихрю Мерсенна получится криптостойкий ГПСЧ. Скорость думаю будет повыше чем у блочного шифра, все таки хэш функции гораздо быстрее.
Просто для меня такое решение имеет один минус. Возможно, это весьма субъективно, но все же. Используя сразу два инструмента: ГПСЧ и хэш-функцию мы усложняем всю схему. Соответственно больше шансов на ошибку, меньше шансов учесть все возможные угрозы. Поэтому я как то в этом плане консервативен, чем проще тем лучше. Для меня BBS вообще идеальный генератор, с которым никакая fortuna не сравнится:)
Просто для меня такое решение имеет один минус. Возможно, это весьма субъективно, но все же. Используя сразу два инструмента: ГПСЧ и хэш-функцию мы усложняем всю схему. Соответственно больше шансов на ошибку, меньше шансов учесть все возможные угрозы. Поэтому я как то в этом плане консервативен, чем проще тем лучше. Для меня BBS вообще идеальный генератор, с которым никакая fortuna не сравнится:)
Как я уже отмечал выше, если атакующий имеет 624 числа сгенерированных с помощью Вихря Мерсенна этого достаточно для того чтобы восстановить все внутреннее состояние и предугадывать с вероятностью 100% все генерируемые в последующем числа.
А что если каждые 600 выборок в таком случае менять seed на случайный другой? Тоже своего рода каскад сделать. Разве не поможет?
Да, это хороший вариант если у вас нет необходимости генерировать большие последовательности, как в случаях с поточными шифрами например.
Ну дак это не важно. Что-то вроде
длина последовательности будет влиять только на то, сколько раз будет пересоздаваться внутренний обычный mercen.
class CryptoMercenVortex
{
private const int MaxCalls = 600;
private Random _rand = new Random();
private int _calls = 0;
private MT19937 _mercen = new MT19937();
public int Next()
{
if (_calls++ > MaxCalls )
{
_mercen = new MT19937(_rand.Next());
_calls = 0;
}
return _mercen.Next();
}
}
длина последовательности будет влиять только на то, сколько раз будет пересоздаваться внутренний обычный mercen.
Sign up to leave a comment.
В поисках криптостойкого ГПСЧ