Функции-"источники энтропии" для качественного рандома? + пример
Posted: Thu Jul 05, 2018 3:28 pm
Источник энтропии - Wikipedia
Посмотрел cписок системных функций Kolibri (пролистните в низ страницы) и пока выбрал 5 функций:
[*][/b] SysFn18.20 : SF_SYSTEM (18) / SSF_GET_RAM_INFO (20) - информация об оперативной памяти
[*][/b] SysFn18.4 : SF_SYSTEM (18) / SSF_GET_IDLE_COUNT (4) - счётчик пустых тактов в секунду
[*][/b] SysFn37.0 : SF_MOUSE_GET (37) / SSF_SCREEN_POSITION (0) - экранные координаты мыши
[*][/b] SysFn26.10 : SF_SYSTEM_GET (26) / SSF_TIME_COUNT_PRO (10) - высокоточный счётчик времени
[*][/b] SysFn68.0 : SF_SYS_MISC (68) / SSF_GET_TASK_SWITCH_COUNT (0) - счётчик переключений задач
Знаете ли вы ещё такие функции которые могут пригодиться в качестве источников энтропии?
Пример извлечения энтропии из этих пяти функций:
Code example of extracting the entropy from these 5 functions:
Посмотрел cписок системных функций Kolibri (пролистните в низ страницы) и пока выбрал 5 функций:
[*][/b] SysFn18.20 : SF_SYSTEM (18) / SSF_GET_RAM_INFO (20) - информация об оперативной памяти
[*][/b] SysFn18.4 : SF_SYSTEM (18) / SSF_GET_IDLE_COUNT (4) - счётчик пустых тактов в секунду
[*][/b] SysFn37.0 : SF_MOUSE_GET (37) / SSF_SCREEN_POSITION (0) - экранные координаты мыши
[*][/b] SysFn26.10 : SF_SYSTEM_GET (26) / SSF_TIME_COUNT_PRO (10) - высокоточный счётчик времени
[*][/b] SysFn68.0 : SF_SYS_MISC (68) / SSF_GET_TASK_SWITCH_COUNT (0) - счётчик переключений задач
Знаете ли вы ещё такие функции которые могут пригодиться в качестве источников энтропии?
Пример извлечения энтропии из этих пяти функций:
Code example of extracting the entropy from these 5 functions:
Spoiler:
Code: Select all
ENTROPY_SIZE = 56
entropy db ENTROPY_SIZE dup(255), 0
Code: Select all
; 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