ssh-rsa 공개 키를 사용하여 텍스트를 암호화하는 방법은 무엇입니까?


55

시나리오는 다음과 같습니다. Bob이라고 가정하면 Alice의 메시지를 암호화하고 싶습니다. 내가 가진 유일한 공개 키는 ssh-rsa다음과 같이 그녀의 id_rsa.pub입니다.

SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAyb + qaZLwgC7KAQJzYikf3XtOWuhlMXVv2mbTKa5dp0sHPRd2RaYnH8ZRkt7V8bjqct1IHGCuxI8xyoEp4at3FHe6j9RfWiarc1ldLUCmTtryI0GGpRs6Zpvqdtpcq / 1NCIYtUQAvsImyEFCtqmB2suDo1ZSllZQ0x9TCKHdCANYIOeaniuFzR57POgE3vxk / r6PO24oy8BIWqxvi29r0n1LUigVBJ7CmMHuzb4 / i1v6PxV1Lqnj6osPP9GpXpsh8kLUCby + / + KcmcryWNdSP0esyCdDxkA5hlIuk8qL1vzsyPluUQuc0BEHu6nuw8WQlCF1mFFxcpJL MhWEr01WIIw == sikachu@Sikachus-Notebook.local

따라서이 공개 키를 사용하여 문자열을 암호화하여 id_rsa(에서 생성 된 ssh-keygen) 개인 키를 사용 하여 메시지를 해독 할 수있는 방법이 있습니까?

( .pem키 페어 파일을 사용하는 경우 즉시 가능하다는 것을 알고 있습니다. openssl지원 하는 형식으로 변환하는 방법을 보여 주면 좋을 것입니다!)

감사!


5
당신과 앨리스는 정말 gpg를 조사해야합니다 ... gnupg.org ; D
tink

4
하하하! 그러나 내가 가지고있는 시나리오는 ssh-rsa이미 공개 키에 액세스 할 수 있으며 수신자가 gpg를 설치하도록 요청하는 등의 복잡성 계층을 추가하고 싶지 않다는 것입니다.
sikachu

답변:


71

ssh 공개 키를 PEM 형식으로 변환 할 수 있습니다 ( 'openssl rsautl'에서 읽을 수 있음).

예:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

'myMessage.txt'가 공개 키 암호화되어야하는 메시지라고 가정합니다.

그런 다음 일반적으로 하듯이 openssl rsautl 및 변환 된 PEM 공개 키를 사용하여 메시지를 암호화하십시오.

openssl rsautl -encrypt -pubin -inkey id_rsa.pem.pub -ssl -in myMessage.txt -out myEncryptedMessage.txt

결과는 'myEncryptedMessage.txt'의 암호화 된 메시지입니다.

Alice의 개인 키로 암호 해독 작업을 테스트하려면 :

openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in myEncryptedMessage.txt -out myDecryptedMessage.txt

5
이것을 GitHub에서 사용자 공개 키를 가져 오는 스크립트에 넣었습니다. github.com/twe4ked/catacomb
twe4ked

이것은 나를 위해 작동하지 않습니다. 내가 ssh-keygen이없는 -m옵션을 선택합니다. 교체 (나는. 그것의 버전에 SSH-Keygen은을 요청하는 방법을 알아낼 수 없습니다) -m와 함께 -t작동하지만 다음 openssl"공개 키를로드 할 수 없습니다"나에게 알려줍니다. stackoverflow.com/questions/18285294/…를 참조하십시오 .
Jason Gross

1
Jason이 MaxOS Mavericks와 동일한 문제입니다. keygen 사용 가능 키 생성을 위해 -m을 -t로 대체했습니다.
Robert Christian

8
파일이 충분히 작은 경우에만 작동합니다. 예를 들어 200 바이트. stackoverflow.com/questions/7143514/…를
h__

1
@hyh가 말한 것처럼, 이것은 입력 파일이 작은 경우에만 작동합니다 (행은 약 254 바이트 정도입니다). 그렇지 않으면 "rsa 루틴 : RSA_padding_add_SSLv23 : data가 키 크기에 비해 너무 큽니다 : 2 / src / crypto / rsa / rsa_ssl.c : 73 "오류
Devy

1

하는 시도해 ssh를-볼트 는 "볼트의 내용보기"를 해독하고 SSH-RSA 개인 키 "볼트를 만들"암호화하기 위해 SSH-RSA 공개 키를 사용


-3

자신의 암호를 굴릴 필요가없는 매우 명백한 방법을 사용하십시오.

Alice는 alice@bobserver.com으로 sftps를 사용하여 alice 계정에 공개 키 인증 만 허용하도록 설정됩니다. ssh의 속성은 Alice만이 인증 할 수 있도록합니다. DH를 사용하는 초기 통신은 alice와 bob 모두에게 알려진 값을 생성하지만 중간에는 어떤 사람에게도 알려진 값을 생성하지 않으므로 인증을 통해 사용될 수 있기 때문에 (ssh1을 비활성화하고 올바른 설정을 요구한다고 가정 할 때) 중간 공격에있는 사람도 실패합니다. 응답이나 MITM 공격이 커뮤니 카 티노의 내용을 볼 수 없습니다.

Alice sftp를 상자에 넣고 파일을 다운로드하십시오.


9
openssl을 사용하여 자체 암호화를 어떻게 롤링합니까?
cmc

예를 들어, 메시지 크기로 인해 RSA를 사용하여 1024 자 문자열을 암호화하는 것은 실패합니다. 이 문제를 극복하기 위해 구현자는 특히 메시지가 반복되는 경우 불안정한 상황에 처해 있습니다. RSA를 사용하여 반복 할 가능성이없는 새로운 대칭 암호 키 및 초기화 벡터를 암호화하는 것이 더 안전하므로 메시지를 보낼 때마다 고유 한 암호 텍스트를 생성하고 대칭 암호 속도를 얻고 암호 및 일반 텍스트의 양을 줄입니다. RSA 키를 공격합니다. 이해가 되길 바랍니다. :)
Sam

이 방법을 사용하려면 Bob이 Alice를 신뢰하거나 bobserver.com을 잠 가서 Alice가 악성 작업을 수행 할 수 없도록해야합니다.
mwfearnley

앨리스는 기본 수학이 자신의 롤이라는 의미에서 해독하기 위해 상당한 양의 비정상적인 연산을 던져야한다는 의미에서 자신의 롤링을 수행합니다. 이것은 API 또는 이론적 관점보다는 명령 줄 유틸리티 측면에서 요청되었으므로 개인은 실제로 ssh 위에 새로운 프로토콜을 피기 백하지 않고 구체적인 정보를 전송하기를 원한다고 가정했습니다. 실제로 sftp는 훨씬 쉬워 보였으므로 서버를 내려다보고, Alice를 신뢰하거나 나중에 서버를 닦아야합니다.
Peter Gerdes

위의 코드에서 Alice가이 특이한 메시지를 해독하는 방법을 정확하게 설명하고 Charlie의 MITM 메시지를 안전하게 해독하는 명령 시퀀스를 제공하는 이메일을 가로채는 누군가에게 실제로 취약한 것 같습니다 (openssl 명령은 마술과 같습니다) 서버 아이디어는 많은 사람들이 익숙한 표준 명령을 선호 하여이 모든 것을 피하고 bob이 컴퓨터에서 실행하면 암호화하고 있습니다. 분명히 가장 좋은 대답은 위협 모델에 따라 다르지만 q 컨텍스트에서 더 나은 결과를 제공 할 것입니다.
Peter Gerdes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.