본문 바로가기
개념/Study

Linux 대칭 키 & 비대칭 키 암호화 문서 생성 하기

by Hwanii_ 2023. 12. 14.
728x90

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