답변:
에서 하려면 openssl 설명서 ( openssl
매뉴얼 페이지), 검색 RSA
, 당신은 RSA 암호화를위한 명령이라고 볼 수 있습니다 rsautl
. 그런 다음 rsautl
매뉴얼 페이지 를 읽고 구문을 확인하십시오.
echo 'Hi Alice! Please bring malacpörkölt for dinner!' |
openssl rsautl -encrypt -pubin -inkey alice.pub >message.encrypted
기본 패딩 구성표 는 원래 PKCS # 1 v1.5 (여전히 많은 프로 코톨에서 사용됨)입니다. openssl은 OAEP (현재 권장) 및 원시 암호화 (특별 상황에서만 유용)도 지원합니다.
openssl을 직접 사용하는 것이 대부분 연습입니다. 실제로는 gpg (RSA를 사용하지만 메시지를 직접 암호화하지는 않음) 와 같은 도구 를 사용합니다.
openssl
명령 줄 도구는 여러 명령이 혼합되어 있습니다. 대부분 인증서를 조작하는 인증서 중 일부는 유용 할 수 있지만 구문과 매개 변수가 기발하기 때문에 올바르게 사용하기가 어렵습니다. 와 같은 일부 rsautl
는 훌륭하지만 유용한 기능을 제공하지 않으며 원시 암호화 기본 요소 만 노출합니다. 예를 들어 RSA 암호화는 하이브리드 암호화를 위해 대칭 키를 암호화하는 데만 사용됩니다. 와 같은 일부 enc
는 안전하게 사용하기가 어렵고 존재하지 않으면 세상이 더 나아질 것입니다.
먼저 좋은 암호화를 원한다면 GnuPG를 살펴보십시오 . 그러나 실험을하고 작동 방식을 배우려면 RSA 가 무엇인지 이해해야합니다 . RSA는 임의의 문자열을 암호화하도록 설계되지 않았으며 정수를 암호화하는 알고리즘입니다. 특히, 0에서 n-1 사이의 정수. 여기서 n은 공개 키의 모듈러스 값입니다. 1024 비트 인 RSA 키에 대해 이야기 할 때, 모듈러스를 이진수로 저장하려면 1024 비트가 필요합니다. 이것이 RSA가 DES 또는 AES 와 같은 대칭 키 암호와 함께 사용되는 이유 중 하나입니다.. AES에 대해 임의의 256 비트 키를 생성하고 1024 비트 RSA 공개 키로 해당 키를 암호화 할 수 있습니다. 그런 다음 개인 키에 액세스하는 사람은 누구나 대칭 키를 추출하고 AES로 메시지를 디코딩 할 수 있습니다. RSA의 전체 표준을 PKCS # 1 이라고합니다 .
또한 DES와 AES는 블록 암호입니다. 특정 크기의 블록으로 만 데이터를 암호화합니다. DES는 64 비트 블록을 사용하고 AES는 128 비트 블록을 사용합니다. 블록 이상을 암호화하려면 CBC 또는 CTR과 같은 작동 모드 를 사용해야합니다 . 이 모드는 블록 모드 암호를 사용하여 비트 스트림을 암호화하는 방법을 지정합니다.
마지막으로, 수신중인 데이터를 확인하는 것이 중요합니다. 공격자는 전송중인 데이터를 읽을 수 없지만 무결성이나 신뢰성이 데이터 스트림에 적용되지 않으면 탐지없이 비트를 뒤집을 수 있습니다. 공격자는 포트 443에 대한 SSL 연결이 웹 페이지 요청 일 가능성이 높다는 것을 쉽게 추측 할 수 있으며 나머지 암호화를 방해하지 않고 GET /
비트 변경을 뒤집을 수 PUT /
있습니다. 무결성에 대한 간단한 접근 방식은 끝에 MD5 또는 SHA-1 합계를 추가하는 것이지만 데이터 신뢰성이 아닌 데이터 무결성 만 제공합니다. 데이터 스트림을 완전히 알고있는 사람이라면 누구나 정확한 합계를 생성 할 수 있습니다. 더 안전한 접근 방식은 HMAC 와 같은 키 해시를 사용하는 것입니다 무결성에 추가하여 데이터 인증을 제공하기 위해 비밀 키에 대한 지식이 필요합니다.
아래에서 나열된 알고리즘 또는 RSA 중 원하는 알고리즘을 지정할 수 있습니다 (OpenSSL에서 RSA에 사용하는 정확한 이름을 모르더라도)
"openssl enc -help"를 사용하여 시스템에서 지원되는 암호 목록을 가져 와서 인수로 전달하십시오. 예 : "-aes256"
내 시스템에는 적어도 해당 이름으로 RSA가 없습니다.
S / MIME 메시지를 어떻게 암호화합니까?
누군가 자신의 공개 인증서를 보내서 메시지를 암호화하도록 요청한다고 가정 해 봅시다. 그녀의 인증서를 her-cert.pem으로 저장했습니다. 회신을 my-message.txt로 저장했습니다.
RC2-40 암호화는 상당히 약하지만 기본값을 얻으려면 openssl에 메시지와 인증서가있는 위치를 알려주십시오.
openssl smime her-cert.pem -encrypt -in 내 메시지 .txt
원격 통신원에게 강력한 SSL 툴킷이 있다고 확신하는 경우 트리플 DES와 같은 강력한 암호화 알고리즘을 지정할 수 있습니다.
openssl smime her-cert.pem -encrypt -des3 -in-my-message.txt
기본적으로 메일 헤더를 포함하여 암호화 된 메시지는 표준 출력으로 전송됩니다. -out 옵션 또는 쉘을 사용하여 파일로 경로 재 지정하십시오. 또는 훨씬 까다로운 경우 출력을 직접 sendmail로 파이프하십시오.
openssl smime her-cert.pem \
-encrypt \
-des3 \
-in my-message.txt \
-from 'Your Fullname <you@youraddress.com>' \
-to 'Her Fullname <her@heraddress.com>' \
-subject 'My encrypted reply' |\
sendmail her@heraddress.com
S / MIME 메시지에 어떻게 서명합니까?
전체 메시지를 암호화 할 필요는 없지만 수신자가 메시지의 무결성을 보장 할 수 있도록 서명하려는 경우 레시피는 암호화와 비슷합니다. 가장 큰 차이점은받는 사람의 인증서로 서명 할 수 없으므로 자신의 키와 인증서가 있어야한다는 것입니다.
openssl smime \
-sign \
-signer /path/to/your-cert.pem \
-in my-message.txt \
-from 'Your Fullname <you@youraddress.com>' \
-to 'Her Fullname <her@heraddress.com>' \
-subject 'My signed reply' |\
sendmail her@heraddress.com
( http://www.madboa.com/geek/openssl/에서 )
(er ... 모든 백 슬래시-줄 바꿈을 피해야합니다. 여기 편집 상자에 잘 표시되므로 무슨 일이 일어나고 있는지 잘 모르겠습니다!
openssl enc
이므로 RSA를 찾지 못했습니다 enc
. 예, openssl의 옵션은 잘 정리되어 있지 않습니다. 비대칭 알고리즘에는 rsa
/ dsa
/ dh
키 조작, rsautl
/ dsautl
암호화 / 암호 해독 / 확인 / 서명 및 genrsa
/ gendsa
/ gendh
키 생성 명령이 있습니다.
openssl
있습니까?