베라크맆트

From Hidden Wiki
Jump to navigation Jump to search
필독 사항 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
수학 아이투피 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
통계학 뮤와이어 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

개요

베라크맆트 (VeraCrypt)는 트루크맆트 (TrueCrypt)의 소스 코드로 만든 오픈 소스 소프트웨어이다. 트루크맆트처럼 리넠스 (Linux), 맼OS (macOS), 윈도우즈를 모두 지원하다. 현재 트루크맆트는 업데이트가 중단되었으니 베라크맆트를 사용하는 게 보안상 더 안전하다.


베라크립트로 데이터 암호화를 할 때 비밀번호만 사용 시 비밀번호를 20자리 이상으로 만들 것을 권장합니다. 비밀번호만 사용하는 것은 권장하지 않습니다. 20자리 이상의 비밀번호와 키파일을 함께 사용하면 더 좋습니다.


키파일 (keyfile)을 보관할 암호화 볼륨의 크기는 300 ~ 500 KB 크기로 만들면 되고, 이름도 일반 파일처럼 위장하여 숨겨놓는 편이 좋다. 공인인증서개인 키 (private key)도 베라크맆트로 암호화한 볼륨에 넣어놓고 사용하면 안전하다. 볼륨 삽입시 은행의 공인인증서 프로그램이 USB 메모리 스틱으로 인식한다.


개인적인 사진이나 회사 문서 등을 USB 메모리 스틱 등의 분실하기 쉬운 매체에 담아 옮길 때도 암호화한 볼륨에 넣어서 운반하면 분실해도 안전하다. USB 메모리에 베라크맆트 실행 파일을 같이 갖고 다니면 더 편하다.


VeraCrypt는 윈도우즈 C 드라이브 암호화를 바이오스 (BIOS)와 마스터 부트 레코드 (master boot record, MBR, 엠비알)만 지원했다. 그러나 2016년 8월 17일 출시된 1.18a 버전부터 통일 확장 펌웨어 인터페이스 (Unified Extensible Firmware Interface, UEFI, 유이에프아이)와 GUID 파티션 테이블 (GUID Partition Table, GPT, 지피티, 쥐피티)도 지원한다.


TrueCrypt의 또 다른 포크(fork)로는 싸이퍼셰드(CipherShed)라는 게 있지만, 사용성이 별로 좋지 않다.


트루크맆트(TrueCrypt), 베라크맆트(VeraCrypt), 이레이서(Eraser), C클리너(CCleaner)는 모두 컴퓨터 본체의 메인보드에 SATA로 직접 연결할 때가 가장 빠르다. 그 다음으로 빠른게 외부에서 내부로 eSATA 포트로 연결하는 경우이다. 그 다음은 본체 후면의 USB 포트로 연결하는 게 빠른 것 같다. 마지막으로 본체 전면의 USB가 가장 느린 것 같다.

특히 SATA로 연결하는 것과 USB로 연결하는 것은 몇 배나 속도가 차이난다. HDD 용량이 클 경우 귀찮더라도 그냥 컴퓨터 뜯고 SATA로 연결하자. 예를 들어, USB로 연결하면 10시간이나 5일이 걸릴 HDD 덮어쓰기나 암호화 볼륨 생성 작업이, SATA로 연결하면 3시간이나 2일만 걸릴 수도 있다. 그리고 컴퓨터 성능이 좋을 수록 시간이 적게 걸린다.


같은 100 GB의 파일들이어도 작은 파일 여러개가 큰 파일 하나보다 이동시키는 데 훨씬 시간이 오래 걸린다. 이미지 파일 등은 압축률 0%로 여러 이미지 파일을 하나로 모아서 압축해서 보관하면 컴퓨터와 외장 저장 장치 사이에 이동시킬 때 시간을 절약할 수 있다.


데이터 완전 삭제 문서 참조.

메모리 덤프는 윈도에서나 의미를 가짐

윈도에서 메모리 덤프는 가장 흔한 공격수단이다. 그리고 메모리 덤프윈도우에서나 의미를 가짐.

리눅스 커널의 경우는 갈수록 메모리에 직접 access 하는 걸 거의 막고 있다 특히 최근 5.10 stable 버전에선 volatility 같은 리눅스 덤프툴도 다 막힌 상태임

https://lwn.net/Articles/267427/

게다가 리눅스용 베라크립트는 윈도 특유의 caching이나 buffering 문제가 없기 때문에 기본적으로 에 패스워드 캐시를 저장하지 않고 있음 (별도로 설정해야만 가능)

윈도우즈에서 베라크립트를 쓰겠다면 설정 들어가서 메모리 암호화 설정하면 끝이다. 다른 거 고민할 필요도 없다. (다만 설정시 hibernation과 fastboot 꺼짐. fastboot는 이미 베라크맆트 설치했을 때 기본적으로 껐을 거 같지만)

https://sourceforge.net/p/veracrypt/discussion/technical/thread/3961542951/#663e

이런 이유로 헤더값 그대로 노출되는 비트라커를 쓰겠다는 이유를 모르겠다. 베라크맆트에서 굳이 이런 번거로운 메모리 덤프를 하는 이유는 헤더값이 없기 때문에 이러는 거다.


비트로커 타령하는 애들은 컴맹이라고 보면 되는거지?


리눅스는 보안이 좋아서 메모리 암호화가 필요없지만, 윈도우즈는 보안 병신이라 베라크립트 쓰려면 메모리 암호화가 필요함.

애초에 윈도우는 사용자가 다운로드 받는 파일이나 하는 일들을 윈도우 서버로 보고함.

리눅스유닉스와는 달리 악성 코드가 사용자 몰래 실행되는게 가능하기도 하고.


윈도우용 베라크립트는 경찰 입장에서 헤더값이 없어서 메모리 덤프 공격이 필요하지만, 비트라커는 헤더값이 그대로 노출되는 병신이라 메모리 덤프를 할 필요조차 없음.


Trim이 VeraCrypt 사용에 끼치는 악영향

Trim이 VeraCrypt 사용에 끼치는 악영향


https://www.veracrypt.fr/en/Trim%20Operation.html

일부 저장 장치 (예: USB 플래시 드라이브를 포함한 일부 솔리드 스테이트 드라이브)는 이른바 ‘Trim’ 작업을 사용하여 드라이브 섹터를 여유 공간으로 표시합니다.

파일이 삭제 될 때. 결과적으로 이러한 섹터에는 VeraCrypt에 의해 암호화 된 드라이브의 일부에 위치하더라도 암호화되지 않은 0 또는 기타 정의되지 않은 데이터 (암호화되지 않은)가 포함될 수 있습니다.

VeraCrypt는 시스템 암호화의 키 범위 내에있는 파티션 (숨겨진 운영 체제가 실행되지 않는 한) 및 Linux 기본 커널 암호화 서비스를 사용하는 모든 볼륨의 Linux에서 트림 작업을 차단하지 않습니다.

이러한 경우 공격자는 어떤 섹터에 여유 공간이 있는지 알 수 있으며 (추가 분석 및 공격에이 정보를 사용할 수 있음) 그럴듯한 거부 가능성이 부정적인 영향을받을 수 있습니다.

이러한 문제를 방지하려면 트림 작업을 사용하는 드라이브에서 시스템 암호화를 사용하지 말고

Linux에서 Linux 기본 커널 암호화 서비스를 사용하지 않도록 VeraCrypt를 구성하거나 VeraCrypt 볼륨이 다음을 사용하는 드라이브에 있지 않은지 확인하십시오.

- Veracrypt 공식 문서


SSD에 대한 지식을 가지고 있으면 더 잘 이해할 수 있을거라 생각한다.

쉽게 말하면 드라이브의 암호화 여부와 드라이브에 사용하는 데이터의 크기가 노출된다. 숨겨진 볼륨을 쓰는 것이 의미가 사라지고 내가 은폐한 파일의 용량이 드러날 수 있다. 미국에서는 이런 메타데이터만을 가지고 법정에서 유죄 판결을 받은 사례가 존재한다고 한다.

때문에 VeraCrypt의 설정에서는 비 시스템 드라이브의 Trim을 비활성화 하도록 되어 있다. 물론 Trim을 사용한다고 암호화된 데이터가 공개되거나 하지는 않지만 말이다. 하지만 공격자들은 메타데이터도 유용한 정보로 취급하기 때문에 가급적 정보의 노출을 최소화 할 필요가 있다.

문제는 Trim을 사용하지 못하면 Veracrypt를 사용하는 SSD에서의 완전 삭제에 애로사항이 생긴다. 따라서 좋은 보완점을 제시할 필요가 있다.

전체 드라이브를 한번 암호화한 다음 SSD 내부에 암호화된 컨테이너를 생성해 파일을 분산시키는 방법이 있다. 또 Tails OS나 Whonix live mode등 휘발성 OS를 사용할 수 있다. VM을 사용해 데이터 누출을 막는 것은 전문가들이 추천하는 유용한 안티 포렌식 방법이다.

마지막으로 암호화한 데이터를 공격자가 복호화 할 수 없도록 키를 파괴하는 방법이 있다. 대부분의 사람은 긴 비밀번호 여러개를 일일이 기억하면서 쓰지 않고 Bitwarden이나 KeePassXC와 같은 비밀번호 관리 소프트웨어를 사용한다. 그러니 관리 소프트웨어의 데이터만 지워버리면 아무도 데이터를 읽을 수 없게 된다.

문제는 비밀번호 관리 소프트웨어도 Veracrypt로 암호화한 SSD에 저장하는 경우가 부지기수라는 거다. 고민이 깊어진다.

암호화 비번 계속 틀려서 리눅스 부팅 못 하는중

1년 넘게 쓴 암호화 비번 계속 틀려서 리눅스 부팅 못 하는중

한국어 문장인데 영타로 쳐서 대문자, 소문자, 숫자, 특수문자 섞어서 만들었는데, 문장이 무슨 내용인지는 아는데 아마 문구에 쓰인 단어가 미묘하게 틀려서 계속 틀린 암호라고 뜨는거 같은데

복구 돌려보면 생각보다 많이 나옴

#25176

2020-4-2 오전 3:32

Veracrypt는 무조건 쓰는게 좋다

밖에 있는 컴퓨터로 USB에 자료 다운받은 상태였는데 다 옮긴뒤에 1차 포맷하고 빈공간 1회 덮어씌우기 했거든

복구프로그램 유료버전 크랙으로 돌려보니깐 100메가 넘는 비디오나 4메가 이상 사진파일까지 끈적끈적하게 검출되더라 그게 일주일 전이었는데 아무리 바빠도 컴퓨터에서 하는 모든 다운로드에 베라크립트 써야겠다는 생각이 들었음


1 복구 돌려보면 생각보다 많이 나옴


2 HDD 씀 ? SSDTrim이 있어서 보안은 더 좋다


3 hdd는 외장으로 돌려서 걍 빠른포멧시키고 다 암호화시키던가해야지 여러번 밀려면 암걸린다 ㅋㅋㅋ 본체를 hdd쓰는건 병신짓이고

http://55adq4ncecjgxfymv4tdl54g4t2dayqju65wgqpik67suvtiz67kpzad.onion/p?id=25176

외장 HDD

외장 HDD는 별도의 전원이 필요한 3.5인치보다는 USB 전원만으로 작동하는 2.5인치 이하가 좋다.


웬만하면 1TB짜리 2.5인치 HDD 하나 사라. 그게 장기적으로 좋음. 그래서 베라크맆트로 암호화해서 쓰면 됨.

컴퓨터랑 연결은 별도의 외장 HDD 케이스 살 필요 없고, 그냥 컨버터로 USB 전원으로 쓰는 게 편함. 별도 외부 전원 연결하려면 귀찮음.

3.5인치 HDD는 외부 전원 없으면 작동 안 하는 게 많고, 2.5인치는 대부분 USB 전원만으로 작동함. 1.8 인치는 가격이 비싸서 못 쓰고. 3.5인치도 USB 플러그 2개 꽂으면 작동하는 것들도 많다.


  • LANstar USB3.0 to SATA HDD/SSD 컨버터/USB 보조전원/2.5형/3.5형 HDD/SSD를 연결하여 외장하드로 사용/5Gbps 전송속도

10,700원

https://smartstore.naver.com/dpk/products/2913792262


  • BE490 Coms USB 3.0 컨버터(HDD용 SATA 3). USB 보조전원 HDD연결 하드연결 사타3연결 외장하드연결 외장하

15,270원

http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=2105481883


  • SATA to USB3.0 젠더 유니콘 HD-500SATAA (HDD커넥터)

18,500원

이 제품은 2.5인치는 USB 전원만으로 작동하고, 3.5인치는 외부 전원을 연결하여 작동한다.

http://item.gmarket.co.kr/Item?goodscode=1161565137


외장 HDD 케이스를 사는 것보다 그냥 케이블형 컨버터만 사서 연결하는 게 여러개의 외장 HDD를 사용하기 편하다. 또한 별도의 외부 전원이 들어가는 제품보다 USB 전원으로 작동하는 쪽이 편하다.

일반적으로 HDD에 꽂는 쪽은 SATA랑 전원 플러그가 하나로 합쳐져있고, 컴퓨터(랲탚이나 데스크탚)에 꽂는 쪽은 2개의 USB 플러그가 있다. 하나는 "데이터&전원"이고, 다른 하나는 혹시 전력이 모자랄 경우 보충해 줄 "보조 전원"이다.


리넠스에 외장 HDD 마운트하기

우분투 문서 참조.

하드웨어 암호화 기능과 BitLocker 사용 자제

하드웨어 제조사가 자체적으로 암호화를 구현하는 하드웨어 방식 암호화 제품은 보안 취약점이 있을 가능성이 높아 하드웨어 방식 암호화 단독으로는 사용하지 않는 것이 안전하다. 베라크맆트 (VeraCrypt) 등 소프트웨어 방식 암호화만 사용하거나, 소프트웨어 방식과 하드웨어 방식을 같이 사용해야 한다.


마이크로소프트빝라커 (BitLocker, 비트라커)의 경우 하드웨어 방식 암호화를 지원하는 솔리드 스테이트 드라이브 (SSD), USB 메모리, 하드 디스크 드라이브 (HDD) 등이 있을 경우, MS에서 만든 암호화 방식을 쓰지 않고 하드웨어에 내장된 암호화 방식을 쓰기 때문에 보안상 위험하다. 베라크맆트를 사용하자.


  • 구멍뚫린 SSD 보안 "하드웨어 자동 암호화 취약"

2018.11.08.

크루셜(마이크론)과 삼성전자 SSD의 하드웨어 자동 암호화 기능이 쉽게 무력화된다는 사실이 드러났다. 네덜란드 라드바우드 대학 연구진이 이번 달 초 공개한 논문을 통해 이와 같이 밝혔다.


■ 보안 강화 위한 SSD 자동 암호화 '무용지물'

SSD 암호화는 데스크톱 PC나 노트북에 설치된 SSD를 분리해 다른 PC에 연결했을 때 저장된 데이터를 쉽게 훔쳐보지 못하게 하는 용도로 쓰인다.

그러나 각 제조사업데이트용으로 공개한 펌웨어를 분석한 결과, 라드바우드 대학 연구진은 이용자 비밀번호를 몰라도 암호화 해제가 가능하다는 사실을 발견했다.

크루셜 MX100, MX200과 삼성전자 T3 포터블 SSD는 제품 개발 단계에서 기기 점검이나 디버깅에 쓰이는 특수 단자인 JTAG 단자 기능을 실제 출시된 제품에서도 차단하지 않았다. 이 단자에 케이블을 연결한 다음 각종 명령어를 전송하면 역시 암호화 해제가 가능하다.


윈도 암호화 프로그램 '비트로커'도 문제

라드바우드 대학 연구진은 SSD 제조사 뿐만 아니라 마이크로소프트 윈도 운영체제에 내장된 암호화 프로그램인 비트로커(BitLocker)에도 문제가 있다고 설명했다.

비트로커는 마이크로소프트가 2009년 윈도7부터 적용한 드라이브 암호화 프로그램이다. 주로 프로페셔널, 엔터프라이즈 등 기업용이나 전문가용 제품에서만 작동한다.

문제는 비트로커 프로그램이 SSD를 암호화할 때 일어난다. 비트로커가 SSD를 암호화할 때 자동 암호화 기능을 갖추고 있다면 기존 소프트웨어 방식이 아닌 SSD 내장 암호화 알고리듬을 적용한다. 따라서 암호화 과정에 문제가 있는 제품이라면 사실상 암호화를 하지 않은 것과 마찬가지 상태가 된다.


■ "SSD 업데이트·오픈소스 암호화 프로그램 써라"

라드바우드 대학 연구진은 이 보고서에서 대안으로 "SSD 제조사의 검증되지 않은 암호화 기법, 혹은 윈도 운영체제비트로커 대신 오픈소스 암호화 프로그램베라크립트 등을 이용하라고 권고했다.

이들 암호화 프로그램이 암호화를 위해 적용하는 프로세서명령어 AES-NI도 충분히 납득할 만한 성능을 가져다 준다는 이유에서다.

840 EVO, 850 EVO 등 내장형 SSD 제품은 자동 암호화 기능 대신 무료 소프트웨어로 암호화 기능을 이용해야 하며 T3·T5 등 포터블 SSD 제품은 전용 소프트웨어를 통한 펌웨어 업데이트가 필요하다. T1 제품은 가까운 서비스센터에서 제품을 업데이트해야 한다.

마이크론은 "이미 MX100과 MX200 등 펌웨어를 업데이트하였으며 MX300 펌웨어 역시 오는 13일(미국 현지시간) 공개할 예정"이라고 밝혔다.

http://www.zdnet.co.kr/news/news_view.asp?artice_id=20181108163903


AES-NI 관련 내용은 AES-엔아이 문서 참조.

한글 깨짐

주의 (2018.01.15)

VeraCrypt가 여러 운영체제를 지원하긴 하지만 주의해야할 점이 있다. 윈도에서 만든 볼륨, 특히 DOS타입으로 볼륨을 만들고 파일명을 한글로 생성할 경우 리눅스에서 마운트한 뒤 확인하면 파일명이 모두 깨져보인다. 이는 DOS타입으로 파일명을 생성하면 한글의 인코딩 셋이 EUCKR이기 때문으로 보인다.

http://blogger.pe.kr/638


이건 FAT으로 볼륨을 만들었을 때를 얘기하는 것 같다. 아마 NTFS로 볼륨을 만들면 이런 문제가 없을 것 같다.

http://xnw55ym75bfpxkzs.onion/res/405.html

다운로드

소스 코드 및 프로그램은 아래 링크들에서 다운로드받을 수 있다.

https://www.veracrypt.fr/en/Home.html

http://sourceforge.net/projects/veracrypt/

https://veracrypt.codeplex.com/


만약 정부에 의해 위 링크가 막힌다면 아래 파일 공유 사이트에서 다운로드받는다.

http://www.share.az/mpbovv227mwo/veracrypt_1.16_Source.tar.bz2.html

http://www.share.az/pzys4fhoymui/veracrypt_1.16_Source.zip.html

Salt

레인보우 테이블(rainbow table)과 salt에 대해서는 쏠트 문서 참조.


알고리듬

암호화 알고리듬(encryption algorithm)은 AES, Serpent, Twofish, Camelia, Kuznyechik을 지원한다. AES는 미국 정부 표준이며, Serpent와 Twofish는 AES 선정 당시 최종까지 후보로 남아있었다. Camelia는 일본에서 개발됐고, Kuznyechik은 러시아 정부 표준이다.

해시 알고리듬(hash algorithm)은 SHA-512, Whirlpool, SHA-256, Streebog를 지원한다.

SHA-256은 NSA에 의해 개발되어 NIST(미국 국립표준기술연구소)에 의해 배포되었다. 2001년에 공개되었으며 256비트의 키를 만든다. SHA-512도 256과 동일하지만 키 파일 크기가 512 비트이다.

Whirlpool은 2000년도에 Vincent Rijmen(AES의 공동 개발자)과 Paulo Barreto에 의해 개발되었으며 512비트의 키를 만든다.

Streebog는 러시아 정부 표준이며 256비트나 512비트 키를 만들지만 베라크립트에서는 512비트 키만 만든다.

AES-NI

베라크맆트 사용시, 암호화 알고리듬고급 암호화 표준 (AES)을 쓰는게 가장 속도가 빠르다.

CPU에서 AES-엔아이 (AES-NI; AES instruction set)를 지원하니까.


Assembly 언어의 경우 x86에서는 AES-NI라는, AES 암호화 복호화 연산을 하드웨어 가속할 수 있는 확장 명령어셋을 지원한다. 인텔의 경우 웨스트미어에서 처음 지원했으나 서버용 Xeon과 Core i5 이상에 한정되었으며, 하스웰부터는 Core i3 이상, 스카이레이크부터는 모든 프로세서에서 지원한다. AMD의 경우 불도저 이후의 모든 프로세서에서 지원한다.

또한 x86 기반의 프로세서를 사용하는 환경에서 암호화 기능이 탑재된 소프트웨어를 사용중일 경우 대부분의 경우 AES-NI 인스트럭션을 사용해서 AES를 처리한다. 예를 들어 OpenSSL의 경우 x86 대상인 경우 AES-NI를 사용하여 AES를 처리한다.

하드웨어 가속인 AES-NI를 지원하는 프로세서라면 AES암호화 사용시 별 무리 없이 베라크립트 사용이 가능하다.

CPU의 AES-NI가속을 사용하기 때문에 요즘 시스템을 사용하고 있다면 시스템을 전부 비트라커로 암호화해도 퍼포먼스 저하는 거의 없다.

소프트웨어 라우터에서 VPN 기능을 사용할 예정이라면 AES-NI가 지원되는 CPU를 사용하면 더욱 좋다. CPU 점유율 차이가 제법 나며, CPU 점유율을 적게 차지할수록 전력소모에서 더 많은 이득을 볼 수 있다. 그리고 대중적으로 많이 사용되는 OpenVPN은 그 특성상 코어 한개만 굴리는 것으로 악명이 높다.

인텔 샌디브릿지 마이크로아키텍처는 AES-NI 명령어 세트에 의해 AES 암호화/복호화 성능이 향상되었다.

PIM

PIM(personal iterations multiplier)은 무작위 대입 공격(brute force attack)을 방어하기 위하여 사용한다.


PIM을 사용하려면 볼륨(volume)을 만들 때 Use PIM을 체크하면 된다. 그러면 다음 페이지에서 Volume PIM 숫자를 입력한다. 이 PIM 숫자는 마운트 때마다 입력해야 하므로 외워놔야 한다. 0을 입력하면 기본 반복 횟수인 485회를 하게 된다. 485회보다 많으면 브루트 포스로 암호를 깨기는 힘들어지지만 마운트에 시간이 오래 걸리고, 485회보다 적으면 마운트는 빨리 되지만 브루트-포스 공격에 취약해진다.[1] 비밀번호가 20자리 이상이어야 그나마 PIM을 하지 않아도 어느정도 안전하다.


PIM 값을 설정하지 않을 경우 시스템 파티션의 경우 HMAC-SHA-256는 200,000번, HMAC-RIPEMD-160는 327,661번 반복한다. 일반 컨테이너(볼륨 파일)의 경우 HMAC-RIPEMD-160은 655,331번, HMAC-SHA-512, HMAC-SHA-256과 HMAC-Whirlpool은 500,000번 반복한다.[2] 시스템 파티션 암호화시 PBKDF2-RIPEMD160을 1,000번 반복해서 사용하고, 일반 컨테이너(볼륨 파일)와 비시스템 파티션에선 최대 2,000번 반복해서 사용하는 트루크맆트와 비교해보면 200배 이상 많이 반복해서 사용한다.


만약 PIM 값을 설정할 경우 시스템 파티션의 경우 PIM x 2048번을 반복하고, 비-시스템 파티션이나 파일 컨테이너의 경우 15000 + (PIM x 1000)번을 반복한다. 20자 미만의 비밀번호의 경우 PIM 값은 98(시스템 파티션의 경우) 또는 485(비시스템 파티션이나 파일 컨테이너의 경우) 이상이어야 하며 20자 이상의 비밀번호의 경우 1만 설정해도 된다.


베라크맆트가 반복 횟수를 늘려서 무작위 대입 공격(brute-force attack)이나 사전 공격(dictionary attack)에 강해진 건 좋은데 트루크맆트에선 0.1초면 끝나던 암호화 볼륨의 마운트가 수십초가 걸리는 건 심각한 문제이다. 심지어 기본 값 이하로는 PIM 값을 설정하지도 못 하여 트루크맆트처럼 빠르게 마운트할 수도 없다. 차라리 트루크맆트를 쓰면서 비밀번호를 20자 이상으로 설정하고, 키파일을 함께 사용하는 게 더 나아보인다.


암호화할 때 끼워넣어 해독을 어렵게 만드는 문자열인 솔트(salt)도 트루크맆트보다 베라크맆트에서 더 강력하게 지원한다.


트루크맆트는 시스템 파티션 암호화시 PBKDF2-RIPEMD160 알고리듬을 1,000번 반복해서 사용한다. 일반 컨테이너(볼륨 파일)와 비시스템 파티션에선 최대 2,000번 반복해서 사용한다.[3]


베라크맆트는 이 변환 과정을 강화했다. 베라크맆트는 시스템 파티션에 대해 PBKDF2-RIPEMD160 알고리듬을 327,661번 반복하고, 일반 컨테이너와 다른 파티션들엔 RIPEMD160의 경우엔 655,331번, SHA-2(안전한 해시 알고리듬)와 Whirlpool의 경우 500,000번 반복한다.


이 변환 과정이 베라크맆트가 암호화된 파티션을 여는 작업을 느리게 하지만, 이 작업은 베라크맆트를 트루크맆트에 비해 무작위 대입 공격(brute force)에 대해 10~300배 강하게 만들어 준다.(트루크맆트는 볼륨을 마운팅하는데 0.1초 정도 걸리는데 베라크맆트는 훨씬 오래 걸린다고 한다.[4] 그래도 버전 업이 빨리 되고 있으니 현재는 많이 개선되었을 것이다.)

사용방법

트루크맆트와 동일하니 트루크맆트 문서를 읽어보기 바란다.

간혹가다 볼륨을 마운트할 때 ‘장치가 준비되지 않았습니다’와 같은 오류가 뜨는 경우가 있는데, 이 때는 명령 프롬프트를 관리자 권한으로 실행한 다음 ‘mountvol /e’를 치고(따옴표 제외) 엔터를 누른 후 재부팅을 하면 해결된다.


libgtk2.0-0가 없어서 실행이 안 될 경우

터미널에서

$ veracrypt

라고 입력했는데

veracrypt: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

와 같은 에러 메시지가 뜨면서 실행이 안 될 경우

$ sudo apt install libgtk2.0-0

를 입력하여 libgtk2.0-0를 설치해준다.

TrueCrypt Mode

예전에 TrueCrypt에서 만든 암호화 볼륨을 VeraCrypt에서 열려면 TrueCrypt Mode를 체크하고 마운트해야 한다.

숨김 볼륨

숨김 볼륨(Hidden vloume)의 경우 제 3자가 숨김 볼륨의 존재를 알 수 있는 방법이 없다. 즉, 외부 볼륨에 적당한 암호를 걸어놓고, 적당한 파일을 숨겨놓으면 숨김 볼륨의 존재를 부인하더라도 입증할 방법이 없다.


볼륨은 파일 저장소로 리눅스에선 FAT과 EXT 2, 3, 4 이렇게 4가지 종류를 쓸 수 있고, 윈도우즈에선 NTFS와 FAT을 사용할 수 있다. 둘 다 장단점이 있는데 FAT은 4GB 이상의 파일은 인식할 수 없으며 NTFS는 외부 볼륨 크기의 반 이하 크기의 숨긴 볼륨만 만들 수 있다.(NTFS는 파일을 저장 공간의 중앙에서부터 저장하기 때문에 나머지 절반 정도의 크기에만 숨긴 볼륨을 만들 수 있다.)


외부 볼륨에는 히든 볼륨을 만들기 전 추가한 파일 외에는 나중에 파일 추가를 안 하는 게 좋다. 숨김 볼륨 영역을 덮어써서 숨김 볼륨을 파괴할 수 있기 때문이다. 외부 볼륨에는 보여주기용으로 불법은 아니지만 민감한 파일을 넣어놓으면 된다.

숨김 볼륨 보호(Hidden Volume Protected) 기능을 사용하면 숨김 볼륨에 파일을 덮어씌우는 걸 막을 수 있다는데 이걸 쓰면 히든 볼륨을 사용함으로써 얻으려고 했던 부인 능력을 훼손하므로 최신 버전에서는 해당 기능이 빠졌다고 생각된다. 파일을 볼륨에 꽉 채워서 복사하려고 했을 때 거절한다면 히든 볼륨이 있다는 증거가 되기 때문이다.


동일한 볼륨 파일에 대해 외부 볼륨이나 숨김 볼륨, 둘 중 하나만 마운트(mount)시킬 수 있으며 마운트시 입력하는 비밀번호에 따라 어떤 볼륨이 삽입될지가 결정된다.


몇 백GB짜리를 생성하는 데 몇 시간씩 걸리는 외부 볼륨과는 달리 숨김 볼륨(hidden volume)은 생성에 1초 이하의 시간만 걸린다.


동적 보관소(dynamic container)에는 숨김 볼륨을 만들 수 없다.


총 용량이랑 차이나는 부분 있는거 바로 티나던데

히든 볼륨 용량 채워보면 총 용량이랑 차이나는 부분 있는거 바로 티나던데 히든볼륨 있는것도 금방 걸리는거 아님?


보호 안 걸어두면 외부볼륨에서 걍 덮어씌움. 보호 걸려면 히든볼륨 비번도 알아야하고.

키파일

비밀번호비밀단어(password)나 비밀구(passphrase)만 사용하는 것보다 키파일(keyfile)도 같이 사용하는 게 훨씬 안전하다.


리눅스

설치의 경우 압축 파일의 압축을 푼 후 터미널에서 해당 폴더로 들어간 후

./veracrypt-1.16-setup-gui-x64

하면 된다.(64비트일 경우)

실행은 터미널에서

veracrypt

하면 된다.

우분투의 경우 런처에 고정시켜놓고 쓰면 된다.


리눅스의 경우 만약 볼륨의 소유주가 root여서 볼륨에 대한 권한이 없어서 작업이 안 되면

sudo nautilus

한 후 노틸러스(파일 관리자)의 해당 볼륨에서 마우스 오른쪽 버튼을 누른 후 속성의 권한에서 그룹을 자신의 리눅스 계정으로 바꾸고 "파일 만들기 및 삭제" 권한으로 변경하면 된다.


리눅스에선 윈도우즈용 베라크맆트 및 트루크맆트의 동적 보관소(dynamic container. 파일을 넣을 때마다 확장되는 볼륨 파일. 실제 파일의 크기만큼만 HDD의 공간을 차지한다.) 기능을 쓸 수 없다.


또한 리눅스에선 암호화 볼륨 생성시 빠른 포맷(quick format. 파티션의 정보 부분만 다시 쓰고, 나머지 영역은 그냥 놔두기 때문에 0.1초면 끝난다.[5] 대신 암호화 이전에 HDD에 있던 데이터는 파일 복구 툴로 쉽게 복구할 수 있다. 1 TB정도되는 암호화 볼륨을 일반 포맷으로 생성할 경우 몇 시간정도 걸린다.) 기능을 사용할 수 없다.

위험

Tor + 노스크립트 + veracrypt c드라이브 외부저장장치 암호화 한 상태에서 포렌식에 걸려서 경찰에 잡힌 사례들어본적 있어? 그냥 궁금함 ㅇㅇ 답변해주면 진심으로 감사드림.

전원 끄고 몇초 동안 메모리에 남아있는 개인키해독한 적은 있음.

미국에서 포렌식은 실패했지만 배심원들이 정황 증거만으로 유죄 판결 때린 적도 있음.

진짜로? 메모리에 남은 개인키로 해독이 가능하다고? 그거 전원 끄면 바로 휘발되는거 아닌가

저정도 기술력은 남한 경찰한테는 없을 것 같고, FBI같은데서나 쓸 것 같다. FBI도 사실상 쓰기 힘들어. 문 부수고 들이닥치는데 10초는 걸리거든.

전원 끄고 10초 정도 안에 메모리에 든 내용을 보존하지 않으면 다 날아가니까.

전원 꺼도 메모리 내용이 즉각 날아가지 않고 몇초 정도 남아있다.

다크웹 어디 운영자 새끼도 30자리 넘는 비번 자기가 FBI한테 가르쳐 줌. 다른 증거가 이미 많아서 비번 안 가르쳐주면 형량이 더 세게 나올 경우 자기 입으로 부는 경우도 많음.

운영자야 서버 해킹 당하거나 하는 등 일반 사용자보다 위험하니까 일반 사용자한테는 상관 없는 얘기지만.

램 카피 뜨는 장비 들고 가서 문 부수고 들어간 다음

램 뽑아서 장비에 꽂는 식인가?

관련 링크 있냐? 궁금하다

http://c2djzrn6qx6kupkn.onion/res/38305.html

영하 50도로 냉각하면 메모리에 데이터가 몇 분은 남아있다.

Cold boot attack

콜드 붙 어탴(cold boot attack)으로 불리는 방법이 있다. 급속 냉각 스프레이로 냉각 후 메모리 내용을 덤프(dump) 떠서 다른 곳으로 옮긴 후 내용을 분석한다. 경찰이 들이닥쳤을 때 잽싸게 컴퓨터 전원을 내려버렸을 때 베라크맆트 등의 개인 키와 비밀번호가 아직 메모리에 남아있을 때 사용할 수 있다.

설령 컴퓨터 전원을 내렸어도 경찰이 몇 초 안에 문 부수고 들어와서 급속 냉각 스프레이로 영하 55도씨로 메모리 온도 떨구고 메모리 덤프 뜨면 메모리에 있던 개인키랑 비밀번호로 암호화 해제 할 수 있지.


  • Memroy Analysis[1]

http://gflow-security.tistory.com/entry/Memroy-Analysis1

  • 기상천외한 해킹법, 수사에 활용할 수는 없을까?

http://blog.daum.net/spogood860/454

  • [논문리뷰] 메모리 포렌식, 아직도 가야할 길

https://cpuu.postype.com/post/1149394


  • Lest We Remember: Cold Boot Attacks on Encryption Keys

영하 50도면 메모리에 데이터가 몇 분은 남아있다.

https://www.usenix.org/legacy/event/sec08/tech/full_papers/halderman/halderman_html/


  • 급속냉각스프레이 FRE400

HFC(hydrofluorocarbon)를 냉매(refrigerant)로 사용하여 -55도씨로 급속 냉각

400mL 20,900원

http://www.wyeshop.co.kr/shop/shopdetail.html?branduid=134068


요즘은 하드 디스크 드라이브(HDD) 대신에 솔리드 스테이트 드라이브(SSD)도 많이 쓰므로 SSD 보안 관련 내용은 덤으로 넣었다.

  • SSD 포렌식:데이터 복구 (SSD Forensics:Data Recovery)

http://forensic-proof.com/archives/3221


메모리 덤프파일을 역추적해서 비번을 알아내더군요

  • #12695 2019-6-30 오후 11:21 [삭제]

암호화로 내 휴대폰을 지키는 방법 2019.05.13 03:55

1. 안드로이드의 경우 RAM포렌식 당한다면 암호화 가 유출될 수 있습니다 (7.0 기준) 만약 나의 데이터가 위험할경우 반드시 전원을 끄세요 RAM은 전원을 끄면 모든 데이터가 소멸됩니다

https://smpeople.net/story_board/16430727

[정보] 내 하드디스크를 국가기밀급 보안으로 - Veracrypt 사용하기 2019.04.22 03:33

그래머나찌 2019.04.24 05:36 베라크립트 쓰시는 분들께 충고하나 더 해드리자면, 시스템쪽도 반드시 암호화해두시는걸 권해드립니다.

https://www.youtube.com/watch?v=0npTlOq6q_0

비트락커 깨는 프로그램 시연 유튜브 영상인데요. 아마 비슷하게 베라크립트도 깨질거라고 봅니다. 영상 간단히 요약하자면 메모리 덤프파일들이 C드라이브에 생성이 되는데 이걸 역추적해서 비번을 알아내더군요.


근데 저도 윗분처럼 이게 어느정도로 법적인 방어가 될진 모르겠네요. 일단 토렌트같은것들은 아이피로 확인할텐데 아이피는 공유기 해킹당했다고 변명이라도 되지 않을까 싶기도 하구...

https://smpeople.net/story_board/15345473


1: 데이터가 드라이브에 남는 경우가 크게 세가지 있는데 절전모드(hibernate), 블루스크린시 메모리덤프, 램용량 초과시의 페이지파일 이렇게 됨. 절전모드로 안들어가게 설정하고, 파티션을 나누든 용량을 채우든 해서 c드라이브 남은 용량을 램용량 이하로 유지하고(이미 메모리덤프 파일이 남아있으면 찾아서 지우고 계산해야함), 페이지파일 설정에서 사용 안함으로 설정해놓으면 베라크립트의 암호가 하드에 기록될 일은 거의 없음.

        [삭제] 2019-7-1 오후 5:12


2: >1 : 근데 포렌식암호뿐만 아니라 메타데이터가 더 유용하게 써먹혀서, 레지스트리나 mbr영역에 남는 파일명,크기, 경로 이런것도 고려를 해야함. 그니까 위 3가지 대책에 추가로 가상머신 돌려서 일반사용자가 건드릴수 없는 영역에 메타데이터가 남지 않도록 해야 진짜로 완벽한 보안이 되는거임. 귀찮으면 걍 테일즈 써라.

        [삭제] 2019-7-1 오후 5:13


3: >2 그냥 C 드라이브를 통째로 암호화하면 됨.

        [삭제] 2019-7-1 오후 6:03


7: >3: 경찰이 암호화 해제해달라고 하면 어떡할건데? c드라이브 암호화 해도 풀어버리면 메타데이터 바로 찾을수 있는데? 압수수색을 할 정도면 정황증거가 어느정도 존재한다는 전제일텐데, 형법으로도 피의자에겐 성실한 수사협조의 의무가 있고 비협조적으로 나갈시 법적으로 불리하게 작용할 수 있음. 그리고 제일 현명한건 '합리적으로 따져봤을때 켕기는게 전혀 없게끔 위장하는 것'이지 통념적으로 평범한 야동을 가진 사람이 굳이 드라이브 전체 암호화에 경찰한테도 비협조적으로 나갈거 같음?

        [삭제] 2019-7-1 오후 7:35


8: >7 기억이 안 난다고 버팅겨야지. 그러면 증거 불충분으로 무죄 뜨거나 검찰이 증거 갖고있는 아청물 1개에 대해서만 유죄 뜨거나. 비번 풀어줘서 아청물 1 TB 가지고 있다는 사실 보여주면 처벌이 더 강해질 것 같음.

        [삭제] 2019-7-2 오전 1:48


9: >8 윈도우즈랑 리눅스랑 둘 다 깔아놓고 아청물은 전체 암호화한 리눅스에서만 보면 됨. 그러면 C 드라이브 암호화할 필요도 없고, 리눅스 비번은 리눅스 쓰기 어려워서 설치만 해놓고 자주 안 써서 기억이 안 난다고 둘러대고.

        [삭제] 2019-7-2 오전 1:50


10: >9 인터넷 써버에나 쓰는 운영 체제고 터미널에 명령어 입력해서 쓰는 거라 리눅스 쓰기 어렵다고 그러면 틀딱 판사 새끼도 납득할 것임. 왜냐하며뉴래눅스가 뭔지도 모르는 컴맹일 가능성이 높으므로.

        [삭제] 2019-7-2 오전 1:53


4: 나는 그냥 우분투 리눅스에서 전체 암호화해놓고 쓴다

   -리눅서     [삭제] 2019-7-1 오후 6:09


5: 어차피 집 문은 철문이라 부수는데 몇 분은 걸림. 그 사이에 랩탑 전원 내려버리면 됨. 택배기사나 경비실, 아랫집에서 올 때는 항상 컴퓨터 끈 다음에 문 열어주고. TV 보니까 천장 누수 때문에 아래층에서 찾아온 척 하고 문 열게 한 다음에 압수 수색 영장 들이대는 건 진짜 머리 잘 썼더라.

        [삭제] 2019-7-1 오후 6:12


6: >5 압축 질소 가스 스프레이메모리를 급속 냉각 시켜서 데이터를 보존한 후 덤프 뜨는 방법도 있긴 한데, 그게 걱정되면 랩탑을 어디에 숨겨놓고 문 열면 됨. 경찰이 뒤져서 찾아낼 쯤에는 이미 의 모든 데이터 다 날아간 다음임. 한 10분에서 15분만 지나도 하나도 안 남고, 1초라도 더 시간 끌 수록 메모리에 남아있는 데이터량은 점점 줄어들음.

        [삭제] 2019-7-1 오후 6:15


11: >6 질소가 아니라 HFC(hydrofluorocarbon)같은 걸 냉매(refrigerant)로 쓰고, -55도씨로 급속 냉각하는 방식인데. 400mL 한 캔에 2만원 정도 하고.

        [삭제] 2019-7-2 오후 1:43

12: 위 유투브 동영상은 C 드라이브 암호화 안 한 상태에서 볼륨 하나만 암호화해서 쓰는 경우인데 Elcomsoft Forensic Disk Decryptor라는 포렌식 툴을 이용해서 memoryHDDdump를 뜨고, 그 덤프 파일에서 volume master key를 찾는 거네. key data를 hex (hexadecimal, 16진법) 형태로 추출하네. 그 외에 "Not My Fault"라는 프로그램으로 하는 방법도 보여주고.

    [삭제] 2019-7-2 오후 6:14

13: >12 그런데 현실적으로 여기 있는 애들은 대부분 C 드라이브를 암호화해놓고 쓰거나, 리눅스에서 전체 암호화해놓고 쓰니까 의미는 없지. C 드라이브 암호화 안 하는 건 그냥 "나는 안티 포렌식에 대해 아무 것도 모르는 컴맹입니다." 인증이고. 외국 사례 사진이랑 설명 보니까 경찰이 덮쳤는데 방금 전에 laptop 전원을 내린 상태고, C 드라이브 암호화는 당연히 되어있으니까 바로 컴퓨터 케이스 뜯고 냉각 스프레이 뿌리고 빼서 메모리 덤프 뜨는 기계에다 넣더라.

-안티 안티 포렌식 [삭제] 2019-7-2 오후 6:43

14: >13 경찰냉각 스프레이메모리 덤프 뜨는 기계가 없으면 문 부수고 들어오기 전에 전원만 내리면 되는데, 경찰이 그런 장비가 있으면 메모리의 데이터가 완전히 날아갈 몇 분에서 몇 십분의 시간을 벌어야 함. desktop은 케이스 열고 메모리만 빼서 부러뜨려서 화장실 변기에 내리든가 어디에 숨기든가 하고, laptop도 뒷면 커버 나사 풀고 열고서 메모리만 따로 빼서 부러트린 후 숨기고. 숨기면 찾는데 시간이 걸리고, 부러트리면 메모리 덤프 뜨는 기계에서 에러가능성이 높으니까.

-디지털 포렌식 [삭제] 2019-7-2 오후 6:46

15: 근데 저 병신 새끼는 왜 이렇게 메모리에 집착하냐? 지가 딥웹 서버 운영하는 것도 아닐텐데? 페도물 보고 있거나 약 거래 중에 경찰이 온거면 몰라도 평상시에 하드에 있는 페도물이나 약 거래 증거들이 메모리에 아무 이유 없이 올라와 있을리 없는데? 하드 관리나 잘하세요 메모리 신경 쓰지말고. 한국 경찰은 그런 장비 사용할 의지도 이유도 없으니까.

    [삭제] 2019-7-2 오후 6:55

16: >15 한국 경찰이 예전에는 굵고 긴 에 있는 마약만 검사할 수 있었는데, 지금은 외국에서 검사 장비수입했는지 솜털이랑 손톱, 발톱검사할 수 있는 거 같던데? 한국 경찰이라고 맨날 그 자리에 정체돼있는 건 아니지.

    [삭제] 2019-7-2 오후 7:05

http://jqu6my2mlqp4zuui.onion/p?id=12695

암호화를 했어도 유죄 판결이 나올 수 있다

증거의 종류에는 물증심증이 있으며, 물증에는 직접 증거간접 증거가 있다. 심증만으로는 유죄 판결이 나오지 않지만, 간접증거는 유죄 판결근거가 될 수 있다.

경찰암호화된 데이터의 복호화(암호화 해제)에 실패했다고 해도 정황 증거(간접 증거)가 강력하면 감옥에 갈 수 있다.


  • Child porn suspect jailed indefinitely for refusing to decrypt hard drives

Apr 27, 2016

Man to remain locked up "until such time that he fully complies" with court order.

A Philadelphia man suspected of possessing child pornography has been in jail for seven months and counting after being found in contempt of a court order demanding that he decrypt two password-protected hard drives.

https://arstechnica.com/tech-policy/2016/04/child-porn-suspect-jailed-for-7-months-for-refusing-to-decrypt-hard-drives/


Brute-force attack

영어로는 brute-force attack 또는 exhaustive key search, 우리말로는 무차별 대입 공격, 무작위 대입 공격, 브루트 포스 공격, 브루트-포스 공격이라 부른다. 주로 암호학에서도 쓰이는 방법이긴 하지만, 굳이 암호학만의 문제는 아니고 다른 알고리듬 분야에서도 사용되고 있다.

장점...이라 할 수 있나?

조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 문제를 푸는 것인데, 얼핏 무식하다고 생각할 수도 있겠지만 항상 정확도 100%를 보장한다는 점에서, 자원만 충분하면 가장 무서운 방법이다. 이론적으로 가능한 모든 경우의 수를 다 검색해 보는 것이라 정확도 100%가 항상 보장되니, 암호학에서는 가장 확실한 방법으로 통용되고 있다. 무엇보다도 암호 확인 작업이라는 것이 손으로 입력한 문자열의 동일 여부를 확인하는 것이기 때문에, 가능한 경우를 하나씩 대입하다 보면 언젠가는 암호를 찾을 수 있게 되는 식이다.

또한 브루트 포스의 특장점은 거의 완벽하게 병렬 작업이 가능하다는 점이다. 이 때문에 병렬 프로그래밍 기법을 사용하거나, GPGPU이용하기도 하며, 여러 대의 컴퓨터를 연결해서 동시에 작업할 수도 있다. 이렇게 하면 투자 자원에 비례해서 문제를 해결하는 시간을 줄일 수 있다. 즉, 컴퓨터를 10대 쓰면 10일 걸릴 작업을 1일만에 끝낼 수 있다는 이야기 이다. (다만 암달의 법칙 때문에 이런 식으로 병렬화가 잘 되는 작업은 흔치 않다.)

예시

예를 들어, 4자리 숫자로 된 핸드폰의 암호는 0000, 0001, 0002... 9999 까지 총 1만개(10^4)의 조합 중 하나이므로, 이를 하나씩 대입해 보면 핸드폰의 암호를 통과할 수 있게 된다. 한번 암호를 입력해 보는데 5초가 걸린다면, 5만초 즉 14시간이면 충분하고, 이를 사람 손이 아닌 컴퓨터로 처리할 수 있다면 1초 이내로 찾아낼 수 있게 되는 것이다.

아래 영상은 터미네이터2 에서 존 코너아타리 포트폴리오를 이용해서 ATM 머신을 해킹하는 장면. (얼핏 보면 브루트 포스처럼 보이지만 화면에 나오는 내용을 보면 진짜 부르트 포스는 아니다.) http://i.imgur.com/GIceyeC.gif

실제로 DES의 경우, 개발 당시에는 무결점 알고리즘이었으나 컴퓨터 성능이 크게 개선된 지금은 브루트 포스로도 다 뚫린다. 속도는 물론이고, 공격에 필요한 DES 사전 용량 역시 현재의 컴퓨터 환경에선 충분히 감당할 수 있기 때문. MD5 역시 컴퓨터의 발전 때문에 진작에 다 뚫린 지라 이미 SHA로 갈아탄 상태이다.

자원이 시궁창

하지만 앞서 언급했듯 자원이 문제, 브루트 포스 방법에는 문제의 복잡도에 매우 민감하다는 치명적인 단점을 지니고 있다.

달리 풀어서 말하면, 문제가 조금만 복잡해져도 매우 비효율적인 알고리즘이 될 수 있다는 것이다. 특히 경우의 수가 문제의 복잡도에 따라 기하급수적으로 증가하는 경우, 문제를 해결하는 데에 필요한 자원 역시 기하급수적으로 증가한다.

이 때문에 실제로 브루트 포스는 문제의 규모가 현재의 자원으로 충분히 커버가 가능한 경우에만 쓰이고, 대부분은 동적 계획법 등으로 많이 우회하는 편이다. 심지어는 정확도를 조금 희생해더라도 어떻게든 '이론상 가능한' 자원으로 해결할 수 있게 알고리즘을 설계하기도 한다. 후에 언급할 사전 공격 역시 정확도가 약간 희생된 것이다.

이러한 단점은 대부분의 암호화 알고리즘에서 역이용하고 있는데, 무어의 법칙 덕분에 컴퓨터 성능이 꾸준히 개선되고 있다 해도 그만큼 더 복잡한 암호화 기법을 이용하면 되기 때문이다. 현 세대의 암호화 기법을 브루트 포스로 다 뚫는다 해도, 그 시간이 지나고 나면 이미 구식도 아닌 구석기 알고리즘으로 전락해 있을 법하니 그만큼 시간을 충분히 벌 수 있는 것이다.

실제로 현재 가장 흔하게 사용되는 블럭암호인 AES 기반 암호화들의 경우에는 Weak Key를 사용하지 않는 이상 키를 모르는 이상 유의미한 시간 내에 풀 수 없으며, AES-256의 경우는 초당 100(10^18) 개의 키 대입을 하는 슈퍼컴퓨터로도 3000(3 * 10^51) 년은 족히 잡아먹는다. 아직 AES-128이 완전히 깨졌다는 보고가 없는데도 하나둘씩 AES-256으로 갈아타는 이상, AES-128이 다 깨질 때 쯤이면 이미 대다수가 AES-32k, 많이 봐 줘도 AES-2k를 쓰고 있을 판이 되는 것이다.(…)

암호학에서의 브루트 포스

앞서 언급했듯, 주로 암호학에서 사용 암호화에 사용되는 key나, 찾고자 하는 비밀번호가 길 수록 시간이 기하급수적으로 증가한다.

조합 가능한 모든 문자열을 대입하기 때문에 아무리 컴퓨터가 빠르다고 하더라도 시간이 매우 많이 걸린다. 당장 영문 소문자 + 숫자 조합만 쳐도 n자리의 암호를 뚫는 데에는 <math>O\left(36^n\right)</math>의 시간이 걸린다. 즉, 10글자만 되어도 36^10 = 3,656,158,440,062,976 가지가 된다. 이 정도면 쉬운 암호 알고리즘이라 해도 초당 1억번 계산 기준 대충 14개월 걸리는 수준이다. 물론 암호가 더 복잡하거나 길이가 더 길어지면 수백 ~ 수천 년은 기본으로 기다려야 한다.

좀 더 확장시켜서 암호로 입력할 수 있는 알파벳의 수를 k개라 치면, 이를 조합한 n자리 암호를 뚫는 데에는 <math>O\left(k^n\right)</math>의 시간이 걸리니 P-NP 문제로 치면 이 문제는 EXP 완전 문제가 된다. 사정이 이러니 낭비되는 시간을 최소화하려고 도입한 게 레인보우 테이블인데, 입력할 때 마다 계산(특히 해쉬 함수)하는 대신 미리 계산된 테이블을 참조하는 것이기 때문에 시간이 훨씬 단축되는 것이다. 물론 풍선 효과로 인해, 저장공간이 아주 많이 희생된다.

실제적인 예시

예를 들어 예전 하나 워드 같은 프로그램은 문서에 암호를 걸어 놓은 후, 문서 파일을 헥사 에디터로 열어보면 암호가 문서 파일 헤더에 적혀있는 것을 볼 수 있다. 즉, 문서 파일 자체가 암호화가 된 것이 아니라, 문서에 암호가 걸렸다라는 표시만 해 놓고, 프로그램에서 사용자에게 암호를 물어보아 암호가 동일하면 문서 파일을 보여주는 구조이기 때문에 암호를 아무리 어렵게 저장을 해도 손쉽게 암호를 통과할 수가 있게 되는 것이다.

하지만, 아래한글, MS워드, ZIP 포맷과 같은 파일 포맷은 사용자가 입력한 암호를 통해서 데이터를 암호화 했기 때문에, 암호를 통과하는 방법 따위는 존재하지 않고, 암호를 하나씩 대입해서 데이터를 풀어보는 것 이외에는 우회 방법 따위는 존재하지 않는다. 따라서, 이러한 암호화 된 파일을 풀어준다고 나와있는 프로그램들은 이러한 brute force공격을 대신 수행하주는 프로그램으로 봐도 무방하며, 해커들이 웹페이지에 로그인을 시도할 때에도 자주 사용된다. 브루트 포스 방식을 이용한 공격은 암호가 걸린 문서나 압축 파일의 암호를 해독하는데도 사용하지만, 온라인 로그인이 필요한 서비스에도 역시 동일한 방식으로 공격할 수 있다. 만일 서버에서 특정 사용자의 ID에 대해서 ID/PW 를 대입하는데 실패 횟수에 대해서 제한을 걸지 않는다면, 병렬로 사용자의 PW를 무차별 대입해서 암호를 알아낼 수 있기 때문에, 제정신을 가진 서버 관리자+프로그래머라면 비 정상적인 로그인 시도에 대해서는 항상 대비를 해야만 한다.[* 간혹 웹페이지를 통한 비정상적인 로그인 시도에 대해서는 차단을 하지만, POP3와 같은 눈에 잘 보이지 않는 서비스에 대해서는 비정상적인 로그인 시도를 막지 않아서 사용자 계정이 털리는 경우가 있다.]

유사한 방식

위에서도 나오듯이 정말로 처음부터 끝가지 무작위 공격을 하는것은 시간이 오래 걸리고 비효율적이며, 특정 대상을 지정하는게 아닌 "최대한 대량"의 계정에 대한 공격을 수행하기에는 불필요하다. 왜냐하면 100개의 계정을 공격 해서 1개를 뚫을 시간에 100000개의 계정을 공격해서 1개를 찾는게 시간적으로도 빠르기 때문이다. 따라서 암호를 대입할 때 a, b, c, .... aa, ab, ac..... ba, bb, bc, .... 와 같은 모든 가능한 조합을 대입하는 방법 대신 사용자들이 많이 쓰는 암호를 - 예를 들자면 abcd, 1234, qwert, q1w2e3, .... - 모아서 대입하는 방법도 많이 쓰이는데, 이를 사전 공격(Dictionary attack)이라고 한다.

Brute-force attack 방어 방법

다른 사람에게 브루트 포스로 암호가 털리는 것을 원치 않는다면, 다음 사항을 지키자.

  • 암호는 최소 10자리 이상을 사용하자. 암호가 12자리를 넘어간다면 슈퍼 컴퓨터를 가져와도 안전하다.
  • 암호에 특수문자를 사용하면 좀더 좋겠지만, 특수 문자 안 쓰고 그냥 암호가 길기만 해도 된다. 아무리 특수 문자를 써도 암호가 6자리 이하라면 털릴 것을 각오해야 한다.
  • 대부분 사전 공격부터 가하기 때문에 최소한 다음과 같은 단어들을 쓰는것은 자살행위이다. 브루트 포스 툴인 John The Ripper의 내장 사전파일의 맨 앞의 일부는 다음과 같다. 123456, abc123, password, computer, a1b2c3, qwerty, secret. 이것 말고도 3천여게정도 더 있으니 차라리 단어를 좀 섞자.
  • 여러 단어를 조합해서 만든 패스워드는 기억하기 쉽고 의외로 엔트로피가 높다. [[1]] 사전공격이 걱정 된다면 일반적이지 않은 문자열을 넣어주면 좋다.
  • 문장도 기억하기 어렵지 않고 사전공격에 강한 편이다. 단, iloveyou처럼 너무 정상적이거나 유명한 문장은 털리기 쉬울 수 있으므로 약간 비틀어 넣는 것이 좋다.

Dictionary attack

dictionary attack

~~事前에 하는 공격이 아니다~~

~~사전으로 맞으면 아프긴 하겠지만 그런 의미도 아니다.~~

암호화되어 저장된 비밀번호를 알아내기 위한 공격방법 가운데 하나. 주로 암호학에서 쓰이고는 있지만 동적 계획법 중 하나라 생각하면 알고리즘에도 포함될 수 있다.


보통 널리 사용되는 단어나 날짜, 전화번호 등과 같은 패턴들을 사전형태로 만들고 이들을 조합하는 방식으로 공격한다. 얼핏 들어서는 단순 대입법 못지않게 삽질로 생각하는 사람들이 많지만 의외로 적중확률이 높은 공격방법이다. 이는 사람들이 자신의 생일이나 전화번호, 이름 이니셜 등과 같은 특정한 패턴을 사용하는 경향이 있기 때문이다.

특히, 사람들은 보통 귀차니즘에 빠져서 동일한 비밀번호를 쓴다거나 거의 비슷한 비밀번호를 쓰는 경향이 많다. 게다가 한 번 털린 비밀번호는 공격자가 사전에 등록해놓고 계속 이용해먹는 경우가 많기 때문에, 하나가 털렸으면 죄다 털린다. 그렇기에 어디서 비밀번호가 노출된 적이 있다면 비밀번호 패턴을 완전히 바꾸는 것이 가장 바람직한 방법이다.

참고로 숫자나 특수문자를 썼다고 자신의 비밀번호는 안전하다고 믿는 사람들이 있는데, 지나치게 과신하는 것은 금물이다. 어차피 사람들 생각하는 것이 다르다곤 하지만 실제 까보면 별 차이도 없을 뿐더러, 대개 간단하게 조합하는 경향이 있기 때문이다. 대표적으로 "he11o^there"같은 건 거의 직빵으로 털린다.


SK컴즈 개인정보 유출 사건MD5가 보안에 취약하다는 이야기가 많이 나왔는데, 이 문제와 관련이 있다. 나온 지 오래된데다 사용률이 높다 보니 사전 분량도 방대하기 때문.


본격 해킹 게임 업링크에서도 등장한다. 다른 해킹 애플리케이션들에 비해 가격이 싸다. 실제로도 꽤 싼 편이다. 싸구려는 인터넷만 잘 뒤져도 공짜로(...)얻을 수 있고, 한국어용 알파벳 사전 파일도 중국쪽에서 싸게 싸게 만든다.


드루킹 특검

비밀번호는 반드시 자신과는 관련없는 단어들로, 최대한 길고 복잡하게 만들어야 다른 사람이 못 푼다.


  • "드루킹 일당이 걸어둔 암호 풀어라"…특검, 전문가 총동원

2018-07-18

보통의 암호는 해당 파일을 열면 패스워드를 입력하는 방식이지만 트루크립트는 파일 자체가 눈에 보이지 않도록 해 놨다는 점이 특징이다. 이 때문에 은닉된 파일이 있는지 확인하는 것조차 어려운 상황이다.

특검팀은 드루킹이 운영한 경제적공진화모임(경공모) 회원을 상대로 한 암호 해독에 협조를 받으려 했지만, 이들은 의미 있는 자료에 걸린 암호는 기억이 잘 나지 않는다고 주장하는 것으로 전해졌다.

악조건 속에서도 특검팀은 전날 16자리 암호를 해독하는 등 수사에 상당한 진척을 보이는 것으로 파악됐다. 드루킹 일당이 암호에 사용했을 것으로 추정되는 패턴을 대입해 속속 암호를 풀어내고 있는 것이다.

드루킹이 신봉한 것으로 알려진 '자미두수'(중국 점성술)와 경공모를 지칭하는 'KKM' 등을 키워드로 암호를 추정하는 방식이다.

http://www.yonhapnews.co.kr/bulletin/2018/07/18/0200000000AKR20180718142500004.HTML

Dictionary attack 방어 방법

사전 공격에 강한 비밀번호를 만드는 방법은 어떤 사전을 찾아봐도 도저히 나올 수 없는 조합으로 만드는 것이다. 알다시피 사전 공격은 적중도가 높기는 하지만 100%는 아닌지라 ]-[|/34<#!_@-zv_@ --어떻게 외울까--같은 식으로 지으면 충분히 방어할 수 있다. 한국의 경우 dlqudals 처럼 영타로 치면 외국 쪽에서는 뭥미 수준의 조합이 된다. (다만, 한국어를 아는 해커가 공격할 수 있으므로 실제로는 저렇게 지으면 안된다.) 하지만 이렇게 만든 암호는 해커는 물론 사용자의 '사전'에도 없는 것이라 기억하기 참으로 곤란하다.

이를 깨는 방법으로 레인보우 테이블이 있긴 한데, 원문에 솔트 문자열을 끼워넣는 것으로 어느정도 대응이 가능하다. 이 경우는 특히 해쉬에 주로 응용된다.

SSD trim

베라크립트 암호화 한 시스템 디스크 트림 돌렸는데 Anonymous 21/02/03(Wed)14:24:39 No.717 아무 생각없이 돌리고나서 생각해보니까 문제될거같은데

trim 돌리면 안 되는 거임? ¨


Anonymous 21/02/03(Wed)14:26:04 No.719 https://security.stackexchange.com/questions/200950/how-and-what-information-does-trim-reveal-when-using-encrypted-veracrypt-volumes

읽어봤는데 이해가 된 건지... ssd는 hdd랑 다르게 아예 지우고(empty로 만들기) 입력해야 하는데 trim은 지우는 과정을 미리 해준다는 거고, ssd 암호화되면 공격자는 암호화 된 것은 알 수 있지만 저장된 데이터 사이즈와 0,1,empty의 구분이 힘든데 트림 돌리면 빈공간이 어느 정도인지, 그리고 암호화 되지 않은 부분을 알 수 있다는 건가?

시스템 디스크는 트림 열려있길레 돌렸는데... 이해한 바로는 다시 암호화 하고 자동trim 막아야 하는 게 맞을까? ¨


Anonymous 21/02/03(Wed)14:26:32 No.720 >>719 >시스템 디스크는 트림 열려있길레 돌렸는데... 이해한 바로는 다시 암호화 하고 자동trim 막아야 하는 게 맞을까? 한다고 암호화된 데이터기 유출되는건 아닌데 불안하면 그러던지

http://lhpuxuti7bq67d3nrtfx6khyboapnhl3ixaleuntk24snb5vfwuqk3yd.onion/res/717.html


trim, Trim (computing), TRIM

함께 보기

참조

  1. https://veracrypt.codeplex.com/wikipage?title=Personal%20Iterations%20Multiplier%20%28PIM%29
  2. https://veracrypt.codeplex.com/wikipage?title=Header%20Key%20Derivation
  3. VeraCrypt a Worthy TrueCrypt Alternative
    A fork of TrueCrypt's code, VeraCrypt strengthens the open source encryption software's transformation process and addresses other weaknesses. http://www.esecurityplanet.com/open-source-security/veracrypt-a-worthy-truecrypt-alternative.html
  4. 그런데 트루에선 비번넣고 삽입하면 바로 드라이브가 열렸는데(열렸는지도 모를정도로 순식간에 스무스하게 열리죠) 베라에선 아래와 같은 창이 뜨면서 스캔하는지, 무결점을 검사하는지 수십초가 지나서 열리는데 수시로 on/off 하는 상황에선 상당히 번거롭더군요.
    새로나온 1.0f-2에서 마운트 속도가 20% 향상되었다고 하는데 체감상 좀 빨라진것 같더군요. http://manian.com/qna/6405212
  5. 베라크립트의 전신인 트루크립트로 300기가 정도의 저용량 빈 파티션을 암호화한적이 있는데 0.1초만에 되더군요. http://www.etobang.com/plugin/mobile/board.php?bo_table=com&wr_id=241290

참고 사이트

  • 트루크립트 완벽 사용법 - 7. 베라크립트

http://www.neoanime.co.kr/free/3963139

  • 무료 암호화프로그램인 TrueCrypt를 대체하는 베라크립트(VeraCrypt)

http://m.blog.naver.com/wondy7/220228479575

  • 공인 인증서 암호화와 개인정보 보호를 위한 TrueCrypt 대체 프로그램-VeraCrypt

http://wezard4u.tistory.com/3183