Реклама:

Криптографию с симметричными ключами удобно применять в приложениях, которые хранят зашифрованные данные и которым также требуется расшифровать данные (рис. 4-8). Это помогает сдерживать атаки, когда злоумышленник пытается получить доступ к данным путем обхода логики приложения, используя уязвимые места кода или напрямую подключаясь к хранилищу данных (включая резервные копии базы данных). Если вы технически и административно разделите места хранения данных и ключа, то получите также некоторую защиту от атак изнутри. Естественно, само приложение имеет доступ к ключам, и если злоумышленнику удастся организовать взлом приложения или хранилища ключей, то он сможет взломать и ключ.

Байер Доминик Microsoft ASP.NET. Обеспечение безопасности. Мастер-класс

Рис. 4-8. Проект приложения с использованием криптографии с симметричными ключами

Тем не менее в случае защиты хранилища ключей и сервера приложения этот метод существенно усложняет перехват или модификацию данных и обеспечивает реальную защиту.

Хранение ключей

Ключи необходимо хранить в защищенном месте. Если речь идет об атаках изнутри, то одни и те же лица не должны иметь физический или административный доступ к хранилищам данных и ключей.

Вам потребуется два разных ключа — но одному для шифрования и для подтверждения (путем вычисления кода MAC). Если вы хотите хранить эти ключи в базе данных, создайте таблицу, где будут содержаться пары «имя ключа-значение». Вам понадобится 16 байт для ключа шифрования, если используется алгоритм AES128, и 32 байта для ключа подтверждения, если используется алгоритм HMACSHA256.

Убедитесь, что вы применяете сжатый АСЕ для ресурса, содержащего ключ, и используете сетевой протокол защищенной передачи, если ключ хранится на другой машине. По умолчанию при совместном использовании файлов Microsoft SQL Server и Windows все данные передаются в открытом виде. В главе 9 вы найдете руководство по защите сетевых коммуникаций.

Шифрование данных и защита целостности

Добавление или обновление уязвимых данных (например, записи клиента с номером социального страхования) необходимо производить в таком порядке.

1. Извлеките ключи шифрования и подтверждения.

2. Создайте код MAC для открытых данных.

3. Выполните шифрование данных,

4. Сохраните зашифрованные данные.

5. Сохраните MAC.

Производить шифрование данных напрямую с использованием «долгосрочного секрета», как, например, хранение главного ключа в хранилище ключей, не рекомендуется по следующим причинам.

• Не следует шифровать данные с помощью ключа, используемого длительный период. Долгосрочное хранение упрощает криптоанализ и повышает вероятность взлома или перехвата ключа.

■ Если вам нужно изменить главный ключ (например, из-за потенциальной возможности его взлома или для периодического чередования ключей), то придется заново зашифровать данные с использованием нового ключа.

Укапанных проблем можно избежать, введя еще один, так называемый сеансовый ключ. Это случайный ключ, используемый для шифрования реальных данных. Впоследствии сеансовый ключ шифруется с помощью главного ключа и сохраняется в зашифрованном виде вместе с данными.


⇐ Предыдущая страница| |Следующая страница ⇒