Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб ноя 17, 2018 11:21 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 7 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Чт июл 05, 2018 3:28 pm 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
Источник энтропии - 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


Последний раз редактировалось floppy121 Пт июл 13, 2018 6:19 pm, всего редактировалось 4 раза.

Вернуться к началу
СообщениеДобавлено: Чт июл 05, 2018 4:03 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Как уже писал вон там viewtopic.php?f=2&t=3729#p70839 можно использовать инструкцию rdtsc.


Вернуться к началу
СообщениеДобавлено: Чт июл 05, 2018 4:10 pm 
Не в сети

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


Вернуться к началу
СообщениеДобавлено: Чт июл 05, 2018 4:37 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
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.


Вернуться к началу
СообщениеДобавлено: Чт июл 05, 2018 6:26 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
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 КБ | 1176 просмотров ]
Вложение:
intel.PNG
intel.PNG [ 83.02 КБ | 1176 просмотров ]


Вернуться к началу
СообщениеДобавлено: Чт июл 05, 2018 6:38 pm 
Не в сети

Зарегистрирован: Пн дек 05, 2016 11:04 am
Сообщения: 117
0CodErr писал(а):
Всё же нет, не эквивалентно
Большое спасибо за информацию, возможно добавлю rdtsc в качестве 6 источника энтропии:
ведь много энтропии не бывает, чем её больше тем трава зеленее и рандом рандомнее :P


Вернуться к началу
СообщениеДобавлено: Вс июл 15, 2018 6:55 pm 
Не в сети

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 7 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB