Я хочу сгенерировать пару ключей с openssl, но я не могу установить параметры для создания своего личного/открытого ключа. Я хочу передать входной параметр, например идентификатор (примерный MAC-адрес), чтобы получить уникальный частный/открытый ключ. Для того же идентификатора мне нужен тот же частный/открытый ключ. Как я могу это сделать? Заранее благодарен: DНастроить openssl сгенерировать параметры ключа RSA
ответ
RSA пары ключей должны генерироваться случайным образом.
Создание детерминированного генерации - вы больше не генерируете ключ, а извлекаете ключ из определенных данных (например, на основе MAC-адреса). Это снижает безопасность сгенерированных ключей до нуля - следовательно, они бесполезны, и вам даже не нужно начинать их генерировать.
Центральное предположение, что безопасность RSA основывается на том, что закрытый ключ известен только владельцу ключа. Если взять публичную информацию, как МАС-адрес следующей формулы:
пара RSA ключа = ваш-вывод-алгоритм (MAC-адрес)
Если вы хотите знать секретный ключ RSA (который является частью пара ключей) вам нужен MAC-адрес и алгоритм деривации. MAC является общедоступным, и алгоритм деривации будет опубликован раньше или позже.
Следовательно, закрытый ключ RSA является общедоступным, что делает его бесполезным с точки зрения безопасности, потому что каждый, кто знает MAC-адрес, может его генерировать.
Имейте в виду: базы безопасности основаны на секретных данных в сочетании с хорошо спроектированным алгоритмом. Независимо от того, является ли алгоритм публичным или нет, это не должно влиять на безопасность. Если у вас есть эффект, у вас есть небезопасный алгоритм, который вы можете выбросить.
Привет, вы можете объяснить мне, как генерировать одну и ту же пару ключей для одного и того же входного параметра? Я уменьшаю безопасность сгенерированных ключей? –
См. Мой обновленный ответ. – Robert
Использование команды RSA_generate_ex для OpenSSL может занять определенную работу. Вероятно, вам нужно предоставить «ДВИГАТЕЛЬ», который снабжает генератор случайных чисел. Ваш RNG будет поставлять биты, используемые алгоритмом генерации ключей. У Ричарда Левитта есть несколько уроков в [Engine Engine Lesson 1: Минимальный бесполезный движок] (https://www.openssl.org/blog/blog/2015/10/08/engine-building-lesson-1-a- минимально-бесполезный двигатель /) и [Engine Engine Lesson 2: пример MD5 Engine] (https://www.openssl.org/blog/blog/2015/11/23/engine-building-lesson-2-an- пример-md5-двигатель /). – jww
Лучшим вариантом может быть создание параметров 'p',' q', 'n',' e', 'd' и CRT. Они просто 'BIGNUM', и вы полностью контролируете форму. Затем назначьте их «RSA *». Стандартные предупреждения применимы в отношении беспорядка с генерацией ключей таким образом ... – jww