В предыдущем своем топике «Пароли — это прошлый век, в дальнейшем требуются новые методы авторизации и хранения личных данных» я рассказывал существующие проблемы использования паролей в сети и методы построения авторизации с использованием электронных цифровых паспортов. В данной топике я хочу привести подробную схему авторизации в интернете с использованием ЭЦП, обеспечивающий высокий уровень безопасности от мошенников и кибер преступников.
Приводимая здесь схема будет также рассматриваться в рамках модели авторизации с использованием единого центра авторизации для любых интернет ресурсов, подробно описанных в предыдущей статье. Поэтому для лучшего понимания процесса приведу небольшую цитату из прошлой статьи:
С точки зрения безопасности лучшую защиту на сегодняшний день могут предоставить использование USB-токенов, защищенных пин кодом из 3-х попыток и (опционально) встроенным сканером отпечатков. В процессе авторизации можно использовать передачу на единый центр авторизации цифровую копию биометрического отпечатка, подписанного персональной цифровой подписью (криптографического преобразования закрытым ключом). При этом каким либо образом вытащить из USB-токена цифровую копию биометрического отпечатка и используемые ключи не возможно, а расшифровать передаваемые данные может только тот, кто имеет вторую пару открытого ключа. Для защиты от перехвата при каждой авторизации передаваемые данные должны быть уникальными, например при каждой авторизации вместе с копией биометрического отпечатка зашифровывать также случайную строку и значение счетчика успешных авторизаций. Еще лучше, если заранее созданы и сохранены персональные наборы открытых и закрытых ключей на каждый день в течении всего срока использования ключа (например, в течении 10-20 лет) а токен при авторизации сверяет дату со своими серверами и подписывает данные необходимым ключом на текущую дату. При этом открытые ключи также должны быть надежно защищены и находится только на сервере авторизации (например, во внутреннем сервере единого центра авторизации проверяющего достоверность полученных данных, но не имеющего прямого выхода к сети интернет).
Каждый USB-токен должен иметь свой уникальный номер. А при генерации пары открытых/закрытых ключей номер USB-токена должна быть сохранена в связке с этими ключами.
Итак, рассмотрим как должен происходить процесс авторизации:
1) Пользователь шифрует цифровую копию биометрического отпечатка + счетчик авторизации + случайную строку своим USB-токеном. К полученным данным в открытом виде добавляется уникальный номер USB-токена и направляется на сайт где необходимо авторизоваться.
2) Сайт получает сообщение пользователя и повторно шифрует его сообщение + случайную строку своим токеном. К полученным данным в открытом виде добавляется уникальный номер токена и направляется в единый центр авторизации через защищенное SSL соединение.
3) Сервер центра авторизации в два этапа расшифровывает полученное сообщение используя открытый ключ сайта и открытый ключ пользователя. Каким ключом расшифровывать полученное сообщение сервер узнает от приложенного к сообщению уникального номера USB-токена. Если в итоге двух этапной расшифровки сервер получает правильную цифровую копию биометрического отпечатка пользователя, то оба участника авторизации подлинные.
4) Свой положительный или отрицательный вердикт + случайную строку сервер авторизации шифрует открытым ключом сайта и направляет обратно ответным сообщением через защищенное SSL соединение.
5) Сайт расшифровывает полученное сообщение своим токеном и получает положительное или отрицательную команду на авторизацию.
Преимущества:
1) Открытую и закрытую пару ключей можно менять сколько угодно, хоть каждый день — если токен умеет по дате использовать разные ключи.
2) Перехват трафика не имеет смысла, если при каждой авторизации вместе с конфиденциальными данными шифруется случайная строка.
3) Попытка переадресовать процесс авторизации на фальшивый сервер то же ничего не даст, если открытая пара ключей только у производителя и надежно защищена.
4) По сути защищенное SSL соединение в данном случае не столь важно. Но его использование еще больше увеличивает степень безопасности.
5) Никакие уязвимости применяемых скриптов авторизации на сайтах не могут скомпрометировать процесс авторизации.
Недостатки:
1) Разрядность ключей должна быть по возможности не большим, чтобы не сильно загружать сервера в процессе авторизации.
2) Токены, используемые на сайтах с должны обеспечивать высокую производительность. Особенно если у сайтов высокий уровень посещаемости, то вместо использования USB-токенов нужно предусмотреть высокопроизводительные платы расширения или надежные программные токены (для сайтов расположенных на виртуальных серверах).
3) Центры авторизации должны быть построены из высокопроизводительных кластеров, «непотопляемых» к DDoS атакам.
Автор: bull1251