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): выбирать криптопровайдеры на основе метаданных ключа и поддерживать такие функции, как обнуление ключей и атомарные операции «сгенерировать и установить».
Цели
-
Дать фреймворку JCE возможность выбирать криптопровайдер на основе переданного ключа.
-
Дать возможность связывать с ключом метаданные его жизненного цикла.
-
Дать возможность явно обнулять удалённые ключи.
Мотивация
Текущий механизм упорядочивания криптопровайдеров слишком грубый — он переносит все криптографические операции на провайдер HSM. Для сетевых HSM это работает плохо, потому что передавать все данные по сети только ради выполнения над ними криптографической операции дорого — тем более что этот сетевой канал обычно работает поверх SSL, поэтому данные требуют дополнительного цикла шифрования и расшифровки в программной реализации.
Описание
Сейчас у криптопровайдеров нет способа определить, какой провайдер сгенерировал ключ. Поэтому перед выполнением криптографической операции фреймворк JCE перебирает провайдеры, перечисленные в политике безопасности, по очереди, пока операция не выполнится успешно. Чтобы устранить это неэффективное поведение, нам нужно ввести механизм, связывающий с ключом провайдер, который его сгенерировал. Тогда фреймворк сможет проверить ключ и сразу определить нужный провайдер.
Полезный побочный эффект этого улучшения — появляется механизм, позволяющий переопределять порядок провайдеров по умолчанию для каждого ключа отдельно. Это полезно, когда для платформы настроено несколько провайдеров с похожими алгоритмами.
Альтернативы
Единственная альтернатива на данный момент — явно жёстко прописать нужный криптопровайдер в коде приложения. Такой подход громоздкий, негибкий и плохо масштабируется.
Тестирование
Для проверки и тестирования может потребоваться доступ к различным HSM.
Влияние
- Совместимость: минимальное
- Документация: минимальное; нужно задокументировать новое поведение