id: Гость   вход   регистрация
текущее время 01:55 18/11/2017
Автор темы: alexor1234, тема открыта 14/03/2016 22:11 Печать
Категории: криптография
https://www.pgpru.com/Форум/Криптография/МожноЛиИспользоватьТакиеИсточникиДляКодаСеанса
создать
просмотр
ссылки

Можно ли использовать такие источники для кода сеанса?


На сайте был вопрос про альтернативные источники для создания кода сеанса:
http://www.cyberforum.ru/crypt.....y/thread1678074.html


Вместо использования аппаратного генератора СЧ, наподобие RdRand, предлагается использовать время запуска программы по системному времени UTC, время запуска программы ещё по времени работы ПК (высокоточный таймер), и номер текущего сеанса.


Аппаратный ГСЧ не устроил автора за его не повсеместное распространение и за внешнюю зависимость.


Всё это даёт 24 байта кода сеанса.


Утверждается, что он никогда не совпадёт в пределах того же ПК, если только время не откатится слишком сильно назад (превышающее время запуска ОС), и то вероятность совпадения всё также мала.


Для уникальности в пределах всех ПК было предложено добавить физический адрес сетевых карт, имени компьютера и другое, естественно пропустив это через хеш-функцию.


Нормально ли так делать? Первый вариант предлагает вообще не пропускать ничего через хеш-функцию, раскрывая системное время запуска программы и проработанное компьютером время на момент запуска программы.


 
На страницу: 1, 2 След.
Комментарии
— alexor1234 (21/03/2016 15:04, исправлен 21/03/2016 15:13)   профиль/связь   <#>
комментариев: 13   документов: 4   редакций: 1
Тогда вообще непонятно, зачем этот велосипед с 7 колёсами и седлом, торчащим из руля. Автор может использовать один монотонный счётчик (нормальная подстраховка — дополнить счётчик системным таймером, но ничего сверх этого не нужно). Учитывая, что в схеме есть некий секретный ключ, это уже гарантирует неповторяемость между экземплярами приложения.

Это гарантирует неповторяемость в пределах одного ПК, но что если человек перенесёт свою учётную запись на другой ПК, а там например время отстаёт на 30 минут, и чтобы не нарваться на тоже значение utc и тоже значение высокоточного таймера (хоть это и маловероятно), MAC-адрес исправит ситуацию и не даст совпасть входным параметрам, а поскольку на компьютере несколько сетевых адаптеров, то проще взять сразу несколько, чтобы среди них оказался ликвидный, от физической карточки, а не от например Teredo.


А поскольку одного кода сеанса может не хватить, а постоянно делать запрос времени не лучший вариант, лучше один раз замерить время в момент запуска программы, и дальше делать инкремент счётчика текущего кода сеанса.


Вот всё это и отразил автор.


Код сеанса равен как SHA-3-512(ID & Key & 1 & PhysicalAddress[1] & ... & PhysicalAddress[16] & TimeLaunch_UTC & TimeLaunch_HighTimer & NumberSeance).

ID, Key – идентификатор пользователя и его ключ


PhysicalAddress[1...16] – сами MAC-адреса, чтобы обеспечить уникальность в пределах любых ПК


TimeLaunch_UTC – время запуска по UTC, он нужен, потому что высокоточный таймер повторяет свои значения при каждом запуске ПК


TimeLaunch_HighTimer – это нужно чтобы UTC не совпал, если запустить программу больше одного раза в 1 секунду, да и чтобы если время будет корректироваться автосинхронизацией в меньшую сторону, чтобы не дать совпасть, потому что время работы ПК не колеблеться.


NumberSeance – это чтобы не делать каждый раз запрос времени, а получать новые коды простым инкрементом, потому что если мы например сразу захотим получить 10 кодов сеанса, вдруг процессор успеет выдать несколько из них за один такт высокоточного таймера и будет совпадение.


Да, походу дела автор всё учёл до мелочей, мне сначала тоже казалось, что просто понапихано всего и вся.

На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3