RSA - Можете ли вы создать открытый ключ из закрытого ключа? - PullRequest
9 голосов
/ 15 июня 2011

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

Иначе, может ли открытый ключ быть создан только в то же время, что и закрытый ключ из какого-либо генератора ключей?

P.S. Быстрый Google не очень помог.

Ответы [ 5 ]

14 голосов
/ 15 июня 2011

Закрытый и открытый ключ создаются вместе.Кроме того, стандартный формат хранения для закрытого ключа RSA включает все поля открытого ключа, поскольку он полезен для оптимизированных реализаций и маскирования (защита от некоторых атак по побочному каналу).См. Сам стандарт RSA: PKCS # 1 .

Редактировать: вопрос был отредактирован, изначально он был только для RSA.Для другого асимметричного алгоритма не требуется, чтобы открытый ключ мог быть получен из закрытого ключа, и нет требования обратного.Для алгоритмов, основанных на дискретном логарифме (Диффи-Хеллман, Эль-Гамаль, DSA и варианты всех этих эллиптических кривых), открытый ключ легко вычисляется из закрытого ключа.Можно представить себе вырожденный RSA, в котором знание закрытого ключа не позволяет реконструировать открытый ключ, но для этого не требуется хранить несколько ключевых элементов, которые необходимы для хорошей производительности (более подробно, сохранение коэффициентов модуля RSA позволяетдля повышения скорости в 4 раза по китайской теореме об остатках, так что все хранят факторы).На более концептуальной основе открытый ключ, ну, в общем, открытый, поэтому предполагается, что «все» знают это;с практической точки зрения, формат хранения закрытого ключа почти всегда включает в себя условия хранения открытого ключа или, по крайней мере, достаточное количество данных для восстановления открытого ключа.

8 голосов
/ 15 июня 2011

Да, вы можете сделать это (для некоторых, возможно, не всех, схем pkc). Из файла man ssh-keygen:

-y Чтение файла секретного ключа и печать открытого ключа.

2 голосов
/ 15 июня 2011

Зависит от алгоритма. С RSA вы не можете, с EC вы можете. Однако открытый ключ обычно всегда хранится вместе с закрытым ключом (хотя, конечно, не наоборот), так что это на самом деле не проблема (если у вас есть закрытый ключ, тот же файл также включает в себя открытый ключ). ).

1 голос
/ 19 мая 2014

Извлечение открытого ключа RSA из личного ключа из командной строки

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

  1. Создание пары открытого личного ключа в домашнем каталоге без парольной фразы и комментария.

    ssh-keygen -t rsa -f ~/id_rsa -N '' -C ""

  2. Генерация открытого ключа в файл 'extract_public_key'

    ssh-keygen -y -f '/home/vagrant/id_rsa' > extracted_public_key

  3. Различают открытый ключ с файлом 'extract_public_key', игнорируя пробелы.

    diff -b id_rsa.pub extracted_public_key

Игнорирование пробелов в конце id_rsa.pub нет никакой разницы между открытым ключом и извлеченным ключом.

0 голосов
/ 10 марта 2019

На самом деле открытый ключ в основном создается вместе с закрытым ключом.

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

Все, что вам нужно сделать, это извлечь открытый ключ из частногоключ, как показано ниже:

Извлечение открытого ключа из закрытого ключа: опция

ssh-keygen -f~/.ssh/test_rsa -y > ~/.ssh/test_rsa.pub

-f указывает файл ключа для отображения отпечатка пальца для * 1012Параметр * -y считывает файл закрытого ключа SSH и печатает открытый ключ SSH на стандартный вывод.Часть открытого ключа перенаправляется в файл с тем же именем, что и закрытый ключ, но с расширением .pub.

ПРИМЕЧАНИЕ: Если для ключа установлен пароль, пароль потребуется для генерации открытого ключа.

...