Можно ли использовать такие источники для кода сеанса?
На сайте был вопрос про альтернативные источники для создания кода сеанса:
http://www.cyberforum.ru/crypt.....y/thread1678074.html
Вместо использования аппаратного генератора СЧ, наподобие RdRand, предлагается использовать время запуска программы по системному времени UTC, время запуска программы ещё по времени работы ПК (высокоточный таймер), и номер текущего сеанса.
Аппаратный ГСЧ не устроил автора за его не повсеместное распространение и за внешнюю зависимость.
Всё это даёт 24 байта кода сеанса.
Утверждается, что он никогда не совпадёт в пределах того же ПК, если только время не откатится слишком сильно назад (превышающее время запуска ОС), и то вероятность совпадения всё также мала.
Для уникальности в пределах всех ПК было предложено добавить физический адрес сетевых карт, имени компьютера и другое, естественно пропустив это через хеш-функцию.
Нормально ли так делать? Первый вариант предлагает вообще не пропускать ничего через хеш-функцию, раскрывая системное время запуска программы и проработанное компьютером время на момент запуска программы.
комментариев: 13 документов: 4 редакций: 1
Это гарантирует неповторяемость в пределах одного ПК, но что если человек перенесёт свою учётную запись на другой ПК, а там например время отстаёт на 30 минут, и чтобы не нарваться на тоже значение utc и тоже значение высокоточного таймера (хоть это и маловероятно), MAC-адрес исправит ситуацию и не даст совпасть входным параметрам, а поскольку на компьютере несколько сетевых адаптеров, то проще взять сразу несколько, чтобы среди них оказался ликвидный, от физической карточки, а не от например Teredo.
А поскольку одного кода сеанса может не хватить, а постоянно делать запрос времени не лучший вариант, лучше один раз замерить время в момент запуска программы, и дальше делать инкремент счётчика текущего кода сеанса.
Вот всё это и отразил автор.
ID, Key – идентификатор пользователя и его ключ
PhysicalAddress[1...16] – сами MAC-адреса, чтобы обеспечить уникальность в пределах любых ПК
TimeLaunch_UTC – время запуска по UTC, он нужен, потому что высокоточный таймер повторяет свои значения при каждом запуске ПК
TimeLaunch_HighTimer – это нужно чтобы UTC не совпал, если запустить программу больше одного раза в 1 секунду, да и чтобы если время будет корректироваться автосинхронизацией в меньшую сторону, чтобы не дать совпасть, потому что время работы ПК не колеблеться.
NumberSeance – это чтобы не делать каждый раз запрос времени, а получать новые коды простым инкрементом, потому что если мы например сразу захотим получить 10 кодов сеанса, вдруг процессор успеет выдать несколько из них за один такт высокоточного таймера и будет совпадение.
Да, походу дела автор всё учёл до мелочей, мне сначала тоже казалось, что просто понапихано всего и вся.
комментариев: 17 документов: 1 редакций: 2
Как не нарваться на "черный" MAC?
То что мы меняем mac-адреса, этим уже никого не удивишь. Но как можно проверять свежесгенерированный mac, чтобы он не оказался в списке совершенных из-под него тяжких преступлений (CP, fraud, terror e t.c.)? Как уже несколько раз бывало, когда принимали людей, потому что они в Tor использовали IP через который до этого прошел криминал.
комментариев: 1 документов: 0 редакций: 0