베라크립트
1. 개요
베라크립트는 2015년 6월 28일 이후 아파치 2.0 라이선스로 배포되는 디스크 암호화 소프트웨어이다. AES, Serpent, Twofish 등 다양한 암호화 알고리즘과 XTS 모드를 사용하며, 보안 강화를 위해 여러 알고리즘 조합과 해시 함수를 지원한다. 트루크립트의 보안 취약점을 개선하고, 윈도우 설치 드라이버 취약점 수정, 암호 추측 공격 방어 강화 등 보안 기능을 제공한다. QuarksLab과 프라운호퍼 SIT에서 보안 감사를 받았으며, 개연성 부인 기능을 지원한다. 멀티 코어 시스템에서 병렬 처리를 지원하고, 하드웨어 가속 AES를 활용하여 성능을 향상시킨다.
이미지 준비중입니다.
| 개발자 | IDRIX (프랑스 파리 기반) |
|---|---|
| 출시일 | 2013년 6월 22일 |
| 최신 안정화 버전 | 1.26.15 |
| 프로그래밍 언어 | C, C++, 어셈블리어 |
| 운영 체제 | 윈도우 10 이상, 윈도우 서버 2016–윈도우 서버 2019, macOS 12 이상, 리눅스, FreeBSD |
| 플랫폼 | IA-32, x86-64, AArch64, armhf |
| 언어 수 | 42 |
| 장르 | 디스크 암호화 소프트웨어 |
| 라이선스 | 아파치 라이선스 2.0 및 TrueCrypt License 3.0 |
| 웹사이트 | VeraCrypt 공식 웹사이트 |
-
윈도우 보안 소프트웨어 -
카스퍼스키 안티바이러스
카스퍼스키 안티바이러스는 악성 코드 탐지 및 제거 기능을 제공하는 소프트웨어이며, 2022년 구독 비즈니스 모델로 전환되어 다양한 운영 체제를 지원하고 보안 관련 논란이 있었다. -
윈도우 보안 소프트웨어 -
AVG 안티바이러스
AVG 안티바이러스는 1992년 체코에서 시작되어 정기 검사, 이메일 검사, 격리 기능 등을 제공하며, 2016년 아바스트에 인수되었고, 윈도우, macOS, 안드로이드 등 다양한 플랫폼을 지원하지만, SafeGuard 툴바 자동 설치 등의 문제점도 있었다. -
암호 소프트웨어 -
OpenSSL
OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다. -
암호 소프트웨어 -
I2P
I2P는 2003년 Freenet에서 분기된 익명 P2P 분산 통신 계층으로, IP 주소 노출을 방지하며 다양한 소프트웨어와 익명성 응용 프로그램을 지원하고, 기부금으로 운영되며 6~8주마다 릴리스를 진행한다. -
크로스 플랫폼 소프트웨어 -
MSN
MSN은 1995년 마이크로소프트가 윈도우 95와 함께 출시한 웹 포털이자 관련 서비스 모음으로, 뉴스, 엔터테인먼트, 스포츠, 금융 등 다양한 콘텐츠를 제공하며 주요 온라인 서비스를 통합하는 허브 역할을 수행한다. -
크로스 플랫폼 소프트웨어 -
구글 포토
구글 포토는 사진 및 동영상 저장, 공유, 관리 기능을 제공하는 구글의 클라우드 기반 서비스로, 자동 분류, 얼굴 인식, 검색 기능을 제공하지만 2021년부터 무료 무제한 저장 용량 제공 정책이 변경되었고, 2024년에는 기술의 군사적 이용에 대한 윤리적 논란이 있었다.
2. 라이선스 및 소스 모델
베라크립트는 2015년 6월 28일부터 아파치 라이선스 2.0으로 라이선스되고 있다. 그 이전에는 Microsoft Public License (마이크로소프트 퍼블릭 라이선스)로 출시되었다. 베라크립트는 이전 트루크립트로부터 상당한 양의 코드를 가져왔으므로, 트루크립트 소프트웨어에 고유한 트루크립트 라이선스 버전 3.0 조항에도 종속된다. 이는 널리 쓰이는 수많은 오픈 소스 라이선스 중 하나는 아니며, 자유 소프트웨어 재단(FSF) 라이선스 목록에 따르면 자유 소프트웨어 사용권도 아니므로 배포 및 저작권에 자유롭지 못하다.
VeraCrypt는 2013년 단종된 TrueCrypt 프로젝트에서 포크되었으며, 원래는 TrueCrypt 라이선스 3.0에 따라 배포된 TrueCrypt 코드를 대부분 포함하고 있었다. 그 이후 몇 년 동안 VeraCrypt 코드의 점점 더 많은 부분이 다시 작성되어 허용적인 아파치 라이선스 2.0으로 배포되었다.
TrueCrypt 라이선스는 일반적으로 소스 사용 가능하지만, 자유 및 오픈 소스는 아닌 것으로 간주된다. 아파치 라이선스는 보편적으로 자유 및 오픈 소스로 간주된다. 혼합된 VeraCrypt 라이선스는 널리 자유 및 오픈 소스로 간주되지만, 항상 그런 것은 아니다.
VeraCrypt를 자유 및 오픈 소스로 간주하는 곳은 다음과 같다.
* PC World
* Techspot
* 덕덕고의 오픈 소스 기술 개선 펀드
* 소스포지
* Open Tech Fund
* Fosshub
* opensource.com
* fossmint
반면, VeraCrypt를 자유 및 오픈 소스가 아닌 것으로 간주하는 곳은 다음과 같다.
* 데비안
* 오픈 소스 이니셔티브의 일부 회원(이사 포함)
* 자유 소프트웨어 재단
3. 암호화 방식
베라크립트는 AES, Serpent, 투피쉬, Camellia, 쿠즈네치크 등 여러 암호 알고리즘을 사용한다. 버전 1.19에서는 보안 감사 결과에 따라 Magma 암호 사용이 중단되었다. 추가적인 보안을 위해 10가지의 계단식 알고리즘 조합을 사용할 수 있다.
베라크립트의 블록 암호 운용 모드는 XTS이다. 헤더 키와 보조 헤더 키(XTS 모드)는 512-비트 솔트와 PBKDF2를 사용하여 생성된다. 이때 사용되는 해시 함수와 시스템 또는 비시스템 암호화 여부에 따라 200,000회에서 500,000회의 반복 횟수를 거친다. 사용자는 반복 횟수를 2,048회에서 16,000회까지로 지정할 수 있다.
3.1. 알고리즘
베라크립트는 AES, Serpent, 투피시, Camellia, Kuznyechik 등 다양한 암호화 알고리즘을 지원한다. 보안 감사 결과에 따라 Magma 암호는 버전 1.19에서 제거되었다. 또한, 다음과 같은 10가지의 다양한 알고리즘 조합을 지원하여 보안을 강화할 수 있다.
* AES-투피시
* AES-투피시-Serpent
* Camellia-Kuznyechik
* Camellia-Serpent
* Kuznyechik-AES
* Kuznyechik-Serpent-Camellia
* Kuznyechik-투피시
* Serpent-AES
* Serpent-투피시-AES
* 투피시-Serpent
베라크립트에서 사용할 수 있는 암호화 해시 함수는 SHA-256, SHA-512, Streebog, Whirlpool, BLAKE2s-256이다. RIPEMD-160은 버전 1.26에서 제거되었다.
3.2. 암호화 해시 함수
베라크립트는 BLAKE2s-256, SHA-256, SHA-512, Streebog 및 Whirlpool를 암호화 해시 함수로 지원한다. RIPEMD-160은 버전 1.26에서 제거되었다.
3.3. 운용 방식
베라크립트는 XTS 운용 방식을 사용한다. 512-비트 솔트와 함께 PBKDF2를 사용하여 헤더 키와 보조 헤더 키(XTS 모드)를 생성하며, 기본적으로 사용되는 해시 함수와 시스템 또는 비시스템 암호화 여부에 따라 200,000회에서 500,000회의 반복을 거친다. 사용자는 각각 2,048회와 16,000회까지 시작하도록 사용자 지정할 수 있다.
3.4. 키
헤더 키와 2차 헤더 키(XTS 모드)는 512비트 솔트와 PBKDF2를 사용하여 생성되며, 사용되는 해시 함수에 따라 327,661~655,331회의 반복 횟수를 가진다.
4. 보안 개선 사항
베라크립트는 트루크립트와의 호환성을 중단하고 새로운 형식을 도입하여 국가안보국(NSA)의 공격에 대한 취약점을 개선했다. 1.26.5 버전부터는 트루크립트 형식 지원이 완전히 중단되었다.
윈도우 설치 드라이버의 취약점을 수정하여 DLL 하이재킹을 통한 임의 코드 실행 및 권한 상승 공격을 방지했다.
시스템 파티션 암호화에 사용되는 PBKDF2-RIPEMD-160 알고리즘의 반복 횟수를 크게 늘려 암호 추측 공격에 대한 내성을 강화했다. 트루크립트는 1,000회를 반복하는 반면, 베라크립트는 SHA-256, BLAKE2s-256, Streebog 해시 함수 사용 시 기본적으로 200,000회 이상, SHA-512, Whirlpool 사용 시 500,000회 이상 반복한다. 이를 통해 암호화된 파티션을 여는 속도는 느려졌지만, 암호 추측 공격은 훨씬 더 어려워졌다.
또한, "개인 반복 승수(Personal Iterations Multiplier, PIM)" 기능을 추가하여 사용자가 반복 횟수를 직접 제어할 수 있게 함으로써 무차별 대입 공격에 대한 보안을 더욱 강화할 수 있게 되었다.
부트로더 취약점을 수정하고, 시스템 부팅 암호화에 SHA-256 지원을 추가하는 등 다양한 최적화가 이루어졌다.
버전 1.17부터 유니코드 암호를 지원하고, 1.18a 버전에서는 UEFI 시스템 파티션 부팅 기능을 추가했다. 1.22 버전에서는 TRIM 명령 활성화/비활성화 옵션을 추가했으며, 1.24 버전에서는 종료/재부팅 시 RAM에서 시스템 암호화 키를 지우는 기능을 추가하여 콜드 부트 공격을 완화했다. 또한, 64비트 시스템에서는 키와 암호에 대한 RAM 암호화를 추가했다.
5. 보안 감사
QuarksLab은 오픈 소스 기술 개선 기금(OSTIF)을 대신하여 베라크립트 버전 1.18에 대한 감사를 실시했으며, 총 32 인력이 소요되었다. 감사 결과는 2016년 10월 17일에 발표되었다. 같은 날, IDRIX는 감사에서 확인된 주요 취약점을 해결한 버전 1.19를 출시했다.
프라운호퍼 보안 정보 기술 연구소(SIT)는 독일 연방 정보 보안청(BSI)의 요청에 따라 2020년에 베라크립트에 대한 추가 감사를 실시하여 2020년 10월에 결과를 발표했다.
6. 보안 예방 조치
베라크립트는 암호화 키를 RAM에 저장하기 때문에 콜드 부팅 공격에 취약할 수 있다. 콜드 부팅 공격은 컴퓨터 전원이 꺼진 후에도 DRAM에 남아 있는 데이터를 이용하여 암호화 키를 복구하는 방법이다. 베라크립트는 이러한 공격을 완화하기 위해 버전 1.24부터 64비트 윈도우에서 RAM에 저장되는 키와 암호를 암호화하는 옵션을 제공하며, CPU 오버헤드는 10% 미만이다. 또한, 새로운 장치가 연결될 때 메모리에서 모든 암호화 키를 지우는 옵션도 추가되었다.
베라크립트 문서는 사용자가 컴퓨터에 물리적으로 접근한 후에는 베라크립트가 데이터를 안전하게 보호할 수 없다고 명시한다. 이를 악의적인 메이드 공격이라고 부른다. 공격자는 컴퓨터에 물리적으로 접근하여 키로거와 같은 하드웨어나 소프트웨어를 설치하거나, 버스 마스터링 장치를 사용하여 메모리를 캡처하거나, 기타 악성 하드웨어나 소프트웨어를 설치할 수 있다. 이를 통해 암호화되지 않은 데이터(암호화 키, 비밀번호 포함)를 캡처하거나, 캡처된 비밀번호나 암호화 키를 사용하여 암호화된 데이터를 해독할 수 있다. 따라서 물리적 보안은 안전한 시스템을 위한 가장 기본적인 전제 조건이다.
일부 멀웨어는 입력된 비밀번호를 포함하여 키 입력을 기록하도록 설계되어, 인터넷을 통해 공격자에게 전송되거나 공격자가 나중에 컴퓨터에 물리적으로 접근할 때 읽을 수 있는 암호화되지 않은 로컬 드라이브에 저장될 수 있다.
베라크립트는 트러스트 플랫폼 모듈(TPM)을 사용하지 않는다. TPM은 공격자가 관리자 권한을 가지고 있거나 컴퓨터에 물리적으로 접근해야 하는 공격으로부터 보호하는 것을 목적으로 한다. 그러나 컴퓨터에 물리적 또는 관리자 권한을 가진 공격자는 하드웨어 키스트로크 로거를 설치하거나, TPM을 재설정하거나, 메모리 내용을 캡처하여 TPM에서 발급된 키를 검색하는 등의 방법으로 TPM을 우회할 수 있기 때문에 TPM이 실질적으로 불필요하다고 본다.
7. 부인 가능성
베라크립트는 트루크립트와 마찬가지로 다른 볼륨 내에 "숨겨진 볼륨"을 생성하여 개연성 부인을 지원한다. 윈도우 버전에서는 존재를 부인할 수 있는 숨겨진 암호화된 운영 체제를 생성하고 실행할 수 있다. 베라크립트 문서는 숨겨진 볼륨 부인 기능이 손상될 수 있는 방법(예: 임시 파일 또는 썸네일을 통해 정보를 유출할 수 있는 타사 소프트웨어)과 이를 방지할 수 있는 가능한 방법을 나열한다.
베라크립트는 그럴듯한 부인(plausible deniability)이라고 불리는 개념을 지원한다. 이는 하나의 "숨겨진 볼륨"을 다른 볼륨 안에 만들 수 있게 해준다. 또한, Windows 버전에서는 deniable encryption영어된 숨겨진 운영 체제를 생성하고 실행할 수 있다.
8. 성능
베라크립트는 멀티 코어 시스템에서 병렬 처리를 지원한다. 마이크로소프트 윈도우에서 암호화 및 복호화로 인한 성능 저하를 줄이기 위해 파이프라인 읽기 및 쓰기 작업(비동기 처리 형태)을 지원한다. AES-NI 명령 집합을 지원하는 프로세서에서는 하드웨어 가속 AES를 지원하여 성능을 향상시킨다. 64비트 CPU에서 베라크립트는 Twofish, Serpent, Camellia의 최적화된 어셈블리 구현을 사용한다.
9. 법적 사례
미국 대 번스(US v. Burns) 사건에서 피고인은 아동 포르노 캐시와 베라크립트 사용법을 담은 매뉴얼이 있는 시스템 파티션, 암호화된 파티션, 음악 파일이 있는 파티션 등 세 개의 하드 드라이브를 가지고 있었다. 피고인은 두 번째 하드 드라이브에 아동 포르노가 있음을 인정했지만, 비밀번호 제공을 거부했다.
FBI는 첫 번째 드라이브에서 이전에 사용된 비밀번호 단서를 찾고, 베라크립트 소프트웨어 취약점을 문의하고, 잠재적 비밀번호로 영숫자 문자 세트를 무차별 대입하는 등 여러 시도를 했지만, 파티션에 접근할 수 없었다. 검찰은 모든 영장법의 기정 사실 원칙에 따라 피고인에게 비밀번호 제공을 강제하도록 신청했다.
캘리포니아에서 아동 포르노 접근 혐의로 한 피고인의 아파트를 수색하는 과정에서, 900GB가 넘는 베라크립트 드라이브가 외장 하드 드라이브로 발견되었다. FBI는 베라크립트 소프트웨어에서 취약점을 발견하지 못했다고 주장했으며, 백도어가 있다는 것도 부인했다. 이후 다른 용의자가 피고인에게 아동 포르노를 숨기기 위해 암호화를 사용하는 방법을 교육했다는 사실이 밝혀졌다. 피고인이 드라이브에 아동 포르노를 백업했다는 것을 인정했고, 다른 용의자가 베라크립트 사용법을 교육하는 채팅 로그가 있었기 때문에, 기정 사실 원칙이 다시 사용되었다.
10. 기타
드라이브 전체 암호화와 관련하여, EFI 시스템 파티션 영역이 존재하는 경우, 시스템 파티션 또는 시스템 드라이브 전체 암호화를 선택할 수 없다.
이를 가능하게 하려면 EFI 시스템 파티션 영역을 설정하지 않는 클린 설치를 통해 윈도우를 설치해야 한다.