2016-12-02 4 views
1

Я хочу сгенерировать пару ключей с openssl, но я не могу установить параметры для создания своего личного/открытого ключа. Я хочу передать входной параметр, например идентификатор (примерный MAC-адрес), чтобы получить уникальный частный/открытый ключ. Для того же идентификатора мне нужен тот же частный/открытый ключ. Как я могу это сделать? Заранее благодарен: DНастроить openssl сгенерировать параметры ключа RSA

+0

Использование команды 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

+0

Лучшим вариантом может быть создание параметров 'p',' q', 'n',' e', 'd' и CRT. Они просто 'BIGNUM', и вы полностью контролируете форму. Затем назначьте их «RSA *». Стандартные предупреждения применимы в отношении беспорядка с генерацией ключей таким образом ... – jww

ответ

0

RSA пары ключей должны генерироваться случайным образом.

Создание детерминированного генерации - вы больше не генерируете ключ, а извлекаете ключ из определенных данных (например, на основе MAC-адреса). Это снижает безопасность сгенерированных ключей до нуля - следовательно, они бесполезны, и вам даже не нужно начинать их генерировать.

Центральное предположение, что безопасность RSA основывается на том, что закрытый ключ известен только владельцу ключа. Если взять публичную информацию, как МАС-адрес следующей формулы:

пара RSA ключа = ваш-вывод-алгоритм (MAC-адрес)

Если вы хотите знать секретный ключ RSA (который является частью пара ключей) вам нужен MAC-адрес и алгоритм деривации. MAC является общедоступным, и алгоритм деривации будет опубликован раньше или позже.

Следовательно, закрытый ключ RSA является общедоступным, что делает его бесполезным с точки зрения безопасности, потому что каждый, кто знает MAC-адрес, может его генерировать.

Имейте в виду: базы безопасности основаны на секретных данных в сочетании с хорошо спроектированным алгоритмом. Независимо от того, является ли алгоритм публичным или нет, это не должно влиять на безопасность. Если у вас есть эффект, у вас есть небезопасный алгоритм, который вы можете выбросить.

+0

Привет, вы можете объяснить мне, как генерировать одну и ту же пару ключей для одного и того же входного параметра? Я уменьшаю безопасность сгенерированных ключей? –

+0

См. Мой обновленный ответ. – Robert