암호를 알고 있지만 개인 키 이벤트를 해독 할 수 없습니다


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 파서에서 실패했습니다.

어떻게 든 암호화되지 않은 키 버전을 받고 다른 도구를 사용하여 무엇이 잘못되었는지 확인할 수 있습니까?

나는 뭔가 변경된 것이 있고 겉보기에 좋은 키가 파싱하지 못하는 가능한 원인을 발견했지만 모두 암호화되지 않은 버전에서 작동했습니다. 그러나 그들은 내가 키를 해독하는 것으로 보았던 유일한 방법은 위의 것입니다.


이름은 파일이에 의해 생성되었을 수 있음을 나타 ssh-keygen냅니다. ssh-keygen암호 해독에도 사용해 보셨습니까 ? ssh-keygen -p -f keyfile키 파일의 암호를 변경합니다 (파일을 덮어 쓰므로 먼저 사본을 작성하십시오). 빈 비밀번호 문구를 새 비밀번호 문구로 지정하면 파일이 해독됩니다.
kasperd

@kasperd 네, 암호가 틀립니다. 다른 모든 도구는 openssl을 제외하고는 나쁜 문구라고 말합니다. 그러나 openssl 동작에서 나는 그것이 좋은 것이라고 생각합니다. 나는 오랫동안 키를 사용하지 않았지만 그것은 내 "표준"암호 중 하나이므로 맞습니다. ssh-keygen후드 아래에서 openssl을 사용 하지 않습니까?
luk32

@dawud 나는 그것을 시도했지만이 도구는 입력이 이미 해독되었다고 가정하고 암호를 요구하지 않고 바로 "헤더가 너무 깁니다"라고 말합니다. 해독 된 버전을 얻은 후에 키에 어떤 문제가 있는지 보는 것이 다음 단계라고 생각합니다 .
luk32

1
증상을 재현하기 위해 파일 사본과 올바른 암호 문구를 요청할 수있었습니다. 그러나 나는 그 접근법에서 몇 가지 문제를 볼 수 있었다. 그래서 나는 단지 여기에서 추측하고 있으며, 내 추측이 당신에게 묻는 것 이외의 다른 것이 작동하는지 테스트 할 수있는 좋은 방법이 없습니다.
kasperd

1
고의로 손상된 파일에서 openssl 암호 해독 명령을 테스트 할 때 올바른 암호와 유효하지 않은 암호가 모두 같은 오류가 발생했습니다. 이로 인해 임의의 비트 충돌로 인해 시간이 지남에 따라 암호화 된 파일이 손상되었을 가능성이 의심됩니다.
kasperd

답변:


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 테스트 사용자 테스트 사용자 951 Mar 24 15:01 id_rsa
-rw-rw-r--. 1 명의 테스트 사용자 테스트 사용자 887 Mar 24 15:02 id_rsa.decrypted
-rw-r--r--. 1 명의 테스트 사용자 테스트 사용자 236 Mar 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 : header too long : 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 : Type = RSA
139900595279688 : 오류 : 04093004 : rsa 루틴 : OLD_RSA_PRIV_DECODE : RSA lib : rsa_ameth.c : 115 :
139900595279688 : 오류 : 0D07207B : asn1 인코딩 루틴 : ASN1_get_object : header too long : asn1_lib.c : 150 :
139900595279688 : 오류 : 0D068066 : asn1 인코딩 루틴 : ASN1_CHECK_TLEN : 잘못된 개체 헤더 : tasn_dec.c : 1306 :
139900595279688 : 오류 : 0D07803A : asn1 인코딩 루틴 : ASN1_ITEM_EX_D2I : nested asn1 error : tasn_dec.c : 381 : Type = PKCS8_PRIV_KEY_INFO
139900595279688 : 오류 : 0907B00D : PEM 루틴 : PEM_READ_BIO_PRIVATEKEY : ASN1 lib : pem_pkey.c : 132 :
[testuser @ whitehat .ssh] $ 

OS 및 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 : printing-4.0-noarch
배급 자 ID : Scientific
설명 : Scientific Linux 릴리스 6.2 (탄소)
출시 : 6.2
코드 명 : 카본
[testuser @ whitehat /] $ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64

1

같은 문제로 인해 여기에 왔지만 AWS ACM 인증서 내보내기 인터페이스로 인해 발생했습니다. (비밀번호로 개인 CA 인증서를 내보낼 수 있음)

내가 사용한 특정 암호 문구에 대한 문제 ... 문제의 원인을 정확히 모르지만 길이 또는 기호가 사용 된 것 같습니다.

최종 결과는 내가 예상 한 것과 다른 / 단축 암호 문구가있는 키가 있다는 것입니다.

누군가를 돕는 희망 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.