Назад | Перейти на главную страницу

Восстановить закрытый ключ SSH?

У меня есть ключ RSA (сгенерированный PuTTYgen), который настроен для входа в систему на нескольких машинах через SSH. Вернее, такой ключ у меня БЫЛ. (Компьютер, на котором он находился, разбился до такой степени, что потребовалась переустановка XP. Файл с секретным ключом зашифрован файловой системой, и теперь, когда он в основном похож на другую ОС и пользователя, что бы XP ни делала расшифровать ключ, по-видимому, больше нельзя.)

У меня остался OpenSSL-совместимый base64 открытого ключа (с одной из машин, все еще настроенных на прием паролей) и, конечно же, парольная фраза для ключа. У меня может (!) Все еще быть старая резервная копия реестра, сделанная до того, как машина умерла, но мне придется ее искать. В любом случае, похоже, что невозможно восстановить сам ключевой файл. (Если это является возможно, это было бы здорово. Но перспективы пока не очень хорошие.)

Есть ли способ восстановить закрытый ключ, если я не могу восстановить сам файл, который его содержал? Возможно, импортировав открытый ключ в PuTTYgen или openssl и сделав с ним что-то обратное? Связь со всеми вовлеченными администраторами и отправка им новых ключей может быть проблемой, так что это в значительной степени последнее средство.

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

Редактировать:
Предупреждение! Впереди упрощенное объяснение!

Предполагая, что у вас есть ключи RSA (наиболее распространенные), в открытом ключе есть два числа: n и e. Закрытый ключ имеет то же n и другое число d. Первоначально было два огромных простых числа p и q, которые использовались для вычисления n, d и e, чтобы n и e могли зашифровать текст; n и d могли расшифровать шифрованный текст. У вас есть n и e. Вы можете множить n, чтобы вычислить p и q; проблема в том, что n - чертовски огромное число с множеством возможных чисел p и q. В настоящее время нет известного способа сделать это быстро; Я не уверен, что хакеры вообще позаботились о написании инструментов, чтобы попробовать. Так что, по сути, это реально невозможно.

Когда вы назначаете парольную фразу ключу, он просто выполняет простое шифрование закрытого ключа, хранящегося на вашем компьютере. На открытый ключ это никак не влияет. Парольные фразы относительно легко взломать по сравнению с самим закрытым ключом; поэтому не следует полагаться на него для обеспечения первичной безопасности (вы должны хранить свой закрытый ключ только в безопасных местах).

Я почти уверен, что нет способа восстановить закрытый ключ, если у вас есть открытый ключ - в противном случае это было бы большой угрозой безопасности, потому что любой, у кого есть открытый ключ, сможет определить по нему закрытый ключ.

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

Восстановить закрытый ключ из открытого ключа абсолютно невозможно. Вы можете сгенерировать паблик из приватного, но не наоборот. Это совершенно невозможно, и это тоже суть асимметричного шифрования.

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

Если у вас нет физического доступа к машинам, это будет для вас практически невозможно.

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

Дуг Пан