Невозможно расшифровать закрытый ключ, хотя я знаю кодовую фразу

9

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

Я пытаюсь использовать стандартный метод:

openssl rsa -in ./id_rsa -out ./id_rsa.decrypted

Я думаю, что знаю парольную фразу, потому что, когда я введу неправильную фразу, я получу

Enter pass phrase for ./id_rsa:
unable to load Private Key
140256774473360:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:544:
140256774473360:error:0906A065:PEM routines:PEM_do_header:bad decrypt:pem_lib.c:483

« плохой дешифрование » довольно ясно. Теперь, когда я ввожу свою, казалось бы, хорошую фразу-пароль, я возвращаюсь:

Enter pass phrase for ./id_rsa:
unable to load Private Key
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=RSA
139662870623888:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
139662870623888:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:

Также не удалось загрузить ключ, но теперь это не удалось на парсере asn1, ничего о парольной фразе.

Можно ли как-нибудь получить незашифрованную версию ключа и использовать другие инструменты, чтобы увидеть, что не так с?

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

luk32
источник
Имя указывает на то, что файл, возможно, был сгенерирован ssh-keygen. Вы пытались использовать его ssh-keygenдля расшифровки? ssh-keygen -p -f keyfileизменит ключевую фразу для ключевого файла (он перезапишет файл, поэтому сначала создайте копию). Указав пустую фразу-пароль в качестве новой, она расшифрует файл.
kasperd
@kasperd Да, это говорит о неверной парольной фразе. Любой другой инструмент говорит, что это плохая фраза, кроме openssl. Но из поведения openssl я думаю, что это хорошо, я не использую их ключ в течение некоторого времени, но это один из моих «стандартных» паролей, так что он подойдет. Не ssh-keygenиспользует openssl под капотом?
luk32
@dawud Я попробовал, но я думаю, что этот инструмент предполагает, что ввод уже декодирован, не запрашивает фразу-пароль и сразу говорит «заголовок слишком длинный». Я думаю, что это следующий шаг, чтобы увидеть, что не так с ключом, после того , как я получу расшифрованную версию.
luk32
1
Я мог бы попросить копию файла и правильную фразу-пароль, чтобы воспроизвести симптомы. Но я мог видеть некоторые проблемы в этом подходе. Так что я просто догадываюсь здесь, и у меня нет хорошего способа проверить, сработают ли мои догадки, кроме как спросить вас.
Касперд
1
При тестировании вашей команды расшифровки openssl на заведомо поврежденном файле я получил ту же ошибку с правильным и неверным паролем. Это заставило меня усомниться в возможности того, что зашифрованный файл был поврежден с течением времени из-за случайных бит-клипов.
Касперд

Ответы:

9

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

Вы можете воспроизвести это следующим образом -

  1. Создать секретную фразу защищенного закрытого ключа
  2. Расшифруйте закрытый ключ, чтобы убедиться, что он работает.
  3. Измените один символ внутри файла, содержащего зашифрованный закрытый ключ.
  4. Попробуйте расшифровать это сейчас.
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Введите пароль для id_rsa:
написание ключа RSA
[testuser @ whitehat .ssh] $ ls -al id_rsa *
-rw -------. 1 testuser testuser 951 24 марта 15:01 id_rsa
-rw-RW-r--. 1 testuser testuser 887 24 марта 15:02 id_rsa.decrypted
-rw-р - r--. 1 testuser testuser 236 24 марта 14:52 id_rsa.pub
[testuser @ whitehat .ssh] $ vim id_rsa
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Введите пароль для id_rsa:
невозможно загрузить закрытый ключ
139900595279688: ошибка: 0D07207B: процедуры кодирования asn1: ASN1_get_object: слишком длинный заголовок: asn1_lib.c: 150:
139900595279688: ошибка: 0D068066: процедуры кодирования asn1: ASN1_CHECK_TLEN: неверный заголовок объекта: tasn_dec.c: 1306:
139900595279688: ошибка: 0D07803A: процедуры кодирования asn1: ASN1_ITEM_EX_D2I: вложенная ошибка asn1: tasn_dec.c: 381: тип = RSA
139900595279688: ошибка: 04093004: подпрограммы rsa: OLD_RSA_PRIV_DECODE: библиотека RSA: rsa_ameth.c: 115:
139900595279688: ошибка: 0D07207B: процедуры кодирования asn1: ASN1_get_object: слишком длинный заголовок: asn1_lib.c: 150:
139900595279688: ошибка: 0D068066: процедуры кодирования asn1: ASN1_CHECK_TLEN: неверный заголовок объекта: tasn_dec.c: 1306:
139900595279688: ошибка: 0D07803A: процедуры кодирования asn1: ASN1_ITEM_EX_D2I: вложенная ошибка asn1: tasn_dec.c: 381: тип = PKCS8_PRIV_KEY_INFO
139900595279688: ошибка: 0907B00D: процедуры PEM: PEM_READ_BIO_PRIVATEKEY: ASN1 lib: pem_pkey.c: 132:
[testuser @ whitehat .ssh] $ 

Информация о версии ОС и openssl

[testuser @ whitehat /] $ lsb_release -a
LSB версия:: core-4.0-amd64: core-4.0-noarch: graphics-4.0-amd64: graphics-4.0-noarch: printing-4.0-amd64: печать-4.0-noarch
Идентификатор дистрибьютора: Научный
Описание: Scientific Linux release 6.2 (Carbon)
Релиз: 6.2
Кодовое название: Carbon
[testuser @ whitehat /] $ rpm -q openssl
OpenSSL-1.0.1e-30.el6_6.5.x86_64
Даниил Т.
источник
1

Я оказался здесь, потому что у меня была та же проблема, но моя была вызвана интерфейсом экспорта сертификатов AWS ACM. (Сертификаты частного CA могут быть экспортированы с парольной фразой)

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

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

Надеюсь, что это помогает кому-то ...

comfytoday
источник