Re[9]: Датчик случайных чисел в С++
От: CreatorCray  
Дата: 30.01.08 14:27
Оценка:
Здравствуйте, lifrsdn, Вы писали:

L>CryptGenRandom требует HCRYPTPROV. Чтобы её вызвать нужно всё равно загрузить CryptoAPI получается.

CryptGenRandom использует ADVAPI32!RtlGenRandom для генерации. Т.е. можно пользоваться тем же генератором случайных чисел, но без криптопровайдера
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: Датчик случайных чисел в С++
От: lifrsdn  
Дата: 30.01.08 14:35
Оценка:
Здравствуйте, CreatorCray, Вы писали:

L>>CryptGenRandom требует HCRYPTPROV. Чтобы её вызвать нужно всё равно загрузить CryptoAPI получается.

CC>CryptGenRandom использует ADVAPI32!RtlGenRandom для генерации. Т.е. можно пользоваться тем же генератором случайных чисел, но без криптопровайдера

Рядом написал, что можно и с провайдером, для получения самого провайдера crypt32 не нужна.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Датчик случайных чисел в С++
От: gear nuke  
Дата: 04.02.08 05:09
Оценка:
Здравствуйте, Nazik, Вы писали:

N>Я склонен думать, что эту функцию назвали Secure не из-за её параметров, а из-за того, что она использует системный датчик случайных чисел, а не самописный (который используется в rand и оставляет желать лучшего).


Именно так. Все известный случаи фаторизации RSA1024 были сдаланы из-за слабости библиотечных rand.

N>Т.е. под Secure имеется в виду то, что её можно использовать при решении криптографических задач.


Возможно, но это всё равно чёрныё ящик.

Лучше взять например быстрый и надёжный rrand от Marcos el Ruptor.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[4]: Датчик случайных чисел в С++
От: Mr.Cat  
Дата: 04.02.08 06:55
Оценка:
Здравствуйте, gear nuke, Вы писали:
GN>Возможно, но это всё равно чёрныё ящик.

Скорее серый. Не помню точно где, где-то был указан алгоритм, по которому работает RtlGenRandom. Хотя код, к сожалению, можно только ассемблерный выдрать...
Re[3]: Датчик случайных чисел в С++
От: Programador  
Дата: 04.02.08 07:41
Оценка:
Здравствуйте, Nazik, Вы писали:

N>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Здравствуйте, LaptevVV, Вы писали:


LVV>>>rand_s()


PD>>Жуткая функция!


PD>>Кошмар!


N>Я склонен думать, что эту функцию назвали Secure не из-за её параметров, а из-за того, что она использует системный датчик случайных чисел, а не самописный (который используется в rand и оставляет желать лучшего). Т.е. под Secure имеется в виду то, что её можно использовать при решении криптографических задач.

есть слова случайный и псевдослучайный. только случаййный для криптографии. Источники — таймер, мышь, экран и чегото там внутри виндовс. Насчет качества rand — используется rand =rand *а+б. они конечно случайные, но нужен то диапазон не 2^16 ? 2^32 а свой, поэтому берется операция / и % , а тут уже как будет с кореляцией последовательных значений.

Я поэтому использую рол

unsigned rnd_xor,rng_seed;
unsigned long RNG52()
{  static unsigned short d[2]={19891,21243},s[2]; 
    ffff:
   (unsigned long&)s[0]=(unsigned long&)d[0];
   d[0]=s[0]*20050+s[1]*1423;
   d[1]=s[0]*58819+s[1]*41062;
   __asm ror dword ptr d,11

  // *214013 +2531011 2^32
  // *17405 +10395331
  // *214013 +13737667 
  // *69069 +1 

   rng_seed=214013u*rng_seed+2531011u;
   unsigned r=(rng_seed^(unsigned long&)d[0]); // +rnd_xor 
   if(r>=unsigned(0xFFFFffffu/52u*52u))
       goto ffff;
   return r/(0xFFFFffffu/52u);
}

самописный для диапазона 0-52 Период 2^32 *(2^32 — )

int rand416()
{  LARGE_INTEGER li;   QueryPerformanceCounter(&li);
   return (int(rand()/double(RAND_MAX)*416)+int(li.QuadPart%416))%416;
}

рандомизация таймером. Все это для Вин32
Re[5]: Датчик случайных чисел в С++
От: CreatorCray  
Дата: 04.02.08 08:03
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, gear nuke, Вы писали:

GN>>Возможно, но это всё равно чёрныё ящик.

MC>Скорее серый. Не помню точно где, где-то был указан алгоритм, по которому работает RtlGenRandom. Хотя код, к сожалению, можно только ассемблерный выдрать...

Есть еще из исходников win 2000 сурс на С
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Датчик случайных чисел в С++
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 04.02.08 09:39
Оценка:
Здравствуйте, Programador, Вы писали:

P>есть слова случайный и псевдослучайный. только случаййный для криптографии. Источники — таймер, мышь, экран и чегото там внутри виндовс. Насчет качества rand — используется rand =rand *а+б. они конечно случайные, но нужен то диапазон не 2^16 ? 2^32 а свой, поэтому берется операция / и % , а тут уже :xz: как будет с кореляцией последовательных значений.


Уже достаточно давно есть Yarrow генератор (и его улучшение — не помню название), который на основании правильно подготовленной энтропии делает псевдослучайные данные, пригодные для практически любой современной криптографии (может быть, кроме военных и особо секретных назначений). Реализация которая у меня под рукой — 1700 строк, 50K кода (не знаю, сколько из них ушло на сугубо внутриядерные примочки). Для настольной или серверной системы это копейки, а пользы — вагон.
The God is real, unless declared integer.
Re[4]: Датчик случайных чисел в С++
От: CreatorCray  
Дата: 04.02.08 11:52
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Лучше взять например быстрый и надёжный rrand от Marcos el Ruptor.

Надежность вообще то доказывать надо. По тестам — равномерность распределения хорошая. А вот касательно надежности с точки зрения предсказуемости — это уже автору бы озаботиться об анализе своего детища, все таки Sean O'Neil (АКА Marcos el Ruptor) — криптоаналитик...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Датчик случайных чисел в С++
От: gear nuke  
Дата: 04.02.08 15:13
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Надежность вообще то доказывать надо.


Ну, чего не знаю, того не знаю.. Доказана ли надёжность того же RSA? Лично для меня авторитет автора сомнений не вызывает: когда я делал white box AES, анализ закончился на том, что у заказчика на Ruptor'а денег не хватило Потому, кстати, в апреле сорцы генератора помещу в public domain.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[6]: Датчик случайных чисел в С++
От: CreatorCray  
Дата: 05.02.08 08:10
Оценка:
Здравствуйте, gear nuke, Вы писали:

CC>>Надежность вообще то доказывать надо.

GN>Ну, чего не знаю, того не знаю.. Доказана ли надёжность того же RSA?
И давно RSA — генератор случайных чисел?

GN> Лично для меня авторитет автора сомнений не вызывает: когда я делал white box AES, анализ закончился на том, что у заказчика на Ruptor'а денег не хватило

Интересный критерий оценки авторитета, однако

То, что Sean хорошо разбирается в теме сомнений не вызывает. Сомнения вызывают достаточно спорные заявления, приводимые без доказательств. Кроме того, его теория "заговора" в криптосообществе у меня например вызывает подозрения в его адекватности.

GN> Потому, кстати, в апреле сорцы генератора помещу в public domain.

+1
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.