Пост навеян недавней темой про токены, в комментариях к которой царила некоторая неразбериха. Я сделал вывод, что многие не до конца понимают или даже вообще не понимают, что такое токен, с чем его едят и чем токен не является. Желание расставить все точки над i привело к написанию нижеследующего текста. Далее речь пойдет именно о USB-токенах, которые можно подключать к компьютеру, давать команды и получать результаты их выполнения. Приступим.
Аспекты хранения информации на токенах
Сразу хочется пояснить, что токен – это не флэшка. Конечно, он может хранить некоторое количество информации, но весьма ограниченное, например, 64 Кб. Существуют токены, которые содержат в себе флэш-память на несколько Гб. Однако данные хранятся в этой флэш-памяти при помощи той же самой технологии, что и на обычной флэшке. Поэтому функцию хранения больших объемов данных можно расценивать как второстепенную или побочную.
Можно сказать, что первоначальная функция токенов – это не извлекаемое хранение ключевой информации. Очевидно, с флэшкой общего мало. Что значит «не извлекаемое»? Это значит, что ключ из токена никогда не попадает никуда извне, например, в оперативную память компьютера. Данную строгую политику можно ослабить до того, что разрешается экспорт ключа из токена в оперативную память только в зашифрованном виде. Также существует опция экспорта ключа в открытом виде. Но даже при выборе владельца токена использовать только эту опцию, уровень безопасности все равно выше, чем хранение ключа на обычной флэшке. Выше он потому, что для экспорта ключа требуется знание PIN-кода, а для копирования ключа с флэшки PIN-код не требуется. Многие скажут: так можно же хранить ключ на флэшке и шифровать его паролем при помощи, например, RAR-а, и токен не нужен! Но, чтобы перебрать все пароли к архиву у нарушителя будет сколь угодно большое количество попыток, а токен после трех последовательных попыток ввода неверного PIN-а блокируется. Вывод: даже при самых скромных настройках безопасности хранить ключ на токене безопаснее, чем на флэшке. С хранением ключей все.
Другие функции токена
Что ещё умеет делать токен? Токен может самостоятельно:
1. Шифровать\расшифровывать в соответствии с алгоритмами симметричного и асимметричного шифрования
2. Генерировать ключи шифрования
3. Формировать и проверять ЭЦП
4. Хешировать данные и т.д.
Токен представляет собой некий «черный ящик» во время осуществления криптографических операций: данные поступают на вход, преобразуются с помощью ключа и передаются на выход. Его можно сравнить с микрокомпьютером. Ввод и вывод информации для токена происходит по USB, есть свой процессор, оперативная и защищенная долговременная память.
Для чего нам нужны пароли?
Для большинства из нас повсеместное использование паролей стало стандартом «де факто» или, если угодно, классикой современности. Хотим аутентифицироваться на почте или соцсетях – легко, зашифровать файл RAR-ом – пожалуйста. Главное преимущество паролей в простоте их использования. Однако, такие вопросы как забывчивость, передача по незащищенным каналам (теще по телефону), набор пароля на клавиатуре, предсказуемость и т.д. ставят под сомнение некоторые важные с точки зрения безопасности операции.
Если сравнивать пароль с криптографическим ключом, то выводы напрашиваются весьма неутешительные. В ГОСТ 28147-89 длина ключа составляет 256 бит (32 байта). При использовании генератора псевдослучайных чисел, ключ обладает хорошими статистическими свойствами. Пароль же, который является, например, словом из словаря, можно свести к псевдослучайному числу длиной 16 бит, что короче ГОСТ-ового ключа в 16 раз. Это сравнение само по себе представляет по криптографическим понятиям полный и безоговорочный fail!
Мое утверждение состоит в следующем: токены способны решать все те задачи, для которых сейчас применяются пароли. Все без исключения. И решать их более качественно и безопасно. Считаю, давно пора заменить схемы на паролях на полноценные криптографические протоколы с ключами. И в этом деле, лучшего помощника, нежели токен, не найти. Чтобы не быть голословным, рассмотрим пару конкретных примеров: аутентификация и шифрование данных.
Аутентификация
Подробно останавливаться на минусах парольной аутентификации нет смысла. Слишком много сообщений о взломанных страничках и почтовых ящиках нам приходилось слышать. А с помощью криптографии на токенах реально реализовать «любой из тысячи» существующих протоколов аутентификации, для которого ни перехват с модификацией трафика, ни кража БД с сервера не дадут результата для нарушителя. Пользователь может забыть пароль, но не может забыть ключ, т.к. последний надежно хранится на токене. Аутентифицироваться с токеном также удобно, как и по паролю.
Шифрование данных
Обычно данные шифруются на криптографическом ключе, а сам ключ шифруется на пароле. Безопасность всей схемы целиком и полностью зависит от пароля, который опять же не всегда сложен и случаен, набирается на клавиатуре, может быть забыт и т.д. В случае с токеном, возможны два варианта решения:
1. Ключ хранится на токене и не покидает его. Такой способ подходит только для малых объемов информации, т.к. скорость дешифрования при помощи токена не достаточно велика. Нарушителю извлечь ключ нереально.
2. Ключ хранится на токене, но при шифровании попадает в оперативную память. Этот способ применяется, например, для де/шифрования тома целиком. Извлечь ключ возможно, но не совсем тривиально. Пароль же украсть гораздо проще.
Конечно, за решения с помощью токенов придется платить, но к счастью, рублями, а не нервами и временем. Несмотря на то, что токены содержат полный арсенал криптографических операций, достаточно сложных для понимания большинством пользователей, само применение токена не представляет особого труда и интуитивно понятно. Токен действительно не требует от пользователя специальных профильных знаний и глубокого понимания заложенных в него механизмов. И он потенциально способен прийти на смену паролей и всего, что с ними связано.
Заключение
Уверен, что при распространенности решений на основе токенов удастся избежать различных неприятных случаев, связанных с кражей паролей, а также увеличить уровень безопасности в глобальном смысле.
Искренне надеюсь, что у читателей остались вопросы, ведь рассказал о токенах я крайне мало. С удовольствием отвечу на них в комментариях!
Аспекты хранения информации на токенах
Сразу хочется пояснить, что токен – это не флэшка. Конечно, он может хранить некоторое количество информации, но весьма ограниченное, например, 64 Кб. Существуют токены, которые содержат в себе флэш-память на несколько Гб. Однако данные хранятся в этой флэш-памяти при помощи той же самой технологии, что и на обычной флэшке. Поэтому функцию хранения больших объемов данных можно расценивать как второстепенную или побочную.
Можно сказать, что первоначальная функция токенов – это не извлекаемое хранение ключевой информации. Очевидно, с флэшкой общего мало. Что значит «не извлекаемое»? Это значит, что ключ из токена никогда не попадает никуда извне, например, в оперативную память компьютера. Данную строгую политику можно ослабить до того, что разрешается экспорт ключа из токена в оперативную память только в зашифрованном виде. Также существует опция экспорта ключа в открытом виде. Но даже при выборе владельца токена использовать только эту опцию, уровень безопасности все равно выше, чем хранение ключа на обычной флэшке. Выше он потому, что для экспорта ключа требуется знание PIN-кода, а для копирования ключа с флэшки PIN-код не требуется. Многие скажут: так можно же хранить ключ на флэшке и шифровать его паролем при помощи, например, RAR-а, и токен не нужен! Но, чтобы перебрать все пароли к архиву у нарушителя будет сколь угодно большое количество попыток, а токен после трех последовательных попыток ввода неверного PIN-а блокируется. Вывод: даже при самых скромных настройках безопасности хранить ключ на токене безопаснее, чем на флэшке. С хранением ключей все.
Другие функции токена
Что ещё умеет делать токен? Токен может самостоятельно:
1. Шифровать\расшифровывать в соответствии с алгоритмами симметричного и асимметричного шифрования
2. Генерировать ключи шифрования
3. Формировать и проверять ЭЦП
4. Хешировать данные и т.д.
Токен представляет собой некий «черный ящик» во время осуществления криптографических операций: данные поступают на вход, преобразуются с помощью ключа и передаются на выход. Его можно сравнить с микрокомпьютером. Ввод и вывод информации для токена происходит по USB, есть свой процессор, оперативная и защищенная долговременная память.
Для чего нам нужны пароли?
Для большинства из нас повсеместное использование паролей стало стандартом «де факто» или, если угодно, классикой современности. Хотим аутентифицироваться на почте или соцсетях – легко, зашифровать файл RAR-ом – пожалуйста. Главное преимущество паролей в простоте их использования. Однако, такие вопросы как забывчивость, передача по незащищенным каналам (теще по телефону), набор пароля на клавиатуре, предсказуемость и т.д. ставят под сомнение некоторые важные с точки зрения безопасности операции.
Если сравнивать пароль с криптографическим ключом, то выводы напрашиваются весьма неутешительные. В ГОСТ 28147-89 длина ключа составляет 256 бит (32 байта). При использовании генератора псевдослучайных чисел, ключ обладает хорошими статистическими свойствами. Пароль же, который является, например, словом из словаря, можно свести к псевдослучайному числу длиной 16 бит, что короче ГОСТ-ового ключа в 16 раз. Это сравнение само по себе представляет по криптографическим понятиям полный и безоговорочный fail!
Мое утверждение состоит в следующем: токены способны решать все те задачи, для которых сейчас применяются пароли. Все без исключения. И решать их более качественно и безопасно. Считаю, давно пора заменить схемы на паролях на полноценные криптографические протоколы с ключами. И в этом деле, лучшего помощника, нежели токен, не найти. Чтобы не быть голословным, рассмотрим пару конкретных примеров: аутентификация и шифрование данных.
Аутентификация
Подробно останавливаться на минусах парольной аутентификации нет смысла. Слишком много сообщений о взломанных страничках и почтовых ящиках нам приходилось слышать. А с помощью криптографии на токенах реально реализовать «любой из тысячи» существующих протоколов аутентификации, для которого ни перехват с модификацией трафика, ни кража БД с сервера не дадут результата для нарушителя. Пользователь может забыть пароль, но не может забыть ключ, т.к. последний надежно хранится на токене. Аутентифицироваться с токеном также удобно, как и по паролю.
Шифрование данных
Обычно данные шифруются на криптографическом ключе, а сам ключ шифруется на пароле. Безопасность всей схемы целиком и полностью зависит от пароля, который опять же не всегда сложен и случаен, набирается на клавиатуре, может быть забыт и т.д. В случае с токеном, возможны два варианта решения:
1. Ключ хранится на токене и не покидает его. Такой способ подходит только для малых объемов информации, т.к. скорость дешифрования при помощи токена не достаточно велика. Нарушителю извлечь ключ нереально.
2. Ключ хранится на токене, но при шифровании попадает в оперативную память. Этот способ применяется, например, для де/шифрования тома целиком. Извлечь ключ возможно, но не совсем тривиально. Пароль же украсть гораздо проще.
Конечно, за решения с помощью токенов придется платить, но к счастью, рублями, а не нервами и временем. Несмотря на то, что токены содержат полный арсенал криптографических операций, достаточно сложных для понимания большинством пользователей, само применение токена не представляет особого труда и интуитивно понятно. Токен действительно не требует от пользователя специальных профильных знаний и глубокого понимания заложенных в него механизмов. И он потенциально способен прийти на смену паролей и всего, что с ними связано.
Заключение
Уверен, что при распространенности решений на основе токенов удастся избежать различных неприятных случаев, связанных с кражей паролей, а также увеличить уровень безопасности в глобальном смысле.
Искренне надеюсь, что у читателей остались вопросы, ведь рассказал о токенах я крайне мало. С удовольствием отвечу на них в комментариях!