Board.KolibriOS.org
http://board.kolibrios.org/

Функции-"источники энтропии" для качественного рандома? + пример
http://board.kolibrios.org/viewtopic.php?f=2&t=3735
Страница 1 из 1

Автор:  floppy121 [ Чт июл 05, 2018 3:28 pm ]
Заголовок сообщения:  Функции-"источники энтропии" для качественного рандома? + пример

Источник энтропии - Wikipedia

Посмотрел cписок системных функций Kolibri (пролистните в низ страницы) и пока выбрал 5 функций:

[*] SysFn18.20 : SF_SYSTEM (18) / SSF_GET_RAM_INFO (20) - информация об оперативной памяти
[*] SysFn18.4 : SF_SYSTEM (18) / SSF_GET_IDLE_COUNT (4) - счётчик пустых тактов в секунду
[*] SysFn37.0 : SF_MOUSE_GET (37) / SSF_SCREEN_POSITION (0) - экранные координаты мыши
[*] SysFn26.10 : SF_SYSTEM_GET (26) / SSF_TIME_COUNT_PRO (10) - высокоточный счётчик времени
[*] SysFn68.0 : SF_SYS_MISC (68) / SSF_GET_TASK_SWITCH_COUNT (0) - счётчик переключений задач

Знаете ли вы ещё такие функции которые могут пригодиться в качестве источников энтропии?

Пример извлечения энтропии из этих пяти функций:
Code example of extracting the entropy from these 5 functions:
Спойлер: Показать
Код:
ENTROPY_SIZE = 56
entropy        db ENTROPY_SIZE dup(255), 0
Код:

; Get entropy for PRNG from the various sources...

get_entropy:

    pusha

    mcall 18, 20, entropy ; SysFn18.20 : SF_SYSTEM (18) / SSF_GET_RAM_INFO (20)
    mcall 18, 4           ; SysFn18.4  : SF_SYSTEM (18) / SSF_GET_IDLE_COUNT (4)
    mov dword[entropy+36], eax
    mcall 37, 0           ; SysFn37.0  : SF_MOUSE_GET (37) / SSF_SCREEN_POSITION (0)
    mov dword[entropy+40], eax
    mcall 26, 10          ; SysFn26.10 : SF_SYSTEM_GET (26) / SSF_TIME_COUNT_PRO (10)
    mov dword[entropy+44], edx
    mov dword[entropy+48], eax
    mcall 68, 0           ; SysFn68.0  : SF_SYS_MISC (68) / SSF_GET_TASK_SWITCH_COUNT (0)
    mov dword[entropy+52], eax

    popa

    ret

Автор:  0CodErr [ Чт июл 05, 2018 4:03 pm ]
Заголовок сообщения:  Re: Функции-"источники энтропии" для качественного рандома? + пример

Как уже писал вон там viewtopic.php?f=2&t=3729#p70839 можно использовать инструкцию rdtsc.

Автор:  floppy121 [ Чт июл 05, 2018 4:10 pm ]
Заголовок сообщения:  Re: Функции-"источники энтропии" для качественного рандома? + пример

0CodErr писал(а):
Как уже писал вон там http://board.kolibrios.org/viewtopic.ph ... 729#p70839 можно использовать инструкцию rdtsc.
Если я правильно понимаю, rdtsc эквивалентно SysFn26.10 . Может быть и одной этой функции более чем достаточно, но хочется собрать как можно больше источников энтропии

Автор:  0CodErr [ Чт июл 05, 2018 4:37 pm ]
Заголовок сообщения:  Re: Функции-"источники энтропии" для качественного рандома? + пример

floppy121 писал(а):
rdtsc эквивалентно SysFn26.10
У меня в VirtualBox значения старших слов сильно не совпадают(хотя они явно как-то связаны, отличаются примерно в 3 раза).
Вот такой код:
Код:
..................................
szFormat       db "%u",10,0
..................................
        rdtsc       
        push   edx
        push   szFormat
        call   [con_printf]
        add    esp, 8

        mov    eax, 26
        mov    ebx, 10
        int    64
        push   edx
        push   szFormat
        call   [con_printf]
        add    esp, 8       
..................................
floppy121 писал(а):
Может быть и одной этой функции более чем достаточно,
А зачем делать системный вызов, если можно его не делать? В качестве энтропии вполне подошёл бы результат rdtsc.

Автор:  0CodErr [ Чт июл 05, 2018 6:26 pm ]
Заголовок сообщения:  Re: Функции-"источники энтропии" для качественного рандома? + пример

floppy121 писал(а):
Если я правильно понимаю, rdtsc эквивалентно SysFn26.10
Всё же нет, не эквивалентно.
Вот функция в ядре KolibriOS, возвращающая наносекунды http://websvn.kolibrios.org/filedetails ... 6#line-443
А инструкция rdtsc возвращает 64-bit time-stamp counter, вот из мануалов AMD и Intel(про наносекунды ни слова):
Спойлер: Показать
Вложение:
amd.PNG
amd.PNG [ 97.14 КБ | 1087 просмотров ]
Вложение:
intel.PNG
intel.PNG [ 83.02 КБ | 1087 просмотров ]

Автор:  floppy121 [ Чт июл 05, 2018 6:38 pm ]
Заголовок сообщения:  Re: Функции-"источники энтропии" для качественного рандома? + пример

0CodErr писал(а):
Всё же нет, не эквивалентно
Большое спасибо за информацию, возможно добавлю rdtsc в качестве 6 источника энтропии:
ведь много энтропии не бывает, чем её больше тем трава зеленее и рандом рандомнее :P

Автор:  0CodErr [ Вс июл 15, 2018 6:55 pm ]
Заголовок сообщения:  Re: Функции-"источники энтропии" для качественного рандома? + пример

А почему бы SysFn3:GetSystemTime и SysFn29:GetSystemDate не использовать?
Или по каким-то причинам не подходит?
При наличии сети, думаю, можно использовать ещё SysFn74.6:GetSentPackets и SysFn74.7:GetReceivedPackets.

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/