서버/Linux

우분투 터미널에서 TrueCrypt 사용 (1) - 디스크 전체 암호화

날개 2013. 12. 17. 02:38

우분투와 같은 리눅스를 사용하다 보면, GUI를 사용하면 좋겠지만, 여러가지 이유로 터미널에서 텍스트만 보면서 작업해야 할 일이 많습니다.


디스크 암호화 프로그램인 TrueCrypt는 여러가지 플랫폼을 지원합니다. 윈도우, MacOS X, 리눅스를 모두 지원하죠. 하지만 리눅스에서도 GUI를 지원하기 때문에, GUI상에서는 편하게 사용 할 수 있지만, 터미널 상에서는 사용하기가 조금 까다롭습니다.


TrueCrypt는 디스크 전체 암호화와 볼륨을 만들어 일종의 가상디스크 처럼 사용하는 암호화를 지원합니다.


이 글에서는 먼저, 하드디스크(또는 SSD) 하나 전체를 통째로 암호화 하는 방법을 알아 봅니다.


(참고로, OS는 우분투 12.10LTS에서, TrueCrypt는 7.1a를 사용하여 테스트 했습니다.)


먼저, TrueCrypt를 http://www.truecrypt.org/downloads에서 다운로드 받아 설치합니다.


설치 되었으면, 터미널에서,

$ truecrypt --version

이라고 입력해 봅니다.


정상적으로 설치되었으면, TrueCrypt의 버전이 출력됩니다. 제 경우는,

TrueCrypt 7.1a 

라고 출력 되네요.


먼저, 암호화 디스크로 마운트할 디스크의 장치명을 확실히 알고 있어야 합니다.

(실수 하면 큰일납니다. 실수해서 땅을 치고 후회해도 소용 없습니다. 확인 또 확인 합시다.)


여기서는 암호화 할 디스크를 sdb1 이라고 가정하겠습니다.


혹시, sdb1이 마운트되어 있다면, 작업 전에 먼저 sdb1을 마운트 해제 합니다.

또한 혹시 sdb1이 부팅할 때, 자동 마운트 되게 되어 있다면, fstab을 수정해서 자동 마운트 되지 않도록 합니다!


마운트 되어 있는 상태인지 확인하려면, 터미널에서 mount 명령어를 입력해 보면 알 수 있겠지요.


자, sdb1 이라는 암호화 할 비어 있는(혹은 지워져도 괜찮은) 디스크가 있습니다. 암호화 해 봅시다.


아래와 같이 입력합니다. (단, sdb1은 암호화 하고자 하는 디스크로 바꾸어 주세요)

$ truecrypt -t -c /dev/sdb1


이제 TrueCrypt가 묻는 말에 대답만 해 주면 됩니다.

Volume type:   (숨김 형태로 만들것인지 묻는 것입니다. 특별히 필요하지 않으면 1번을 선택합니다.)

1) Normal

2) Hidden

Select [1]: 1


Encryption algorithm:       (암호화 알고리즘을 선택합니다. 너무 복잡한 암호화를 선택하면, 보안은

1) AES                       강화 되겠지만, 속도는 더 느려질 수 있습니다.)

2) Serpent

3) Twofish

4) AES-Twofish

5) AES-Twofish-Serpent

6) Serpent-AES

7) Serpent-Twofish-AES

8) Twofish-Serpent

Select [1]: 1 


Hash algorithm:        (해시 알고리즘을 선택합니다. 선호하는 방식을 선택하면 되겠죠.)

1) RIPEMD-160

2) SHA-512

3) Whirlpool

Select [1]: 2


Filesystem:     (암호화 디스크를 만들고 어떤 파일 시스템으로 포맷할 것인지 선택합니다.

1) None          시스템 상황에 따라 항목이 다르게 나옵니다. 저는 Ext4를 사용하기 때문에

2) Fat            Ext4가 나온 것 같습니다.)

3) Linux Ext4

Select [1]: 3


Enter password:             (드디어 암호를 지정합니다. 11글자 이상을 추천하더군요. 당연히 길면 길수록

Re-enter password:          풀기가 어려워 집니다. 절대 잊어버리면 안됩니다. 절대로!!!!!)


Enter keyfile path [none]:      (키 파일을 만드는건데 만들지 않으려면, 그냥 Enter 쳐도 됩니다.)


Please type at least 320 randomly chosen characters and then press Enter:    (320자 이상의 아무 글지나 입력합니다. 저는 320글자 세기가 힘들어서 텍스트 에디터에 320자 이상 입력해서 Copy & Paste 했습니다.)


Done: 0.002% Speed: 117 MB/s Left: 7 hours       (이제 기다립니다. 매우 오래 걸립니다.)


이 과정이 모두 끝나면, sdb1 디스크는 암호화되었을 것입니다.


이제, TrueCrypt로 마운트해서 사용하면 됩니다.

(주의! mount 명령으로 마운트 하는것이 아니라, TrueCrypt로만 마운트 합니다!)


마운트는 아래와 같이 합니다.

$ truecrypt -t -k "" --protect-hidden=no /dev/sdb1 /home/secure_disk


여기서, /dev/sdb1는 암호된 디스크를, /home/secure_disk는 마운트 하고 싶은 비어 있는 디렉토리를 지정하면 됩니다.


위와 같이 입력하면 암호를 물어보는데, 정확하게 입력하면 마운트가 되며, 마운트에 성공했으면, /home/secure_disk에 lost+found 디렉터리가 생기더군요. 여튼 이제 부터 /home/secure_disk 디렉터리에 넣는 파일은 TrueCrypt가 암호화 해서 저장해 줍니다.


즉, 이제 /dev/sdb1 디스크를 누가 뽑아 가더라도, 암호 없이는 들어 있는 내용을 보기가 매우매우 힘들어 진다는 뜻입니다. (암호가 길어야 합니다.)


사실, truecrypt -t --mount 만 입력해도, 대화식으로 마운트 할 수 있습니다.

그렇지만, 위와 같이 하면 번거롭게 일일이 항목들을 입력하지 않아도 되어 편합니다.

(직접 테스트 해 보세요.)


참고로 --protected-hidden=no 는 위에서 만들때 숨김볼륨으로 만들지 않았으므로, 숨김 볼륨이 아니라는 뜻이고, -k ""는 키파일이 없다는 의미입니다.


참고로 마운트의 해제는 아래와 같이 합니다.

$ truecrypt -d


위와 같이 입력하면 마운트가 해제 되는데, 주의 할 점은 TrueCrypt로 마운트되어 있는 모든 볼륨이 마운트 해제 된 다는 점을 기억하세요.


다음에는 가상디스크 파일로 부분 암호화 하는 방법을 적어 보겠습니다.

사실은 전체 디스크 암호화 하는것보다 쉽고, 비교적 안전합니다. 어차피 파일을 만드는 것이기 때문에....