Вопрос или проблема
Наше устройство поставляется с сертификатом устройства, который был подписан нашим частным регистрационным органом (CA). Приватный ключ (тип ECC) был сгенерирован непосредственно на самом устройстве – точнее, прямо на встроенном TPM. Открытый ключ включен в сертификат устройства.
Теперь у нас есть задача, в которой мы хотим зашифровать некоторые чувствительные файлы для использования на устройстве и wondered, как мы могли бы сделать это с существующими механизмами. Может ли открытый ECC ключ внутри сертификата устройства (или что-то, производное от него) использоваться для шифрования данных, которые только устройство сможет расшифровать, используя свой приватный ключ ECC на основе TPM (или что-то, производное от него)?
Какие варианты у нас есть для шифрования чего-то для устройства, используя специфичную для устройства информацию? Мы не хотели бы, чтобы зашифрованный файл работал на каждом устройстве, что было бы в случае, если бы мы использовали общий секрет и симметричное шифрование напрямую.
Обычный способ решения такого вопроса – это сгенерировать эфемерный симметричный ключ, зашифровать ваш файл с использованием симметричного ключа, затем зашифровать симметричный ключ с помощью открытого ECC ключа. Передайте зашифрованный симметричный ключ и зашифрованный файл. Устройство расшифровывает симметричный ключ, используя ECC ключ на базе TPM, а затем расшифровывает файл.
Примечания:
- Убедитесь, что используете хорошую криптографическую случайность для генерации симметричного ключа
- Убедитесь, что используете аутентифицированную схему шифрования (например, AES-GCM)
- Вы можете обнаружить, что приватный ключ в TPM является ключом подписи и не предназначен для использования для расшифровки. Если это проблема, вы, вероятно, сможете сгенерировать другой ключ TPM для шифрования/расшифровки и сгенерировать сертификат для его открытого ключа (который будет подписан оригинальным ключом подписи).
Этот открытый ключ ECC должен быть либо ключом платформы (PK), либо ключом подтверждения (EK), используемым для обновлений или проверки TPM. Не используйте ни один из этих ключей напрямую для шифрования и расшифровки данных. Вместо этого вы можете использовать различные методы для защиты ваших данных:
- Шифрование файлов или данных с ключами под иерархией SRK (корневой ключ хранения).
- Сгенерируйте SRK (корневой ключ хранения), который будет контролироваться вашим приложением.
- Сгенерируйте ключ под иерархией SRK и используйте этот ключ для шифрования ваших файлов или любого типа данных.
- SRK будет обертывать сгенерированный ключ и будет расшифровывать на основе входных данных.
- SRK находится в TPM.
Первый вариант обеспечивает, что только TPM с ассоциированными ключами сможет расшифровать данные.
- Шифрование + привязка данных к состоянию системы: (Работает в случае безопасной загрузки)
- Сгенерируйте SRK (корневой ключ хранения), который будет контролироваться вашим приложением.
- Сгенерируйте ключ под иерархией SRK. Например, ключ для тестирования.
- TPM имеет PCR, которые могут хранить специфические типы данных, например, хэши.
- Если безопасная загрузка включена, можно использовать PCR 0-7, чтобы убедиться, что состояние системы не изменено.
- Хэши рассчитываются и хранятся в процессе загрузки в TPM.
- С помощью ключа для тестирования зашифруйте данные и запечатайте (привяжите) их с помощью одного или нескольких PCR от 0 до 7.
a. Например, мы будем использовать PCR 7 (сохраняет хэш для политики безопасной загрузки) - Теперь данные запечатаны. Для распечатывания операция распечатывания TPM обеспечит, что PCR7 содержит тот же хэш, который использовался во время запечатывания.
- Если хэш совпадает, данные будут расшифрованы.
- В случае любых изменений в политике безопасной загрузки данные не будут расшифрованы.
Второй вариант обеспечивает, что
- TPM с ассоциированными ключами + система с определенным состоянием (без изменений в программном обеспечении системы, таком как BIOS, ядро и т. д.) сможет только расшифровать данные.
- Шифрование + привязка + аттестация (обеспечивает стороннюю проверку, такую как ваш CA)
- Следуйте всей процедуре, как указано в пункте “2”.
- Теперь сгенерируйте AK (ключ аттестации) под SRK.
- Сгенерируйте учетные данные AK, то есть сертификаты AK, подписанные третьей стороной (например, CA).
- Используйте AK для подписи PCR.
- Используйте AK для подтверждения, что PCR действителен и подписан доверенной третьей стороной.
- Это обеспечивает, что данные зашифрованы с помощью TPM, то есть аппаратным способом.
Третий вариант обеспечивает подлинность и стороннюю проверку, что данные защищены действительным TPM и системой.
Ответ или решение
Шифрование и дешифрование на основе ECC с использованием TPM
Современные устройства требуют надежной защиты данных, особенно когда дело касается конфиденциальной информации. В контексте использования устройства с сертификатом, подписанным вашим собственным центром сертификации (CA), и ключом типа ECC, который был сгенерирован непосредственно на движке TPM (Trusted Platform Module), появляется необходимость в безопасном способе шифрования чувствительных файлов.
Использование ключа ECC для шифрования данных
Как было замечено в описании, ценный подход к шифрованию состоит в использовании комбинации асимметричного и симметричного шифрования. Давайте рассмотрим, как это работает:
-
Генерация симметричного ключа:
- Для начала необходимо сгенерировать временный симметричный ключ, который будет использоваться для шифрования вашего файла. Ключ следует создавать с использованием надежного криптографического генератора случайных чисел, чтобы обеспечить безопасность.
-
Шифрование файла:
- После генерации симметричного ключа, файл шифруется с использованием этого ключа. Рекомендуется использовать алгоритм аутентифицированного шифрования, такой как AES-GCM, что обеспечит защиту как конфиденциальности, так и целостности данных.
-
Шифрование симметричного ключа через ECC:
- После шифрования файла, временный симметричный ключ шифруется с использованием открытого ECC-ключа, содержащегося в сертификате устройства. Это гарантирует, что только устройство с соответствующим закрытым ключом может расшифровать симметричный ключ и, следовательно, файл.
-
Передача данных:
- В результате, вы передаете пользователю зашифрованный симметричный ключ и зашифрованный файл. Устройство самостоятельно расшифровывает симметричный ключ с использованием своего закрытого ключа, а затем использует его для расшифровки файла.
Рекомендации по использованию TPM для защиты данных
Важно отметить, что использование открытых ключей, таких как ключ платформы (PK) или ключа подтверждения (EK), не рекомендуется для шифрования данных напрямую. Вместо этого можно рассмотреть несколько других подходов:
-
Шифрование данных с использованием ключей под иерархией SRK (Storage Root Key):
- Генерируйте SRK, который будет контролироваться вашим приложением. Создайте ключи под этой иерархией для шифрования ваших файлов. SRK будет загружать, шифровать и расшифровывать ключи.
-
Шифрование, связанное с состоянием системы:
- Используйте функции TPM для создания ключей и связывайте их с различными значениями PCR (Platform Configuration Registers). Это предотвратит расшифровку файла в случае воздействия на состояние системы, например, при изменении BIOS.
-
Аттестация и удостоверение третьей стороны:
- После настройки ключей под иерархией SRK можно создать ключ аттестации (AK), который будет иметь сертификаты, подписанные вашим CA. Используя AK, обеспечьте дополнительный уровень безопасности путем подписи и аттестации значений PCR.
Заключение
Использование ECC для шифрования и дешифрования данных на устройствах с TPM предлагает надежный и многоуровневый подход к защите информации. Основные моменты, которые следует учитывать, включают использование надежного генератора случайных чисел, применение аутентифицированного шифрования, выбор правильной модели управления ключами и интеграцию аттестации для верификации доверия от третьих сторон. Эти методы обеспечат защиту данных устройства без возможности компрометации, сохраняя лишь тот доступ, который необходим для корректной работы системы.
Внедрение описанных выше техник существенно укрепит защиту конфиденциальных данных в вашем устройстве, что сделает вашу систему более надежной и устойчивой к возможным угрозам безопасности.