# 보안을 유지하세요

Canonical page: https://phishdestroy.github.io/TgWitness/ko/docs/security/

텔레그램의 경로, 공개 프록시 목록 및 선택적 외부 서비스에 대해 파악하십시오. 각 비밀 설정이 어떤 기능을 활성화하는지, 보호 기능이 무엇을 포함하는지, 그리고 사용자가 직접 처리해야 할 부분은 무엇인지 파악하십시오.

**127.0.0.1**기본 패널 주소

**256비트**무작위 패널 토큰

**0**CDN, 분석 도구 또는 원격 폰트

**Ed25519**모든 기록에 서명 포함

## 모든 정보가 모여 있는 곳

수집기, 해당 패널 및 저장된 모든 기록은 이를 실행하는 컴퓨터나 서버에 보관됩니다. 기본적으로 텔레그램만이 유일한 저장 대상이며, 그 외의 저장 대상은 각각 별도의 설정 옵션으로 지정할 수 있습니다.

06 / 기계에서 남는 것설치 방법

사용자의 컴퓨터 또는 서버

**패널**127.0.0.1:8787 · 베어러 토큰

**수집기**워크스페이스당 텔레그램 클라이언트 1개

데이터 디렉토리

**저널**SQLite · 해시 체인 방식 · 서명됨

**미디어**SHA-256을 기준으로 이름이 지정된 파일

**Vault**Fernet · 세션, API 쌍, 서명 키, 프록시

- **텔레그램**항상 · 귀하의 경로를 통해

  계정의 MTProto 연결 방식: 직접 연결, SOCKS5, HTTP 또는 MTProxy. IP 숨기기 모드는 작동하는 프록시를 기다립니다. 직접 연결로 자동 전환하려면 이를 명시적으로 허용하는 모드가 필요합니다.
- **외부 사이트용 문구**선택 사항 · 기본값은 비활성화됨

  저널, 파일 및 체크포인트는 S3 호환 스토리지에 업로드되기 전에 AES-GCM으로 암호화됩니다. 암호화 키는 사용자가 직접 관리하며, 첨부 파일의 이름은 내용 해시가 아닌 키가 적용된 해시로 지정됩니다.
- **알림**선택 사항 · 기본값은 비활성화됨

  채팅 제목과 함께 문제점 및 변경 내역을 제공합니다. 메시지 발췌문은 사용자가 해당 기능을 활성화한 경우에만 전송됩니다.
- **타임스탬프 신뢰성**선택 사항 · 기본값은 비활성화됨

  서명된 체크포인트의 SHA-256 해시값과 무작위 논스(nonce)만 포함됩니다. 메시지나 채팅 이름은 포함되지 않습니다.
- **Witness**선택 사항 · 기본값은 비활성화됨

  읽기 전용 토큰을 사용하여 서명된 체크포인트와 캡처 카운터를 가져옵니다. 대화 내용을 읽거나 설정을 변경할 수는 없습니다.

기본 설정: 텔레그램 연결만 이 기기를 통해 이루어집니다.

선택적 저장 위치는 워크스페이스별로 구성됩니다. 메시지 본문과 미디어 파일은 데이터 디렉터리에 암호화되지 않은 상태로 저장되므로, 디스크 암호화 및 파일 권한 설정을 통해 보호해야 합니다.

## 각 비밀이 열어주는 것

| 비밀 | 보관 위치 | 이 도구가 제공하는 이점 | 유출될 경우 |
| --- | --- | --- | --- |
| **패널 토큰** | 데이터 디렉토리에 있는 `panel-token.txt`; 브라우저는 해당 탭에 대해서만 이를 보관합니다. | 모든 워크스페이스의 모든 내용: 읽기 및 내보내기, 범위 변경, 계정 로그인 | TgWitness 중지, `panel-token.txt` 삭제, 다시 시작: 새로운 토큰이 생성됩니다. |
| **텔레그램 세션** | Vault, 암호화됨 (`credentials.enc`) | 텔레그램 계정 자체 | 텔레그램에서 [*설정] → [기기]*로 이동하여 세션을 종료하세요. |
| **서명 키** | Vault, 암호화됨 (`signing.enc`) | 사용자의 지문으로 검증 가능한 기록에 서명 | 별도의 위치에 보관된 체크포인트, 증인 및 타임스탬프를 통해 이전에 존재했던 내용을 확인할 수 있습니다. |
| **볼트 키** | 데이터 옆에 `vault.key`가 표시되거나, 새로운 데이터 디렉터리를 위한 외부 마스터 키 | 금고 해독하기 | 세션 키와 서명 키도 유출된 것으로 간주하십시오 |
| **Witness 토큰** | witness 호스트에서 | 읽기 전용: 서명된 체크포인트 및 상태 | Witness 페이지에서 삭제하고, 새 페이지를 생성하세요. |
| **외부 사이트용 카피 키** | Vault; 복구를 위해 한 번만 다운로드하세요 | 오프사이트 사본 해독 | 저장된 객체를 보유한 사람은 누구나 이를 복호화할 수 있으므로, 해당 사본은 노출된 것으로 간주하십시오. |

## 보호 대상 범위

### 포함

- 내보낸 기록에서 내용이 변경, 삭제 또는 순서가 재배열된 경우: 해시 체인이나 서명이 더 이상 검증되지 않습니다.
- 체크포인트 이후에 축소되거나 재구성된 저널은 다른 곳에 보관된 체크포인트와 더 이상 일치하지 않습니다.
- 패널 토큰 추측: 256비트의 무작위 비트로 구성되며, 상수 시간 내에 비교됩니다. 1분당 15회 실패 시 해당 주소에 대한 접근이 거부됩니다.
- 유해한 채팅 콘텐츠: 텍스트는 HTML 형식이 아닌 일반 텍스트로 삽입되며, 첨부 파일은 파일로 다운로드됩니다. 패널은 다른 사이트에서 어떠한 콘텐츠도 불러오지 않습니다.
- 외부 볼트 키가 포함된 복사된 데이터 디렉토리: 마스터 키가 없으면 세션 및 서명 키는 암호화된 상태로 유지됩니다.

### , 여러분께 맡깁니다

- 주 패널 토큰이 모든 권한을 갖습니다. 다른 사용자에게는 필요한 계정, 채팅 및 작업에 대한 범위 지정된 접근 권한을 부여하고, 주 키는 비공개로 유지하십시오.
- 서버 관리자는 모든 내용을 열람할 수 있으며, 저널을 재작성하고 재서명할 수 있습니다. 지문(fingerprint)과 체크포인트는 별도의 시스템에 보관하십시오.
- TgWitness는 메시지 본문과 미디어 파일을 암호화하지 않습니다. 디스크 암호화와 엄격한 접근 권한 설정을 적용하십시오.
- localhost 외부의 일반 HTTP를 사용하면 네트워크에 토큰이 노출됩니다. HTTPS 또는 SSH 터널을 사용하십시오.
- 서명은 기록된 내용이 변경되지 않았음을 증명할 뿐, 모든 텔레그램 이벤트가 기록되었다는 것을 증명하는 것은 아닙니다.

권한, 유효 기간 및 세션 제한을 설정하여 [사건에 대한 접근 권한을 공유할 수 있습니다](https://phishdestroy.github.io/TgWitness/ko/docs/access/). 위트니스 토큰은 별도의 인증 정보로 유지됩니다.

## 설치 환경 강화

8개 중 0개 완료

1. **전용 텔레그램 계정을 사용하십시오**. 절대 주 계정을 사용하지 마십시오. 패널 토큰과 세션을 통해 해당 계정을 완전히 제어할 수 있습니다.
2. **패널은 127.0.0.1에 유지하십시오.** 원격 접속은 HTTPS(동봉된 Caddy 구성) 또는 SSH 터널을 통해서만 허용하십시오.
3. 데이터 디렉터리가 있는 **디스크를 암호화하십시오**: 메시지 본문과 미디어는 수신된 그대로 저장됩니다.
4. **데이터 디렉터리를** 서비스 계정으로 **제한하십시오**. 유닉스에서는 새 디렉터리에 모드 0700을 부여하고, 윈도우에서는 폴더의 권한을 설정하십시오.
5. **볼트 마스터 키는** 서버의 **다른** 곳에 **보관하십시오**: 데이터 디렉터리를 생성하기 전에 `TGWITNESS_VAULT_KEY_FILE`를 설정하십시오.
6. **서명 키 지문과 체크포인트를** 다른 시스템에 **저장하고**, 다른 호스트에 위트니스를 추가하십시오.
7. `data/`, 세션, `panel-token.txt` 또는 볼트 키를 GitHub이나 채팅방에 **절대 업로드하지 마십시오**.
8. 리버스 프록시에서는 `Authorization` 헤더나 요청 본문을 **기록하지 마십시오**.

**데이터를 잃지 않고 패널 토큰을 변경할 수 있나요?**

네. 토큰은 패널을 열기만 합니다. TgWitness를 중지하고, 데이터 디렉터리에서 `panel-token.txt`를 삭제한 후 다시 시작하세요. 저널, 세션 및 키는 그대로 유지됩니다. `TGWITNESS_TOKEN`가 설정된 경우, 파일 대신 환경 변수 값이 사용됩니다.

**저장된 메시지가 왜 암호화되지 않나요?**

수집 담당자는 검색, 버전 비교 및 내보내기를 위해 해당 기록을 읽어야 합니다. 동일한 컴퓨터에서 키를 사용하여 데이터를 암호화하더라도, 해당 컴퓨터를 열람할 수 있는 사람에게는 별다른 효과가 없습니다. 디스크 암호화는 작동이 중단되거나 도난당한 디스크를 보호하는 반면, 엄격한 접근 권한 설정은 정상적으로 작동 중인 디스크를 보호합니다.

## 취약점 신고

GitHub 저장소에서 [**보안] → [취약점 신고]**를 이용하십시오. 버전, 영향 범위 및 재현에 필요한 최소한의 정보를 포함하십시오. 절대로 인증 정보, 계정 디렉터리 또는 실제 증거 아카이브를 보내지 마십시오. 비공개 신고가 불가능한 경우, 취약점 세부 정보를 포함하지 않은 채 비공개 채널을 요청하는 이슈를 생성하십시오.
