С постепенным уменьшением количества систем на базе Windows XP и Windows Server 2003 и увеличением доли более новых операционных систем, всё большую популярность приобретают новые криптографические алгоритмы. Эти алгоритмы (их ещё называют Suite B) включены в концепцию Cryptography Next Generation или сокращённо CNG. Эти алгоритмы отличаются более высокой стойкостью при меньшей длине ключа, а так же поддерживают более стойкие (и более длинные) алгоритмы хеширования семейства SHA2 (SHA256, SHA384, SHA512). А ещё они поддерживают новую модель криптоповайдеров — Key Storage Provider (KSP). В этой статье я расскажу про некоторые особенности применения CNG в EFS и Key Archival.
Начиная с Windows Vista вы можете использовать CNG для шифрующей файловой системы (CNG). Для этого вам придётся скопировать шаблон BasicEFS в оснастке Certificate Templates. Когда вы копируете шаблон, вы видите вот такой выбор:
Если вы выберите верхний элемент (Windows Server 2003 Enterprise), вы создадите шаблон, который сможет использовать только классические (CryptoAPI 1.0) криптопровайдеры (например, Microsoft Enhanced Cryptographic Provider v1.0) и использовать только SHA1 в качестве алгоритма подписи.
Если вы выберите нижний элемент (Windows Server 2008 Enterprise), вы создадите шаблон, который будет использовать новые KSP (CryptoAPI 2.0) провайдеры и сможет использовать алгоритмы CNG. А можете и не использовать их (т.е. использовать RSA для ключей и SHA1 для подписей). Но в случае с EFS, при использовании KSP, вам придётся использовать алгоритмы CNG. Дело в том, что EFS поддерживает KSP, но требует использования алгоритмов ECC для генерации ключей (ECDH). Если хотите использовать RSA, необходимо выбирать верхний элемент и использовать классические криптопровайдеры.
Это хорошая практика, если вы применяете key archival для сертификатов EFS. Это позволяет пользователю получить доступ к зашифрованным данным в случае утери ключа, не прибегая к помощи EFS Recovery Agent для расшифровки файлов. Так же, как и с EFS, в key archival вы можете использовать весь спектр CNG. Причём, там нету таких ограничений, как обязательное использование ECC для KSP. Вы можете смело использовать KSP с RSA.
Но тут есть один нюанс. В процессе восстановления ключа, восстановленный ключ загружается в тот провайдер, в котором хранится ключ агента восстановления. Если это Key Storage Provider (KSP), восстановленный ключ будет загружен в KSP и уже потом выгружен в PFX. Когда восстановленный ключ доставлен клиенту, при импорте сертификата в хранилище, ключ будет загружен в провайдер, указанный в PFX. Следовательно, восстановленный RSA ключ будет загружен в KSP и (как было отмечено выше) новый сертификат не будет работать, потому что EFS не поддерживает KSP и RSA. Поэтому при импорте восстановленного сертификата в хранилище вам следует использовать командную строку:
certutil –importpfx –user –csp "Microsoft Enhanced Cryptographic Provider v1.0" path\file.pfx
И последнее. В статье Understanding Automatic Key Archival есть сноска:
Only RSA Security encryption keys may be archived in the CA database. Signature only keys as well as non-RSA key pairs will not be archived. Denied and resubmitted requests will also not archive private keys.
Это справедливо только для Windows Server 2003. В Windows Server 2008+ вы можете архивировать и ECC ключи тоже.
Comments: