VeraCrypt를 통해 파일, 폴더, 드라이브 쉽고 안전하게 암호화하기
(*Windows 운영체제에서의 VeraCrypt 사용법으로, 타 운영체제 또한 비슷하긴 하겠으나 완전히 방법이 같음을 보장할 수는 없습니다.)
파일을 지울 수는 없는데, 자기 자신을 제외한 나머지 사람은 파일을 함부로 볼 수 없도록 조치를 취해야 하는 경우가 많습니다. 이 때는 주로 다양한 도구를 사용하여 파일을 암호화하여 보관하면 되는데, Windows의 비트라커(BitLocker)는 드라이브를 통째로 암호화하니 불편한 점이 있습니다. 그리고 무엇보다 비트라커는 Windows Pro버전에서 지원하는데, 이는 대부분의 가정 사용자들이 사용하는 Windows Home보다 가격이 비쌉니다. (대략 10만원 정도 더 지불해야 합니다.)

개인적으로 2023년부터 Windows Pro로 업그레이드해서 사용하고 있는데, 저는 이 BitLocker를 사용해보려고 돈을 10만원 가까이 더 내고 라이선스를 구매해서 영구 사용중입니다. 결과적으로는 드라이브를 통째로 잠그는 것은 파일마다 개별 암호를 적용하거나, 암호화된 파일을 다른 데로 쉽게 옮기지를 못해서, 유연성이 심각하게 떨어진다는 단점을 가지고 있습니다. 무엇보다, 직접 결제해 본 입장으로써 별로 만족스럽지도 않았습니다. (속도가 느린 건 아니었지만요.)
그래서 이번에는 1)무료로(중요함) 2)안전하게(공학적으로 검증되었고 널리 사용되는 암호 방식을 사용) 3)그리고 간편하게 파일과 폴더들을 4)개별적으로 암호 처리하여 보관(원하는 만큼의 유연성 제공)하는 툴인 Veracrypt(베라크립트)를 소개하고 사용 방법을 간단히 정리해 드리겠습니다.
우선 Veracrypt를 다운로드 받습니다. 아래 공식 다운로드 페이지에서 최신 버전을 운영체제나 시스템 사양에 맞게 다운로드하세요.
https://www.veracrypt.fr/en/Downloads.html

설치를 금방 마치고 나면, 이런 창이 나옵니다.

우리가 만들 것은 일종의 암호 알고리즘에 의해 보호받는 컨테이너(container)입니다. 예를 들어볼까요? 1TB SSD 저장장치에 지켜야 할 파일 50GB를 보관하고 싶다고 해 봅시다. 이때 비트락커(BitLocker)같은걸 사용하게 되면 1TB SSD 저장장치를 모두 잠궈야 하므로 초기 셋팅이 오래 걸리기도 하고 중요하지 않은 파일에 접근할 때도 암호 인증을 해야 하니 번거롭습니다.
이에 우리는 저장장치에 지켜야 할 파일 50GB 만큼의 용량만 암호로 보호받는 일종의 저장공간을 별도로 만들겁니다. 그럼 나머지 950GB는 암호로 보호받지 않아도 되므로 그냥 자유롭게 접근하면 되고, 중요한 50GB 암호 컨테이너에 한해서만 암호로 접근해야 합니다. 이제 감이 오셨나요? 바로 만들어 봅시다.

메인화면의 `Create Volume`을 클릭해서 새 볼륨을 만들어 주세요. 그러면 이제 암호로 보호된 데이터들은 사용할때마다 가상의 하드디스크를 연결하는 것처럼 사용하고, 사용하지 않을때는 연결을 끊어서 그냥 암호화된 읽을 수 없는 파일 형태로 보관하게 됩니다. 일종의 암호가 적용되는 캐비닛이나 박스를 만들고, 거기에 파일을 넣는 식으로 동작한다고 보시면 됩니다.

여기서는 파일(이나 폴더)을 보호할 것이므로 `Create an encrypted file container`를 사용합니다. 디스크 전체를 암호화 하여 보호할 수도 있습니다. 필요하시다면 한번 나중에 시도해 보세요.

여기서는 `Standard VeraCrypt volume`을 사용해 표준 모드로 만들겠습니다. `Hidden VeraCrypt volume`의 경우에는 조금 특수한 케이스로 보통 사용되지는 않는데, 암호화된 컨테이터 자체도 숨기는 형태로, 이 파일로 자신의 목숨이 간당간당하거나 할 수도 있을때 사용합니다. 비밀번호에 따라 진짜 지켜야 할 데이터와 그렇지 않은 데이터를 보여주는 이중적인 방법이지요. 평상시에 사용할 일은 없습니다.
...적대적인 폭력 행사 앞에서 활용할 수 있다고 한다. 아무튼 이 볼륨 형식은, A라는 볼륨을 먼저 생성한 후, 그 안에 다시 B라는 숨김 볼륨을 추가 생성하게 된다(B의 공간은 A의 크기보다 작을 수 밖에 없음). 따라서 적대적인(?) 폭력 행사 앞에서는 A라는 볼륨을 보여주면 될 것이고(해당 비밀번호 노출), 실제의 B라는 숨김 볼륨(별로도 지정한 비밀번호 사용)은 보여주지 않게 된다. 볼륨 사용 방법은 각각의 비밀번호를 입력하면 A 또는 B 볼륨으로 접근하게 된다. 주의할 점은, 숨김 볼륨을 생성했다는 것을 사용자 스스로 인식해야 하고, 따로 지정한 비밀번호를 절대로 잃어버리지 않아야 할 것이며, 헷갈리지도 않아야 할 것이다. 숨김 볼륨을 생성하였을 경우 외부적으로 드러나는 것은 전혀 없으므로 사용자 스스로 인식하지 못한다면 자료 유실 등 낭패에 직면할 수도 있다. 아무튼 일반적으로는 사용할 필요는 없다고 생각한다.

이후 암호화된 데이터가 어디에 위치할지 정해줍니다. 이 파일이 암호화된 데이터가 됩니다. Veracrypt 프로그램을 통해 적절한 암호 없이는 실제 내용을 볼 수 없지요. 암호화된 데이터들은 이 컨테이너 안으로 들어가므로, 향후 이 데이터를 다른 곳으로 옮기면 암호화된 파일을 통째로 이동시킬 수 있습니다. 이 부분은 Windows의 BitLocker와 차별점이나 또 하나의 강력한 장점이 되게 됩니다. 그래서 다른 컴퓨터에서 Veracrypt를 실행해 해독할 수도 있지요. 컨테이너(container)란 개념은 바로 이런 것입니다.
이런 방식을 On-The-Fly Encryption(OTFE)라고 따로 부르기도 합니다. (물론 제 기준이긴 하지만, 국내에서 이러한 용어를 쓰는 사람을 지금까지 본 적은 없었던 것 같습니다.)

그 다음은 암호 알고리즘(encryption algorithm)을 선택해 줍니다. 기본적으로 AES(Advanced Encryption Standard)가 사용되는데, 현대 암호학에서 가장 널리 사용되는 암호 알고리즘 중 하나이자 미국 국가안보국(NSA)에 의해 1급 기밀을 암호화하여 보안 저장하는데 사용할 수 있도록 승인될 정도로 보안성이 아주 뛰어납니다. TLS(Transport Layer Security)와 같은 현재 보안 웹 연결을 할때 사용되는 알고리즘 등도 AES와 밀접한 연관이 있습니다. 즉, 현재 알려진 암호 알고리즘 중 가장 효율/효과적인 암호 중 하나로 인정되며 비밀번호만 충분히 길게 입력한다면 슈퍼컴퓨터를 있는대로 끌어모으거나 국정원이 암호 파일을 압수해간다고 해도 평생 파일을 해독하지 못한다는 의미가 됩니다.
그 외에도 해시 알고리즘(hash algorithm)도 선택하라고 나옵니다. 해시 함수는 일종의 일방향성(unidirectional) 함수로, 값이 들어오면 일정한 길이의 예측할 수 없는 값을 주고, 결과값으로 입력값을 추측할 수 없는 특징을 가진 함수로 암호나 컴퓨터 시스템 등에서 널리 사용됩니다. 이번 Veracrypt에서는 랜덤성(randomness) 등을 제공하기 위해 쓰이는데 저는 SHA-512를 기본으로 사용하고 있습니다. 암호 알고리즘이나 해시 함수는 원하신다면 적절하게 판단하셔서 다른걸로 바꾸셔도 됩니다.

이후, 암호 컨테이너의 크기를 정해줍니다. 저는 400GB로 하겠습니다.

암호화 과정에서 사용할 비밀번호를 최대 128자리까지 적절하게 입력합니다. 충분히 안전하도록, 조합을 다양하게 하거나 아니면 긴 패스워드를 사용하세요! 아무리 알고리즘이 좋아도 이를 너무 맹신해서는 절대 안 됩니다. 프라이버시를 위해 Veracrypt를 사용하는 만큼 그 의미가 무색해지지 않도록 비밀번호를 "123" 처럼 대충 설정하지 말아두세요.

파일 시스템에 관한 질문입니다. 컨테이너 내에 저장할 단일 파일 크기가 4GB가 넘어가는게 있다면 [Yes]를 클릭해 주세요. 여담으로, 최근 운영체제는 NTFS(New Technology File System)이라는 파일 시스템을 기본으로 사용하고 있는데, 디스크 크기도 귀여웠던 예전에는 FAT(File Allocation Table)을 사용했었습니다. 이 FAT은 애석하게도 파일 한 개의 크기가 4GB를 넘길 수 없었습니다. 그래서 가끔씩 엄청 큰 파일은 분할압축을 하기도 했었지요. 왠만하면 `Yes`로 설정할 것을 권고합니다.


이후 볼륨 포맷을 지정해 줍니다. 파일시스템(filesystem)의 경우, Windows에서 사용하실 거라면 기본적으로 윈도우 운영체제에서 기본 파일시스템으로 채택하여 사용하고 있는 NTFS(New Technology File System)를 선택하시면 되고, 별도의 용도가 있으시다면 적절하게 고르시면 됩니다. 이후 마우스를 미묘하게 잘 흔들어서 randomness(랜덤함)을 잘 모아줍니다. 이건 추후 암호 컨테이너를 만들 때, 각종 정보를 보다 더 보안이 강하게(랜덤성이 높아 추측하기 어렵게)만들어 줍니다. 마우스를 살살, 말 안듣는 아이가 머리 흔들듯이 흔들어주면 금방 randomness가 채워집니다. 마나 모으는 것 같지요? 초록색 바가 가득찰때까지 해 주세요.

이후 `Format`을 누르면 암호 컨테이너가 만들어집니다. 실제 요청한 사이즈만큼의 공간에 암호 보호를 적용하는 것이죠! 하드디스크 속도에 따라 다를 수 있지만, 보통 속도는 디스크가 낼 수 있는 쓰기 최대 속도(maximum write speed)의 절반보다 좀 더 나옵니다. 저의 경우에는 암호화 디스크 생성 속도가 1.1GiB/s 정도 나옵니다.




이제 아까 암호 컨테이너를 만든 곳에 가 보면 400GB 사이즈의 파일이 있는 걸 확인하실 수 있습니다. 실제로 사용해 볼까요? 이 암호 컨테이너를 Veracrypt를 통해 컴퓨터에 실제로 연결하고, 파일을 옮긴 다음 다시 잠궈 안전하게 보호해 봅시다.

Veracrypt 메인으로 가셔서 `Volume` 항목에 암호 컨테이터를 `Select File...`을 선택하신 다음 이를 실제 컴퓨터에 (드라이브 형태로) 연결하여 사용할 수 있도록 `Mount`를 누릅니다. 그러면 암호 컨테이너가 이제 실제 드라이브처럼 사용 가능하게 열릴텐데, 이때 사전에 설정한 암호를 입력하고 `OK`를 누르면, 암호가 맞다는 조건 하에 파일이 열리게 됩니다.

열리면 이렇게 드라이브 문자열(여기서는 M:)이 할당되면서 사용이 가능하게 됩니다. 이렇게 연결된 동안은 암호가 풀린 상태이므로, 자유롭게 새 드라이브 하나 꽂아서 사용하는 것처럼 이용할 수 있습니다.

실제 파일 탐색기로 가 보면 이렇게 아까 암호가 해제된 암호 컨테이너가 드라이브 형태로 연결된 것을 볼 수 있습니다. 이제 열어서 보호 대상 파일을 암호 컨테이너로 이동시켜 줍니다.


예시로, 306GB 어치의 데이터를 암호 컨테이너로 옮겼습니다. 이제 잠궈볼까요?

간단합니다. 잠글때는 `Dismount`로 암호 컨테이너의 드라이브 연결을 끊어버리면 됩니다. 그러면 드라이브는 위 사진처럼 보이지 않고, 그저 묵직한 암호 컨테이너만 주인 말고는 모르는 비밀번호에 의해 잠긴 상태가 됩니다. 간단히 말해 암호가 풀린 드라이브의 연결을 끊어서 전원을 꺼버려서 다시 자동으로 암호가 걸렸다고 보시면 됩니다. 다시 열려면 위에서 서술한 `Mount` 과정을 거치면 됩니다. 이제 이 파일을 통째로 다른 컴퓨터에 옮기게 되면, 그 컴퓨터에 있는 Veracrypt를 통해 비밀번호 입력 후 똑같이 해제할 수 있게 됩니다. 암호 컨테이너는 이런 면에서 드라이브를 통째로 잠그는 방식보다 안전합니다.

암호를 해제하고 싶다면, 일단 `Mount`를 하여 연결하고, 암호 컨테이너에 있던 데이터를 전부 다른 곳으로 뺀 다음, `Dismount`를 하고 (실제로는 속이 텅 빈) 암호 컨테이너 파일을 지우시면 됩니다. 간단하지요? 한번만 눈에 익혀두면 평생 손쉽게 써먹을 수 있습니다.
특히, 민감한 파일이 그냥 방치되어 있을 때 이를 암호화 컨테이너에 복사하고, Eraser와 같은 프로그램으로 원본을 복구 불가하게 싹 밀어버리면 은폐가 가능합니다. 포렌식을 방해할 수 있는 쉽고 좋은 방법이지요. 그래서 암호학은 안티포렌식(anti-forensic) 기술 중 하나로도 불립니다. 압수수사를 당할 것 같을때 미리 해두면 참 요긴하겠죠?(^^) 파일 완전 삭제에 대한 내용은 아래 글에서 추가 확인해보실 수 있습니다.
이상 Veracrypt를 통한 안전한 파일 및 폴더 보관/관리 방법에 대해 살펴보았습니다. 다들 즐겁게 디지털 생활 하시되, 찜찜한 일 없게 철저한 보안을 추가해보시기 바랍니다. 후회 안 하실거에요.