Есть ли способ создать закрытый ключ с помощью CryptoAPI и заполнить его?
-
08-07-2019 - |
Вопрос
Нам нужно создать закрытый ключ, который будет заполнен двумя открытыми текстовыми ключами. 2 открытых ключа поддерживаются разными менеджерами. Это необходимо для удовлетворения ключевых требований двойного контроля, которые у нас есть. Мы можем объединить два ключа в одно семя. Однако, прочитав документацию по Microsoft CryptoAPI, все генерации ключей абсолютно случайны, и у них нет возможности получить начальное значение. Это правда? Если да, можете ли вы предложить альтернативное решение для создания этого ключа?
Примечание. Ключ будет сохранен в контейнере ключей и помечен как неэкспортируемый.
Решение
Почему бы не сделать это наоборот? Создайте закрытый ключ, а затем разделите его на две общие папки, причем у каждого менеджера только один. Для простой схемы 2 из 2 все, что вам нужно сделать, это сгенерировать блок случайных (действительно случайных, не псевдослучайных) данных размером ключа, скомпоновать его с помощью сгенерированного ключа и дать одного менеджера случайные данные, а другой менеджер зашифрованный ключ.
Затем, когда вам нужно использовать ключ, оба менеджера предоставляют свои данные, и вы восстанавливаете их по этим данным, удаляя их, когда закончите.