공개키 기반암호
1. Diffie-Hellman:
- 대칭키 교환을 위한 용도
2. DSA(Digital Signature Algorithm)
- 서명을 위한용도론 사용 가능하지만 암호화에는 사용할 수 없다.
3. RSA
- 현재 가장 많이 사용하는 공개키 알고리즘
- 서명과, 암호화 모두 가능
개인키로 서명. 자기 자신만 서명할 수 있음. 나만 암호화(서명)한 것을 모든 사람들이 복호화 할 수 있음.
암호화는 공개키로 사용. 개인키를 가지고있는 한사람만 복호화 가능
RSA
RSA 암호화와 복호화
-----------------------------------------------------------------------------------------------------------------------------------
- RSA의 개인키 생성
genrsa 커맨드는 RSA의 개인키를 만드는데 사용. -des3 옵션은 개인키를 3중DES로 암호화 한다는 뜻.
또한, 2048bit의 키길이를 갖겠다는 의미
- RSA의 공개키 생성
rsa 커맨드의 -in옵션으로 생성된 개인키(privatekey.pem)를 기반으로 공개키를 추출하는데, -outform 옵션으로 출력포맷은 PEM형식으로 정하고 -out 옵션으로 출력파일을 지정.
- RSA의 공개키를 이용한 암호화
rsautl 커맨드는 생성된 개인키,공개키로 암복호화, 서명, 검증 하는데 필요함.
-public -inkey 옵션으로 암호화에 사용될 공개키를 지정해주고 plain.txt를 암호화하여 cipher.txt로 출력해주겠다는 의미
- RSA 개인키를 이용한 복호화
-inkey 옵션으로 복호화에 사용할 개인키를 지정해주고, 앞서 암호화한 cipher.txt를 복호화하여 plainRcv.txt로 출력해줌.
RSA 서명과 검증
-----------------------------------------------------------------------------------------------------------------------------------
- RSA 개인키를 이용한 서명
-sign옵션과 -inkey옵션을 이용해서 plain.txt를 서명해 sign.bin파일로 출력해줌.
-RSA 공개키를 이용한 서명 검증
-verify옵션으로 검증하겠다는 옵션을 설정. -public -inkey 옵션으로 공개키를 명시. 마지막으로 서명한 sign.bin을 검증하여 palin.rec파일로 출력
RSA with base64
RSA 암호화와 복호화
-----------------------------------------------------------------------------------------------------------------------------------
- RSA의 개인키 생성
- RSA의 공개키 생성
- RSA의 공개키를 이용한 암호화
- 암호화하여 나온 2진데이터 형식인 암호문을 base64로 인코딩으로 아스키값으로 변경.
- 인코딩한 암호문은 다시 base64로 디코딩하여 2진데이터로 변경
- 디코딩한 값을 개인키로 복호화 하여 원본과 비교.
'Cyrpto > OpenSSL' 카테고리의 다른 글
[OpenSSL] 인증기관(CA) Root CA가 사용자에게 인증서 발급 (0) | 2021.11.24 |
---|---|
[OpenSSL] 인증기관(CA) (0) | 2021.10.21 |
[OpenSSL] 대칭키 암호 (0) | 2021.10.17 |
[OpenSSL] Message Digest (0) | 2021.10.16 |
[OpenSSL] 기본적인 openssl 사용법 (0) | 2021.10.16 |