[bash: openssl] 파일 암호화 리눅스 bash script

리눅스에서 파일을 암호화하고 싶다면 openssl을 활용할 수 있다. 터미널창에서 아래와 같이 입력한다.

openssl aes-256-cbc -in my_file.txt -out my_file.enc

my_file.txt 파일을 미국의 암호화 표준인 AES로 암호화하여 my_file.enc라는 이름으로 저장하는 예이다. 위와 같이 실행하면 암호를 입력하라는 메시지가 나오는데, 암호를 정해서 넣어주면 되겠다. (대소문자, 수자, 특수기호 등을 섞어서 최소 15자 이상이 되도록 정하는 것을 추천)

암호화하면 암호화된 파일이 새로 생기고 원본 파일도 그대로 있으므로 원본 파일은 rm 명령으로 지워주자.

rm my_file.txt

아래와 같이 -d 옵션을 주면 원래 파일로 복원할 수 있다. 암호화된 my_file.enc를 복원하여 my_file.txt로 저장하는 예이다.

openssl aes-256-cbc -d -in my_file.enc -out my_file.txt

마찬가지로 복원을 위해서는 암호를 입력해 주면 된다.

shell script에서 파일 암호화를 사용할 때, 암호를 특정 규칙에 의해 자동으로 생성하거나 한번 암호를 입력 받아서 여러개의 파일을 작업해야 할 상황이 있다면 아래와 같은 방식이 유용하다.

password_str="my_password"
echo -n "$password_str" | openssl aes-256-cbc -in my_file.txt -out my_file.enc -pass stdin

위의 예는 password_str 변수에 저장된 암호를 echo 명령으로 출력하고 openssl에서는 -pass stdin 옵션을 추가해서 암호가 자동으로 입력되도록 하는 것이다. 엔터가 포함되지 않도록 echo 명령에 -n 옵션을 사용했다. 암호는 파이프(|)에 의해 openssl 명령의 입력으로 넘어가기 때문에 암호가 실제로 터미널창 화면에 출력되지는 않는다.

복원은 앞에서 예시한 바와 같이 -d 옵션을 사용하면 된다.

echo -n "$password_str" | openssl aes-256-cbc -d -in my_file.enc -out my_file.txt -pass stdin

암호를 자동으로 입력하는 다른 방법으로 아래의 예시를 보자.

openssl aes-256-cbc -in my_file.txt -out my_file.enc -pass pass:my_password

위와 같은 방식은 비추천이다. 암호화가 진행되고 있는 도중에 ps 명령으로 프로세스 목록을 보면 암호가 그대로 드러나기 때문이다. echo 명령과 조합하는 방식이 더 낫다.



핑백

  • 반달가면 : 외장형 HDD의 용도에 대한 오해 2013-08-16 00:07:25 #

    ... 겠다. 그래도 꺼림직하면 두번 걸자. 암호 걸어서 rar 압축하고 이걸 다시 다른 암호 걸어서 zip 압축하고 이런 식으로 해 놓자. 리눅스 사용자라면 openssl을 이용해서 암호화하는 방법도 있다. 좀 귀찮을지 몰라도, 힘들게 작업한 문서나 찍어 놓은 사진이 한번에 날아가는 불상사보다는 백배 낫다. ... more

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

620349
4728
1719415

ad_widget_2