Steam Guard Генерация.
Объясните пожалуйста как генерируются коды Steam Guard и почему они зависят от времени( На компьютере время на час опаздывало, а на телефоне было всё нормально и при вводе кода, он не подходил).
< >
Сообщения 18 из 8
Объясните пожалуйста как генерируются коды Steam Guard
простым языком описано тут https://habrahabr.ru/post/154229/ в разделе "Одноразовые пароли"

сам алгоритм можно найти например тут https://ru.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm
Один из способов генерации таких кодов - берем присланный нам в SMS при инициализации код, дополняем его номером устройства (чтобы при простом копировании приложения на другой телефон коды генерировались бы неправильно), добавляем еще некоторое достаточно длинное случайное число (которое при инициализации передается на сервер вместе с номером устройства), дополняем текущими временем и датой по UTC, округленными, скажем, до полуминуты (или любого другого значения). Дополняем счетчиком числа использований кода (чтобы нельзя было один и тот же код использовать дважды. Правда тогда придется на сервере реализовать синхронизацию этих счетчиков). Все дополнения производятся простой конкатенацией строк. Считаем хэш, например при помощи любого алгоритма цифровой подписи. Того же md5. Берем первые несколько цифр полученной контрольной суммы и отправляем их в качестве кода.

Полученный код будет принят сервером, если в нём содержится правильное время по Гринвичу. Или по любому другому поясу. При этом местное время телефон может показывать неправильно, в этом нет ничего страшного, Действительно, допустим Вы пользовались аутентификатором в одном городе, а потом улетели на самолете в другой часовой пояс. В этом новом часовом поясе местное время Ваш телефон будет показывать неправильно (Вы же его не перевели). Но коды по-прежнему будут приниматься. А может быть и прямо обратная ситуация. Допустим, уже после покупки телефона изменился часовой пояс Вашего города. Тогда, чтобы местное время показывалось правильно, Вам придется перевести часы.
И они начнут показывать правильное время в вашем городе. Но когда аутентификатор попытается перевести местное время во время по UTC, полученный результат окажется неправильным и сгенерированные коды будут ошибочными.
Автор сообщения: vadim
Один из способов генерации таких кодов - берем присланный нам в SMS при инициализации код, дополняем его номером устройства (чтобы при простом копировании приложения на другой телефон коды генерировались бы неправильно), добавляем еще некоторое достаточно длинное случайное число (которое при инициализации передается на сервер вместе с номером устройства), дополняем текущими временем и датой по UTC, округленными, скажем, до полуминуты (или любого другого значения). Дополняем счетчиком числа использований кода (чтобы нельзя было один и тот же код использовать дважды. Правда тогда придется на сервере реализовать синхронизацию этих счетчиков). Все дополнения производятся простой конкатенацией строк. Считаем хэш, например при помощи любого алгоритма цифровой подписи. Того же md5. Берем первые несколько цифр полученной контрольной суммы и отправляем их в качестве кода.

Полученный код будет принят сервером, если в нём содержится правильное время по Гринвичу. Или по любому другому поясу. При этом местное время телефон может показывать неправильно, в этом нет ничего страшного, Действительно, допустим Вы пользовались аутентификатором в одном городе, а потом улетели на самолете в другой часовой пояс. В этом новом часовом поясе местное время Ваш телефон будет показывать неправильно (Вы же его не перевели). Но коды по-прежнему будут приниматься. А может быть и прямо обратная ситуация. Допустим, уже после покупки телефона изменился часовой пояс Вашего города. Тогда, чтобы местное время показывалось правильно, Вам придется перевести часы.
И они начнут показывать правильное время в вашем городе. Но когда аутентификатор попытается перевести местное время во время по UTC, полученный результат окажется неправильным и сгенерированные коды будут ошибочными.
Как всё сложно)
Автор сообщения: Moderate
Как всё сложно)
Это еще достаточно упрощенное описание. В нем специально (для простоты) пропущены некоторые аспекты касающиеся, например, синхронизации сгенерированных приложением и сервером кодом. В действительности, например, типичная реализация TOTP протокола не производит никакого "округления времени до полминуты", а посылает новый код каждую секунду. При этом отправленный код обычно не совпадает с генерированным на сервере кодом. И чтобы проверить валидность кода его сравнивают не только с текущим, но и, скажем, с 30 предыдущими (если срок действия кода 30 секунд).
Всё вышеописанное может звучать несложно, но ведь каждый код еще надо проверить на возможную рассинхронизацию счетчика числа попыток использования кода... И т.д.
Помогиете не генерируются коды стим на мобильном аутентификатоое
Ни чего не показывает
Автор сообщения: csgo-happy.ru
Ни чего не показывает
Время правильное поставь на телефоне – использовать время сети.
Автор сообщения: csgo-happy.ru
Ни чего не показывает
Попробуйте очистить кэш в настройках приложения, если у Вас устройство на Android.
< >
Сообщения 18 из 8
Показывать на странице: 1530 50

Дата создания: 4 апр. 2016 г. в 0:59
Сообщений: 8