Одной из самых важных задач в информационной безопасности является защита конфиденциальных данных, которая является комплексной и довольно сложной. Даже самые опытные профессионалы подходят к этому делу с изрядной долей волнения. Организация эффективной защиты конфиденциальных данных в рамках приложений, баз данных, устройств хранения и групп серверов сама по себе является непростой и еще больше усложняется при использовании разнородных систем и противоречивых требованиях бизнеса.
Как правило, в случае с конфиденциальными данными мы рассматриваем разнообразные решения с использованием шифрования, но в последние годы заметен рост интереса к другой технологии - токенизации.
Должным образом реализованное шифрование является одним из наиболее эффективных средств обеспечения безопасности конфиденциальных данных. Оно позволяет обеспечить доступ к данным только авторизованным пользователям и защищает данные, как при хранении, так и при передаче. Но шифрование не единственный вариант защиты – есть и альтернативные методы. Причем иногда самым правильным решением будет не попытка защитить конфиденциальные данные шифрованием, а вообще отказаться от их передачи.
Токенизация как раз является технологией, которая предоставляет эту возможность – ее принцип заключается в подмене реальных конфиденциальных данных некими значениями – токенами. Токенизация в чем-то схожа с шифрованием – обе технологии занимаются маскированием реальных данных, но подход к этому процессу в корне отличается. В случае шифрования, процесс сокрытия данных обратим при наличии правильного ключа. Любой человек, получив ключ шифрования, сможет восстановить исходные данные.
В случае с токенизацией, процесс не является обратимым, ведь вместо данных при токенизации используется токен, не несущий в себе никакой конфиденциальной информации, и лишь логически связанный с реальными данными, которые хранятся в хорошо защищенной базе данных. При этом токен может иметь тот же формат (размер и структура), что и оригинальные данные, что позволяет минимизировать необходимость внесения изменений в работающие с ним приложения. Но при этом похищать токен бессмысленно, так как он не поможет получить никакие реальные конфиденциальные данные.
Главное преимущество токенизации в том, что токены могут полноценно использоваться внутри среды их применения, но совершенно бесполезны вне ее. Токенизация идеально подходит для защиты конфиденциальных данных, таких как номера кредитных карт, номера социального страхования, а также любых других данных, которые злоумышленники регулярно похищают с целью использования или продажи на “черном рынке”. Если злоумышленникам не удастся взломать сам сервер токенизации, чтобы получить связанные с токенами реальные данные, то похищенные токены не дадут им ровным счетом никаких возможностей их использовать.
Повышение интереса к токенизации связано, прежде всего, с тем, что она позволяет обеспечить защиту данных при потенциально низкой стоимости. Добавление шифрования в системы – особенно в уже действующие – значительно увеличивает нагрузку на них. Внесение изменений в приложения для внедрения шифрования может значительно повысить расходы, снизить производительность и увеличить требования к программистам и администраторам систем. Кроме того, в случае использования разнородных систем, возникает необходимость шифровании, расшифровании и повторном шифровании данных в различных местах, что создает дополнительные уязвимости, которые могут быть использованы злоумышленниками. Причем, чем больше ключей используется в системе, тем больше возможностей для ее атаки. Работа с ключами особенно опасна, учитывая распространенность вредоносного ПО для перехвата данных непосредственно в оперативной памяти, которое позволяет получить доступ к ключам даже не имея административных привилегий на зараженной машине.
Помимо минимизации требований к внесению изменений в используемые приложения, токенизация снижает риски для конфиденциальных данных. При правильной реализации, приложения смогут использовать токены во всей системе и обращаться к защищенным конфиденциальным данным только в случае крайней необходимости. Приложения могут хранить, использовать и совершать транзакции, оперируя только токеном и не подвергая реальные данные риску. Хотя некоторые операции, конечно, требуют обращения к реальным данным, токенизация позволяет минимизировать их использование.
Например, одним из самых распространенных примеров использования токенизации является ее применение для платеже с использованием платежных карт. Более подробно этот сценарий применения будет рассмотрен позже, но использование токена вместо значения номера платежной карты позволяет провести отслеживание транзакции и ее выполнение без риска компрометации реальных данных карты. Доступ к реальному номеру понадобится только в процессинговом центре. Ну а в том случае, если процессинговый центр также использует токенизацию, то возможно проведение транзакции вообще без использования реальных данных.
Впрочем, это не означает, что токенизация всегда будет лучшим выбором, нежели шифрование. Два этих решения тесно связаны между собой и фокус в том, чтобы определить, какое из решений будет лучше в данных конкретных обстоятельствах. Например, каждая система токенизации полагается на шифрование для защиты хранящихся конфиденциальных данных. Но иногда, лучший способ обеспечения безопасности конфиденциальных данных – это отказ от их хранения в большей части мест системы. Токенизация позволяет добиться этого, сохранив при этом возможность работать с конфиденциальными данными, используя токены.
В данном материале мы максимально углубимся в токенизацию и постараемся понять, как работает технология, исследовать разные варианты использования и сценарии развертывания, а также обратим внимание на критерии выбора, которые позволят подобрать правильное решение. Кроме того мы рассмотрим использование сторонних сервисов, позволяющих выполнить требования PCI, и возможность разработки собственных решений для внутренних приложений. Прежде чем мы углубимся в специфику, важно уточнить значение некоторых терминов, которые мы будем использовать в данном материале.
Термины и определения
- Токен. Случайные данные, используемые в качестве некоего суррогата для других данных. В токене нет математических зависимостей между случайными и оригинальными данными, поэтому оригинальные данные не могут быть определены по значению токена. Ассоциация между оригинальными и случайными данными ведется только в базе данных и сопоставление оригинальных данных и суррогата может быть проведено только в ней.
- Токенизация. Процесс создания токенов.
- Шифрование. Обратимое преобразование данных с целью сделать их нечитаемыми для пользователей, у которых отсутствует ключ, который позволяет провести обратное преобразование и вернуть данным исходный вид.
- Хеш. Необратимое преобразование по определенному алгоритму массива данных в битовую строку фиксированной длины с неслучайным значением.
- Зашифрованный токен. Данные, которые были зашифрованы, используя специальные методы шифрования с сохранением формата и типа данных, а не заменены случайным значением. Обычно такие зашифрованные данные используются в виде токенов, но могут быть расшифрованы с целью получить оригинальные данные. Технически это решение относится к шифрованию, а не токенизации.