검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/네트워크와 보안
참조 원문 : Using OpenSSL to encrypt messages and files on Linux

  OpenSSL로 키를 만들어 사용하는 건 많이 볼 수 있어도 직접 암호화에 사용하는 경우는 은근히 없죠. 여기서는 OpenSSL로 파일을 직접 암호화하는 방법과 복호화하는 방법을 알아보겠습니다.

1. 메시지 암복호화
  파일을 암호화하기 전에 메시지를 암복호화하는 방법을 먼저 알아보겠습니다. 아래는 문자열을 Base64 인코딩으로 암호화하는 명령어입니다.
$ echo "abc" | openssl enc -base64
YWJjCg==
  출력 결과가 암호화된 결과입니다. 복호화할 땐 -d 옵션을 붙입니다.
$ echo "YWJjCg==" | openssl enc -base64 -d
  근데 키를 사용하지 않은 암호화이므로 사실상 의미가 없죠. 키를 사용한 암호화 예는 다음과 같습니다.
$ echo "OpenSSL" | openssl enc -aes-256-cbc -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX1/JemLPx7cmSW3Ik8M2Od7kSRvTW+BuI8w=
  키를 사용한 복호화 예는 아래와 같습니다.
echo "U2FsdGVkX1/JemLPx7cmSW3Ik8M2Od7kSRvTW+BuI8w=" | openssl enc -aes-256-cbc -d -a
enter aes-256-cbc decryption password:
OpenSSL
  파일로 입출력하는 방법은 아래와 같습니다.
$ echo "OpenSSL" | openssl enc -aes-256-cbc > openssl.dat
$ openssl enc -aes-256-cbc -d -in openssl.dat

2. 파일 암복호화
  위 방법과 비슷한데 차이가 있다면 echo 대신 -in 옵션과 -out 옵션으로 암복호할 파일을 선택하는 것입니다.
$ openssl enc -aes-256-cbc -in /etc/services -out services.dat
$ openssl enc -aes-256-cbc -d -in services.dat > services.txt
enter aes-256-cbc decryption password:

3. 디렉토리 암복호화
  그냥 tar로 묶어서 넘기고, 넘기받아 푸는 방법입니다.
# tar cz /etc | openssl enc -aes-256-cbc -out etc.tar.gz.dat
tar: Removing leading `/' from member names
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

# openssl enc -aes-256-cbc -d -in etc.tar.gz.dat | tar xz
enter aes-256-cbc decryption password:

4. 공개키와 개인키 사용방법
  먼저 개인키와 공개키를 생성합니다.
개인키를 생성
$ openssl genrsa -out private_key.pem 1024
Generating RSA private key, 1024 bit long modulus
............................++++++
..........++++++
e is 65537 (0x10001)

개인키를 이용해 공개키를 생성
$ openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout
writing RSA key
공개키로 암호화하는 방법은 아래와 같습니다.
$ openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat
개인키로 복호화하는 방법은 아래와 같습니다.
$ openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out new_encrypt.txt
2013/07/07 13:07 2013/07/07 13:07