OpenSSL에서 제공하는 대칭키암호(Symmetric Ciphers)
- Blowfish, CAST5, DES, 3-DES, IDEA(PGP에서 사용), RC2, RC4, RC5, AES(Advanced Encryption Standard)
암호알고리즘 운영모드
- CBC,(Cypher Block Chaining) CFB(Cypher FeedBack), ECB(Electric Code Book), OFB(Output FeedBack)
CBC와 ECB의 차이
- ECB는 평문 블록들이 독립적으로 암호화됨.
- ECB는 전송중에 오류가 발생해도. 오류가 발생한 블록에만 영향을 미침
- CBC는 선행하는 블록의 암호화된 결과가 있어야만 현재 블록을 암호화할 수 있음.
- CBC는 전송중에 오류가 발생하면, 오류가 발생한 블록 뒤는 모두 손상됨.
enc
- DES, 3-DES 같은 암호알고리즘에 접근하기 위한 메인 커맨드
- 각 암호알고리즘은 독립적으로 커맨드로 사용 가능.
- openssl help
- enc 커맨드에서 사용가능한 암호알고리즘 옵션들
- openssl enc -help
- enc 커맨드의 기타 상세 옵션들
base64
- enc 커맨드의 옵션
- 이진데이터를 아스키 값으로 인코딩 해주는 역할을 함.
- 아스키 값을 이진데이터로 디코딩 해주는 역할을 함.
사용자가 입력한 패스워드를 토대로 키와, 초기화벡터(IV)를 생성함.
- 키는 데이터를 암호화하거나 복호화할때 사용된다.
salt
- 8바이트의 난수 값.
- 패스워드는 8바이트 솔트값과 결합됨. 솔트값은 운영체제마다 다른것으로 알고 있음.
- MD5로 앞서 솔트값과 결합된 패스워드를 해시하여 키값으로 사용.
---------------------------------------------------------------------------------------------------------------------------
- 우선적으로 ex.txt 에 내용을 원하는 문구를 삽입하고 저장.
- -in 옵션으로 암호화팔 파일 선택, 그리고 -out 옵션으로 암호화한 결과는 ex.bin파일로출력.
- 해당 명령을 수행하면 PASSWORD를 입력하라는 창이 나옴.
- des 암호알고리즘을 사용. 그리고 -salt 옵션을 통해 des에 사용될 키값은 솔트값과 결합하여 만들어줌.
- 생성된 ex.bin 파일 확인.
- 솔트된 패스워드라고 나와있고, 2진데이터라 깨져있는 것을 확인할 수 있음.
base64로 인코딩할 순 있지만 해당 과정에선 하지않았음.
- -d 옵션으로 복호화하겠다 설정해주고, 마찬가지로 -in 옵션으로 복호화할 암호문 선택하고 -out 옵션으로 출력 지정.
- 초
- 원문 파일과 복호화한 파일 비교
- diff명령으로 아무 반응이 없는 것을 보면, 두 파일에 다른점이 없음.
-----------------------------------------------------------------------------------------------------------------------------
- 아까 암호화한 파일은 2진데이터라 파일이 깨졌음.
- 하지만 base64 인코딩으로 아스키값을 변경해 알아보게 할 수 있음.
- openssl의 base64 커맨드로 인코딩 가능, -in과 -out 은 앞서 설명했으니 생략
- base64로 인코딩을 했을 시, 복호화 전에 최우선적으로 base64로 다시 디코딩을 주어야함.
- 우선적으로 인코딩해주었던것을 다시 base64로 디코딩
- 다시 openssl enc 로 암호문 복호화
-원문이랑 plain.txt파일이 차이점이 없음.
'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 |