Applications development, KoOS API questions
-
-
- Posts 192
- Joined: Mon Dec 05, 2016 11:04 am
Источник энтропии - 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:
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
Last edited by
floppy121 on Fri Jul 13, 2018 6:19 pm, edited 4 times in total.
-
- Posts 1498
- Joined: Sun Oct 30, 2011 6:43 pm
-
- Posts 192
- Joined: Mon Dec 05, 2016 11:04 am
Если я правильно понимаю,
rdtsc эквивалентно
SysFn26.10 . Может быть и одной этой функции более чем достаточно, но хочется собрать как можно больше источников энтропии
-
- Posts 1498
- Joined: Sun Oct 30, 2011 6:43 pm
floppy121 wrote:rdtsc эквивалентно SysFn26.10
У меня в
VirtualBox значения старших слов сильно не совпадают(хотя они явно как-то связаны, отличаются примерно в 3 раза).
Вот такой код:
Code: Select all
..................................
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 wrote:Может быть и одной этой функции более чем достаточно,
А зачем делать системный вызов, если можно его не делать? В качестве энтропии вполне подошёл бы результат
rdtsc.
-
- Posts 1498
- Joined: Sun Oct 30, 2011 6:43 pm
floppy121 wrote:Если я правильно понимаю, rdtsc эквивалентно SysFn26.10
Всё же нет, не эквивалентно.
Вот функция в ядре
KolibriOS, возвращающая наносекунды
http://websvn.kolibrios.org/filedetails ... 6#line-443
А инструкция
rdtsc возвращает
64-bit time-stamp counter, вот из мануалов
AMD и
Intel(про наносекунды ни слова):
Spoiler:
-
amd.PNG (97.14 KiB)
Viewed 8606 times
-
intel.PNG (83.02 KiB)
Viewed 8606 times
-
- Posts 192
- Joined: Mon Dec 05, 2016 11:04 am
0CodErr wrote:Всё же нет, не эквивалентно
Большое спасибо за информацию, возможно добавлю
rdtsc в качестве 6 источника энтропии:
ведь много энтропии не бывает, чем её больше тем трава зеленее и рандом рандомнее
-
- Posts 1498
- Joined: Sun Oct 30, 2011 6:43 pm
А почему бы SysFn3:GetSystemTime и SysFn29:GetSystemDate не использовать?
Или по каким-то причинам не подходит?
При наличии сети, думаю, можно использовать ещё SysFn74.6:GetSentPackets и SysFn74.7:GetReceivedPackets.
Users browsing this forum: No registered users and 2 guests