
스테가노그래픽 저장소 및 파일 암호화 도구

tird & tirdFStird /tɪrd/ *(“this is random data”의 약어)*는 메타데이터를 최소화하고 암호화된 데이터를 숨기는 파일 암호화 도구입니다.
tird를 사용하면 다음을 할 수 있습니다:
tirdFS)을 생성할 수 있습니다. VeraCrypt 및 Shufflecake와 달리, tirdFS 컨테이너에는 헤더가 없습니다. 사용자가 컨테이너 내부의 데이터 위치를 지정하고 해당 위치를 분리된 상태로 유지할 책임이 있습니다. 파일이나 블록 장치의 무작위로 보이는 모든 영역을 컨테이너로 사용할 수 있습니다.tird는 암호화된 파일이 컨테이너 외부에 저장된 경우에도 내장된 그럴듯한 부인 가능성을 제공합니다. 또한 강압적인 키 공개 공격(고무호스 암호 분석, xkcd 538)에 저항하는 데 도움을 줍니다.
[!경고]
tird를 사용하기 전에 “경고” 섹션을 읽어 주십시오. 보안은 도구뿐만 아니라 사용자의 행동(안전한 키 저장, 안전한 환경에서의 작업, 실제 데이터로 디버그 모드 사용 방지)에 달려 있습니다.
v1.0.0에서 형식 안정화와 공식 명세가 계획되어 있습니다.
tird를 사용하기 위해 명령줄 옵션을 외울 필요가 없습니다. 이 도구는 프롬프트 기반 CLI를 특징으로 합니다: 실행하고 메뉴 옵션을 선택한 다음 이어지는 질문에 답하면 됩니다.```
$ tird
MENU
———————————————————————————————————————————
0. Exit 1. Info & Warnings
2. Encrypt 3. Decrypt
4. Embed 5. Extract
6. Encrypt & Embed 7. Extract & Decrypt
8. Create w/ Random 9. Overwrite w/ Random
———————————————————————————————————————————
A0. SELECT AN OPTION [0-9]:
## 입력 옵션
입력 옵션에는 4개의 그룹이 있습니다: A (Action), D (Data), K (Keys), P (Proceed). 설명의 편의를 위해 번호가 부여되었습니다.```
+——————————————————————+————————————————————————+
| A0. SELECT AN OPTION | A. Select an action |
+——————————————————————+————————————————————————+
| D1. INPUT FILE PATH | |
| D2. COMMENTS | D. Enter data, |
| D3. OUTPUT FILE PATH | data location, |
| D4. OUTPUT FILE SIZE | data size |
| D5. START POSITION | |
| D6. END POSITION | |
+——————————————————————+————————————————————————+
| K1. KEYFILE PATH | K. Enter values |
| K2. PASSPHRASE | related to |
| K3. TIME COST | key derivation |
+——————————————————————+————————————————————————+
| P0. PROCEED? | P. Confirm to continue |
+——————————————————————+————————————————————————+
A detailed description of these options with examples can be found here.
크립토블롭 생성 중 암호화될 페이로드는 다음으로 구성됩니다:
UI에서 페이로드 지정은 다음과 같습니다:``` D1. FILE TO ENCRYPT (OPT): files.zip I: path: 'files.zip'; size: 2,824,230,648 B (2.6 GiB) D2. COMMENTS (DEFAULT='files.zip'): The X-Files, zip (секретные материалы) I: comments will be shown as ['The X-Files, zip (секретные материалы)']
## 입력 키잉 재료
`tird`는 키파일의 내용과 암호를 사용하여 일회성 키를 도출하는 옵션을 제공합니다.
- **키파일 (선택사항):** 0개, 1개 또는 여러 개의 키파일 경로; 입력 순서는 중요하지 않습니다. 키파일 경로는 다음과 같을 수 있습니다:
- <ins>일반 파일</ins>. 키파일의 내용이 해시되고, 해당 다이제스트가 추가 키 스트레칭 및 키 유도에 사용됩니다.
- <ins>블록 장치</ins>. 일반 키파일과 동일하게 처리됩니다: 내용이 해시됩니다.
- <ins>디렉터리</ins>. 디렉터리 내의 모든 파일이 해시되어 키파일로 사용됩니다.
- **암호 (선택사항):** 유니코드 [정규화](https://www.unicode.org/reports/tr15/) (형식 C) 후 최대 2048바이트; 생략 가능합니다.
UI에서 IKM을 지정하는 방법은 다음과 같습니다:```
K1. KEYFILE PATH (OPT): key
I: path: 'key'; size: 32 B
I: reading and hashing contents of 'key'
I: keyfile accepted
K1. KEYFILE PATH (OPT):
K2. PASSPHRASE (OPT):
K2. CONFIRM PASSPHRASE:
I: passphrase accepted
자세한 내용은 명세서를 참조하세요.
암호화된 메시지의 내용은 보호되지만, 그 크기, 출처, 목적지는 보호되지 않습니다. 데이터는 숨겨지지만, 메타데이터는 드러납니다. 때로는 그것만으로도 적이 당신의 비밀을 밝혀내기에 충분합니다.
우리는 메타데이터를 기반으로 사람을 죽입니다.
![]() Vs. ![]() |
|---|
tirdFS — 사용자 주도 스테가노그래픽 파일 시스템tird는 다음과 같이 설명된 기법을 사용합니다:
암호화된 데이터 또는 무작위 데이터 내에 데이터를 은닉합니다. 숨길 메시지는 암호화된 후, 훨씬 더 큰 암호화된 데이터 블록이나 무작위 데이터 블록(일회용 패드와 같은 깨지지 않는 암호는 개인 키 없이는 완벽하게 무작위로 보이는 암호문을 생성함)의 일부를 덮어쓰는 데 사용됩니다.
파일을 암호화하고 임의의 위치에서 시작하여 컨테이너에 암호 블롭을 삽입할 수 있습니다. 암호 블롭을 쓴 후에는 컨테이너 내 위치(시작 및 끝 위치)를 기억해야 하며, 이는 나중에 암호 블롭을 추출하는 데 사용됩니다. 이러한 방식으로 컨테이너 내부에 tirdFS — 숨겨진, 헤더 없는, 사용자 주도 파일 시스템을 만들 수 있습니다:
tirdFS는 내부 메타데이터 구조를 가진 마운트된 파일 시스템이 아닙니다. 독립적으로 배치된 암호 블롭으로 구축된 사용자 관리 숨김 저장소 모델입니다.
최소 암호 블롭 크기(1160B)보다 큰 모든 파일, 디스크 또는 파티션은 유효한 컨테이너가 될 수 있습니다. 암호 블롭은 모든 영역에 삽입될 수 있습니다.
유효한 컨테이너의 예는 다음과 같습니다:
컨테이너 구조의 예:``` +—————————+—————————————+ <— Position 0 of the container | | | | | Random data | | | | | +—————————————+ <— Cryptoblob1 start position | Header- | | | less | Cryptoblob1 | | | | | Layer +—————————————+ <— Cryptoblob1 end position | | Random data | | Cake +—————————————+ <— Cryptoblob2 start position | | | | | Cryptoblob2 | | | | | +—————————————+ <— Cryptoblob2 end position | | Random data | +—————————+—————————————+
**사용자 관리 헤더**
별도의 사용자 관리 `tirdFS` 텍스트 헤더는 다음과 같을 수 있습니다:```
[100000000:100345765] secret_video.mp4
[100345765:234765345] various_secrets.zip
[12654876456:14765345098] Epstein_files_part1.zip
즉, 일반적으로 컨테이너 내 각 암호화 블롭의 위치와 간략한 설명이 포함되어야 합니다. 그러나 사용자는 위치 저장 방식과 헤더에 포함할 내용을 자유롭게 결정할 수 있습니다.
다음 이미지는 무작위 데이터 항목을 서로 구별하는 것이 얼마나 어려운지와 컨테이너에 암호화 블롭을 임베딩하는 과정을 보여줍니다.
무작위 데이터가 있는 빈 컨테이너:

컨테이너에 하나의 암호화 블롭이 임베딩된 모습:

컨테이너에 두 개의 암호화 블롭이 임베딩된 모습:

컨테이너에 세 개의 암호화 블롭이 임베딩된 모습:

애니메이션: 임베딩 시각화:

어디든지 가지고 다니십시오. 그것은 당신의 권리입니다.
다음 스크린샷을 봐 주세요.
이 16GB 볼륨에는 8.7MiB 파일 하나만 있는 것처럼 보입니다. 정말 그럴까요? 그럴 수도 있고, 아닐 수도 있습니다.
파일 시스템은 여기에 파일이 하나만 있다고 알려줍니다. 하지만 볼륨에 정말 파일 하나만 있을까요? 파일 시스템으로는 이를 확인할 수 없습니다. 실제로 파일 시스템 외부에 데이터가 위치할 수 있으며 파일 시스템 도구로는 탐지되지 않을 수 있습니다. 여유 공간으로 표시된 15.2GiB의 공간은 숨겨진 파일 시스템이 차지하고 있을 수 있습니다. 이 '여유' 공간은 숨겨진 암호화 데이터로 채워져 있을 수도 있습니다.
이 데이터의 존재를 반증할 수 있을까요? 예, binwalk를 사용하여 이 여유 공간의 엔트로피 수준을 조사하는 방법이 있습니다. 낮은 엔트로피는 숨겨진 데이터가 없을 가능성이 높음을 나타냅니다. 높은 엔트로피가 그 자체로 암호화된 숨겨진 데이터의 존재를 증명하지는 않습니다. 높은 엔트로피 영역은 단지 잔여 데이터일 수도 있고 숨겨진 암호화 데이터일 수도 있습니다.
보이는 파일 시스템 외부에 데이터를 숨기는 데 관심이 있다면, tird가 파일에 투명 망토를 제공할 준비가 되어 있습니다.
타임락 암호화(TLE)는 IKM이 손상되었을 때(예: 사용자가 강압을 받는 경우) 공격자가 평문에 빠르게 접근하는 것을 방지하는 데 사용될 수 있습니다. 이 구현에서는 실제로 PoW 기반 타임락 키 유도 방식입니다. "Time cost" 입력 옵션은 Argon2 패스 수를 지정합니다. 충분히 높은 패스 수를 지정하면 이를 수행하는 데 상당한 시간이 소요됩니다. 그러나 공격자도 유사한 하드웨어를 사용할 때 동일한 시간이 필요합니다. Argon2 실행은 병렬화를 통해 가속화될 수 없으므로, 공격자가 소비하는 시간은 방어자가 소비하는 시간과 대략 동일할 것으로 예상됩니다.
이 TLE 구현은 tlock과 달리 오프라인에서 작동합니다.
원하는 TIME COST 값을 설정하세요:```
K3. TIME COST (DEFAULT=4): 1000000
I: time cost: 1,000,000
W: decryption will require the same "TIME COST" value!
**그럴듯한 TLE:** 공격자는 실제 시간 비용 값을 알지 못하므로, 당신은 패스 횟수를 그럴듯하게 잘못 표현할 수 있습니다. 공격자는 지정된 시간 비용 값을 사용하여 암호화 블롭을 해독하려고 시도하기 전까지는 당신의 주장을 반박할 수 없습니다.
## 명령줄 옵션
`tird`는 정상 사용 시 명령줄 옵션이 필요하지 않습니다.```
$ tird --help
tird v0.30.0
A tool for encrypting files and hiding encrypted data.
Homepage: https://github.com/hakavlad/tird
Usage:
tird [--unsafe-debug] [--unsafe-decrypt]
Start without options for normal usage.
Options:
--help print this help message and exit
--unsafe-debug enable unsafe debug mode
--unsafe-decrypt release plaintext even if MAC verification
failed (dangerous)
Examples:
$ tird
$ tird --unsafe-debug
[!WARNING] 디버그 모드는 프로덕션 환경에서 사용하기 위한 것이 아닙니다!
프로그램 실행 중 내부 동작을 살펴보려면 --unsafe-debug 옵션과 함께 tird를 시작하세요.
디버그 모드를 활성화하면 다음 정보가 추가로 표시됩니다:
[!WARNING] 이 모드에서는 반환된 평문이 공격자에 의해 수정되거나 대체되었을 수 있습니다!
안전하지 않은 복호화 모드에서 tird는 인증에 실패하더라도 평문을 해제합니다. 정상 모드에서 암호화 블롭을 성공적으로 복호화할 수 없을 때, 무결성보다 가용성을 우선시해야 하는 경우에만 사용하세요.
tird는 다음을 지원하지 않습니다:
tird는 다음을 제공하지 않습니다:
tird는 한 번에 하나 이상의 파일을 처리(암호화/임베드)할 수 없습니다. 디렉터리 및 여러 파일의 암호화는 지원되지 않습니다.tird는 파일 시스템 메타데이터(atime, mtime, ctime)를 정리하지 않습니다.tird의 암호화 속도는 그리 빠르지 않습니다 (최신 하드웨어에서 제 테스트 기준 최대 730MiB/s).암호화는 도움이 될 수 있지만, 오용, 취약점, 사회 공학 또는 물리적 위협으로부터 당신을 구해주지는 않습니다.
tird는 사람에 의한 독립적인 보안 감사를 받지 않았습니다.tird는 손상된 환경에서는 효과가 없습니다. 그러한 경우 실행하면 데이터가 치명적으로 유출될 수 있습니다.tird는 짧고 예측 가능한 키와 함께 사용할 때 효과적이지 않을 가능성이 높습니다.tird는 사용 후 메모리에서 민감한 데이터를 삭제하지 않습니다. 프로그램 종료 후에도 키가 메모리에 남아 있을 수 있습니다.tird는 키 파일 및 암호문구의 다이제스트를 상수 시간에 정렬하지 않습니다.tird는 데이터를 보호할 뿐 사용자를 보호하지 않습니다. 의심을 받을 경우 고문을 막을 수 없습니다.HKDF 및 빠른 ChaCha20 구현 제공)Argon2 및 BLAKE2의 빠른 구현 제공)문서 개선.
질문, 피드백 또는 비판은 Discussions 섹션에 자유롭게 남겨주세요.