openjdk.ruOpenJDK на русском

JEP 152: Crypto Operations with Network HSMs

Криптографические операции с сетевыми HSM

ОтветственныйVincent Ryan
ТипFeature
ОбластьSE
СтатусClosed / Withdrawn
Компонентsecurity-libs / javax.crypto
Обсуждениеsecurity dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
ОдобренBrian Goetz
Создан2011/08/31 20:00
Обновлён2024/07/25 20:26
Задача8046142

Аннотация

Улучшить поддержку аппаратных модулей безопасности (Hardware Security Modules, HSM): выбирать криптопровайдеры на основе метаданных ключа и поддерживать такие функции, как обнуление ключей и атомарные операции «сгенерировать и установить».

Цели

  1. Дать фреймворку JCE возможность выбирать криптопровайдер на основе переданного ключа.

  2. Дать возможность связывать с ключом метаданные его жизненного цикла.

  3. Дать возможность явно обнулять удалённые ключи.

Мотивация

Текущий механизм упорядочивания криптопровайдеров слишком грубый — он переносит все криптографические операции на провайдер HSM. Для сетевых HSM это работает плохо, потому что передавать все данные по сети только ради выполнения над ними криптографической операции дорого — тем более что этот сетевой канал обычно работает поверх SSL, поэтому данные требуют дополнительного цикла шифрования и расшифровки в программной реализации.

Описание

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

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

Альтернативы

Единственная альтернатива на данный момент — явно жёстко прописать нужный криптопровайдер в коде приложения. Такой подход громоздкий, негибкий и плохо масштабируется.

Тестирование

Для проверки и тестирования может потребоваться доступ к различным HSM.

Влияние

  • Совместимость: минимальное
  • Документация: минимальное; нужно задокументировать новое поведение