Linux RHEL 8 환경에서 대칭키와 비대칭키 개념을 활용 해서 암호화 문서를 생성해보자.
대칭키 Command :
# 평문의 텍스트가 담긴 plaintext.txt 파일 생성.
echo 'This text file name is plaintext.txt' > plaintext.txt
# openssl을 사용 해서 대칭키 방식으로 plaintext.txt를 암호화 하고,
# encryption_plaintext.bin이라는 파일에 암호화된 plaintext.txt 파일을 저장.
openssl enc -e -des3 -salt -in plaintext.txt -out encryption_plaintext.bin
# openssl을 사용 해서 대칭키 방식으로 encryption_plaintext.bin을 복호화 하고,
# decryption_plaintext.txt 파일에 저장.
openssl enc -d -des3 -in encryption_plaintext.bin -out decryption_plaintext.txt
[ 참고 ]
1) echo 'This text file name is plaintext.txt' > plaintext.txt
echo :
주어진 텍스트를 출력 하는 명령어 이다.
> :
리다이렉션 연산자로 echo 명령어와 > 명령어 사이에 작성된 텍스트를 파일에 새로 작성 한다.
> 파일명.확장자명 :
echo 명령어를 사용 해서 작성된 텍스트를 저장할 파일의 이름 이다.
새로운 파일이 생성 되거나, 기존에 존재 하는 파일이면 해당 파일을 덮어 씌운다.
2) openssl enc - e -des3 -salt -in plaintext.txt -out encryption_plaintext.bin
openssl :
OpenSSL 명령어를 실행 하는 명령어 이다.
OpenSSL은 암호화 및 복호화 / 서명 및 인증서 관리 등을 수행 하는 오픈 소스 보안 도구 이다.
enc :
OpenSSL에서 제공 하는 암호화 및 복호화 서비스를 사용 하기 위한 옵션 이다.
-e :
암호화 모드를 나타내는 옵션 이다.
여기서는 텍스트를 암호화 하므로 -e가 사용 된다.
-des3 :
DES3 (Triple DES) 알고리즘을 사용해서 암호화 하는 옵션 이다.
DES3은 데이터를 세 번 반복해서 암호화를 하는 블록 암호화 알고리즘 이다.
-salt :
솔트 (salt) 값을 사용해서 암호화 하는 옵션 이다.
솔트는 보안을 강화 하기 위해 사용 되는 임의의 값을 의미 한다.
-in plaintext.txt :
암호화를 진행할 원본 텍스트 파일을 지정 하는 옵션 이다.
-out encryption_plaintext.bin :
암호문이 저장될 파일의 이름을 나타내는 옵션 이다.
3) openssl enc -d -des3 -in encryption_plaintext.bin -out decryption_plaintext.txt
openssl :
OpenSSL 명령어를 실행 하는 명령어 이다.
OpenSSL은 암호화 및 복호화 / 서명 및 인증서 관리 등을 수행 하는 오픈 소스 보안 도구 이다.
enc :
OpenSSL에서 제공 하는 암호화 및 복호화 서비스를 사용 하기 위한 옵션 이다.
-d :
복호화 모드를 나타내는 옵션 이다.
여기서는 암호문을 해독 하기 위해 -d가 사용 된다.
-des3 :
DES3 (Triple DES) 알고리즘을 사용해서 복호화 하는 옵션 이다.
DES3은 데이터를 세 번 반복해서 암호화를 하는 블록 암호화 알고리즘 이다.
암호화를 할 때 사용했던 동일한 알고리즘을 지정 한다.
-in encryption_plaintext.bin :
복호화할 암호문이 저장된 파일을 지정 하는 옵션 이다.
-out decryption_plaintext.txt :
복호화된 텍스트가 저장될 파일의 이름을 나타내는 옵션 이다.
비대칭키 Command :
# RSA 방식으로 비대칭키의 개인키 (Private Key) 를 생성.
# 이때, 이 개인키의 이름을 private.pem 이라고 하고, 1024 bit의 길이를 가지게 함.
openssl genrsa -out private.pem 1024;
# 생성한 개인키에 대한 공개키 (Pulbic Key) 를 생성.
# private.pem 이라는 개인키에 대한 공개키를 public.pem 이라는 이름으로 생성.
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
# 공개키로 암호화하고, 개인키로 복호화 하기 위한 파일 생성.
echo 'I love Coding Hahaha' > testFile.txt
# 특정 파일을 공개키로 암호화 하기.
openssl rsautl -encrypt -inkey public.pem -pubin -in testFile.txt -out encryption_testFile.ssl
# 공개키로 암호화된 특정 파일을 개인키로 복호화 하기.
openssl rsautl -decrypt -inkey private.pem -in encryption_testFile.ssl -out decryption_testFile.txt
[ 참고 ]
1) openssl genrsa -out private.pem 1024;
genrsa :
RSA 알고리즘으로 개인 키를 생성 하는 명령어.
1024 :
RSA 개인 키의 비트 길이를 지정 하는 옵션.
위의 경우에는 1024 비트의 RSA 알고리즘으로 생성된 개인 키.
높은 수준의 보안일 수록 더 큰 비트 길이 사용 가능.
2) openssl rsa -in private.pem -out public.pem -outform PEM -pubout
-outform PEM :
출력 형식을 지정 하는 옵션.
PEM 형식으로 지정 되고 있음.
PEM은 Privacy Enhanced Mail의 약어.
텍스트 기반의 ASCII (아스키) 형식으로 개인 키 및 공개 키를 표현 하는 표준 형식.
-pubout :
공개 키를 출력 하는 옵션.
위의 옵션이 지정 되면 개인 키에서 공개 키로 변환 됌.
3) echo 'I love Coding Hahaha' > testFile.txt
생략
4) openssl rsautl -encrypt -inkey public.pem -pubin -in testFile.txt -out encryption_testFile.ssl
rsautl :
RSA 알고리즘을 사용 해서 데이터를 암호화 하거나 복호화 함.
-encrypt :
데이터를 암호화 하는 옵션.
이 옵션을 사용 하면, -in으로 지정된 파일의 내용이 RSA 공개 키를 사용 해서 암호화 됌.
-inkey public.pem :
암호화에 사용할 공개 키가 저장된 파일의 이름을 나타내는 옵션.
-pubin :
공개 키를 사용 해서 암호화 하는 것을 명시 하는 옵션.
이 옵션이 지정되어야 -inkey로 지정된 파일이 공개 키로 취급 될 수 있다.
-out :
암호문이 저장될 파일의 이름을 나타내는 옵션.
5) openssl rsautl -decrypt -inkey private.pem -in encryption_testFile.ssl -out decryption_testFile.txt
rsautl :
RSA 알고리즘을 사용 해서 데이터를 암호화 하거나 복호화 함.
-decrypt :
데이터를 복호화 하는 옵션.
이 옵션을 사용 하면, -in으로 지정된 파일의 내용이 RSA 개인 키를 사용 해서 복호화 됌.
-inkey private.pem :
복호화에 사용할 개인 키가 저장된 파일의 이름을 나타내는 옵션.
-out :
복호화된 텍스트가 저장될 파일의 이름을 나타내는 옵션.
'개념 > Study' 카테고리의 다른 글
OJT [1] (1) | 2023.12.21 |
---|---|
ISVA 내부 SSL 인증서 관리 (0) | 2023.12.15 |
SSL (Secure Sockets Layer) / TLS (Transport Layer Security) (0) | 2023.12.13 |
HTTP vs HTTPS [2] & SSL (0) | 2023.12.12 |
HTTP vs HTTPS [1] & SSL (4) | 2023.12.11 |