반응형
    
    
    
  OpenSSL을 사용하여 파일을 암호화하고 복호화하는 방법
OpenSSL은 암호화 및 복호화를 수행할 수 있는 강력한 도구 중 하나입니다.
테스트 환경
- 운영체제 버전 및 BIT
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ getconf LONG_BIT
64- OpenSSL 버전
$ openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017참고: 아래의 예제에서는 대칭 키(암호화 및 복호화에 사용되는 키)를 생성하고 파일을 암호화하는 방법을 설명합니다. 이 예제에서 사용된 대칭 암호화 알고리즘은 AES (Advanced Encryption Standard)입니다.
1. 대칭 키 생성
먼저 대칭 키를 생성합니다. 이 키는 암호화와 복호화에 사용됩니다. 아래 명령어로 대칭 키를 생성합니다.
openssl rand -base64 32 > mykey.txt이 명령은 32바이트 (256비트)의 무작위 키를 생성하고 "mykey.txt" 파일에 저장합니다. 이 키는 파일을 암호화하고 복호화하는 데 사용됩니다.
2. 파일 암호화
암호화하려는 파일과 생성한 대칭 키를 사용하여 파일을 암호화합니다. 아래 명령어를 사용합니다.
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.bin -pass file:mykey.txt- -aes-256-cbc: AES 알고리즘을 사용하여 256비트 대칭 암호화를 수행합니다.
- -salt: 암호화에 솔트를 사용하여 보안을 강화합니다.
- -in plaintext.txt: 암호화할 원본 파일입니다.
- -out encrypted.bin: 암호화된 결과를 저장할 파일입니다.
- -pass file:mykey.txt: 암호화에 사용할 대칭 키 파일을 지정합니다.
3. 복호화
암호화된 파일을 복호화하려면 다음 명령어를 사용합니다.
openssl enc -d -aes-256-cbc -in encrypted.bin -out decrypted.txt -pass file:mykey.txt- -d: 복호화 모드로 작동합니다.
- -aes-256-cbc: 이전과 동일한 AES 알고리즘 및 모드를 사용합니다.
- -in encrypted.bin: 복호화할 파일입니다.
- -out decrypted.txt: 복호화된 결과를 저장할 파일입니다.
- -pass file:mykey.txt: 복호화에 사용할 대칭 키 파일을 지정합니다.
728x90
    
    
    
  지원되는 Ciphers(Cipher Types|Valid ciphername values)
openssl enc -ciphers(? 알 수 없는 옵션으로 정상적인 옵션을 출력했다)
$ openssl enc -ciphers
unknown option '-ciphers'
options are
-in <file>     input file
-out <file>    output file
-pass <arg>    pass phrase source
-e             encrypt
-d             decrypt
-a/-base64     base64 encode/decode, depending on encryption flag
-k             passphrase is the next argument
-kfile         passphrase is the first line of the file argument
-md            the next argument is the md to use to create a key
                 from a passphrase. See openssl dgst -h for list.
-S             salt in hex is the next argument
-K/-iv         key/iv in hex is the next argument
-[pP]          print the iv/key (then exit if -P)
-bufsize <n>   buffer size
-nopad         disable standard block padding
-engine e      use engine e, possibly a hardware device.
Cipher Types
-aes-128-cbc               -aes-128-cbc-hmac-sha1     -aes-128-cbc-hmac-sha256
-aes-128-ccm               -aes-128-cfb               -aes-128-cfb1
-aes-128-cfb8              -aes-128-ctr               -aes-128-ecb
-aes-128-gcm               -aes-128-ofb               -aes-128-xts
-aes-192-cbc               -aes-192-ccm               -aes-192-cfb
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr
-aes-192-ecb               -aes-192-gcm               -aes-192-ofb
-aes-256-cbc               -aes-256-cbc-hmac-sha1     -aes-256-cbc-hmac-sha256
-aes-256-ccm               -aes-256-cfb               -aes-256-cfb1
-aes-256-cfb8              -aes-256-ctr               -aes-256-ecb
-aes-256-gcm               -aes-256-ofb               -aes-256-xts
-aes128                    -aes192                    -aes256
-bf                        -bf-cbc                    -bf-cfb
-bf-ecb                    -bf-ofb                    -blowfish
-camellia-128-cbc          -camellia-128-cfb          -camellia-128-cfb1
-camellia-128-cfb8         -camellia-128-ecb          -camellia-128-ofb
-camellia-192-cbc          -camellia-192-cfb          -camellia-192-cfb1
-camellia-192-cfb8         -camellia-192-ecb          -camellia-192-ofb
-camellia-256-cbc          -camellia-256-cfb          -camellia-256-cfb1
-camellia-256-cfb8         -camellia-256-ecb          -camellia-256-ofb
-camellia128               -camellia192               -camellia256
-cast                      -cast-cbc                  -cast5-cbc
-cast5-cfb                 -cast5-ecb                 -cast5-ofb
-des                       -des-cbc                   -des-cfb
-des-cfb1                  -des-cfb8                  -des-ecb
-des-ede                   -des-ede-cbc               -des-ede-cfb
-des-ede-ofb               -des-ede3                  -des-ede3-cbc
-des-ede3-cfb              -des-ede3-cfb1             -des-ede3-cfb8
-des-ede3-ofb              -des-ofb                   -des3
-desx                      -desx-cbc                  -id-aes128-CCM
-id-aes128-GCM             -id-aes128-wrap            -id-aes128-wrap-pad
-id-aes192-CCM             -id-aes192-GCM             -id-aes192-wrap
-id-aes192-wrap-pad        -id-aes256-CCM             -id-aes256-GCM
-id-aes256-wrap            -id-aes256-wrap-pad        -id-smime-alg-CMS3DESwrap
-idea                      -idea-cbc                  -idea-cfb
-idea-ecb                  -idea-ofb                  -rc2
-rc2-40-cbc                -rc2-64-cbc                -rc2-cbc
-rc2-cfb                   -rc2-ecb                   -rc2-ofb
-rc4                       -rc4-40                    -rc4-hmac-md5
-rc5                       -rc5-cbc                   -rc5-cfb
-rc5-ecb                   -rc5-ofb                   -seed
-seed-cbc                  -seed-cfb                  -seed-ecb
-seed-ofb[MAC] openssl enc -help 명령어
$ openssl enc -help
usage: enc -ciphername [-AadePp] [-base64] [-bufsize number] [-debug]
    [-in file] [-iv IV] [-K key] [-k password]
    [-kfile file] [-md digest] [-none] [-nopad] [-nosalt]
    [-out file] [-pass arg] [-S salt] [-salt]암호화하는 명령어(encryption)
-e Encrypt the input data (default)
$ file ldap-20210705.tar.gz
ldap-20210705.tar.gz: gzip compressed data, from Unix, last modified: Mon Jul  5 21:28:50 2021$ openssl enc -aes-128-cbc -in ldap-20210705.tar.gz -out enc_ldap-20210705.tar.gz -K 1234 -iv 00000000000000000000000000000000$ file enc_ldap-20210705.tar.gz
enc_ldap-20210705.tar.gz: data복호화하는 명령어(decryption)
-d Decrypt the input data
$ openssl enc -d -aes-128-cbc -in enc_ldap-20210705.tar.gz -out dec_ldap-20210705.tar.gz -K 1234 -iv 00000000000000000000000000000000$ file dec_ldap-20210705.tar.gz
dec_ldap-20210705.tar.gz: gzip compressed data, from Unix, last modified: Mon Jul  5 21:28:50 2021복호화 에러
패스워드가 다른 경우
$ openssl enc -d -aes-128-cbc -in enc_ldap-20210705.tar.gz -out dec_ldap-20210705.tar.gz -K 12345 -iv 00000000000000000000000000000000
bad decrypt
139841944201104:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:592:HEX가 다른 경우
$ openssl enc -d -aes-128-cbc -in enc_ldap-20210705.tar.gz -out dec_ldap-20210705.tar.gz -K 1234 -iv 00000000000000000000000000000011
$ tar xvfz dec_ldap-20210705.tar.gz
gzip: stdin: invalid compressed data--format violated
tar: Child returned status 1
tar: Error is not recoverable: exiting now
이제 파일이 암호화되고 복호화되었습니다. 암호화 키는 안전하게 보관되어야 하며 복호화를 원하는 사람만 액세스할 수 있어야 합니다.
728x90
    
    
  반응형
    
    
    
  '리눅스' 카테고리의 다른 글
| docker compose 파일 버전(docker-compose.yml) (0) | 2021.07.09 | 
|---|---|
| 리눅스에서 SHA-256 해시를 생성하고 파일의 무결성을 확인하는 방법 (0) | 2021.07.05 | 
| CentOS 7에서 로케일(로케일 설정과 문자셋 설정)을 변경하는 방법 (0) | 2021.07.01 | 
| rsync 명령어를 사용하는 방법 (0) | 2021.07.01 | 
| NFS: Stale file handle 에러 (0) | 2021.07.01 | 
 
                  
                 
                  
                 
                  
                