Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Apr 24, 2019 9:18 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 7 posts ] 
Author Message
PostPosted: Thu Jul 05, 2018 3:28 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 129
Источник энтропии - 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:
Spoiler: Show
Code:
ENTROPY_SIZE = 56
entropy        db ENTROPY_SIZE dup(255), 0
Code:

; 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.

Top
   
PostPosted: Thu Jul 05, 2018 4:03 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Как уже писал вон там viewtopic.php?f=2&t=3729#p70839 можно использовать инструкцию rdtsc.


Top
   
PostPosted: Thu Jul 05, 2018 4:10 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 129
0CodErr wrote:
Как уже писал вон там http://board.kolibrios.org/viewtopic.ph ... 729#p70839 можно использовать инструкцию rdtsc.
Если я правильно понимаю, rdtsc эквивалентно SysFn26.10 . Может быть и одной этой функции более чем достаточно, но хочется собрать как можно больше источников энтропии


Top
   
PostPosted: Thu Jul 05, 2018 4:37 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
floppy121 wrote:
rdtsc эквивалентно SysFn26.10
У меня в VirtualBox значения старших слов сильно не совпадают(хотя они явно как-то связаны, отличаются примерно в 3 раза).
Вот такой код:
Code:
..................................
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.


Top
   
PostPosted: Thu Jul 05, 2018 6:26 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
floppy121 wrote:
Если я правильно понимаю, rdtsc эквивалентно SysFn26.10
Всё же нет, не эквивалентно.
Вот функция в ядре KolibriOS, возвращающая наносекунды http://websvn.kolibrios.org/filedetails ... 6#line-443
А инструкция rdtsc возвращает 64-bit time-stamp counter, вот из мануалов AMD и Intel(про наносекунды ни слова):
Spoiler: Show
Attachment:
amd.PNG
amd.PNG [ 97.14 KiB | Viewed 1725 times ]
Attachment:
intel.PNG
intel.PNG [ 83.02 KiB | Viewed 1725 times ]


Top
   
PostPosted: Thu Jul 05, 2018 6:38 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 129
0CodErr wrote:
Всё же нет, не эквивалентно
Большое спасибо за информацию, возможно добавлю rdtsc в качестве 6 источника энтропии:
ведь много энтропии не бывает, чем её больше тем трава зеленее и рандом рандомнее :P


Top
   
PostPosted: Sun Jul 15, 2018 6:55 pm 
Offline

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 7 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited