문서 / 10
보안을 유지하세요
텔레그램의 경로, 공개 프록시 목록 및 선택적 외부 서비스에 대해 파악하십시오. 각 비밀 설정이 어떤 기능을 활성화하는지, 보호 기능이 무엇을 포함하는지, 그리고 사용자가 직접 처리해야 할 부분은 무엇인지 파악하십시오.
모든 정보가 모여 있는 곳
수집기, 해당 패널 및 저장된 모든 기록은 이를 실행하는 컴퓨터나 서버에 보관됩니다. 기본적으로 텔레그램만이 유일한 저장 대상이며, 그 외의 저장 대상은 각각 별도의 설정 옵션으로 지정할 수 있습니다.
- 텔레그램항상 · 귀하의 경로를 통해
계정의 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 터널을 사용하십시오.
- 서명은 기록된 내용이 변경되지 않았음을 증명할 뿐, 모든 텔레그램 이벤트가 기록되었다는 것을 증명하는 것은 아닙니다.
권한, 유효 기간 및 세션 제한을 설정하여 사건에 대한 접근 권한을 공유할 수 있습니다. 위트니스 토큰은 별도의 인증 정보로 유지됩니다.
설치 환경 강화
- 전용 텔레그램 계정을 사용하십시오. 절대 주 계정을 사용하지 마십시오. 패널 토큰과 세션을 통해 해당 계정을 완전히 제어할 수 있습니다.
- 패널은 127.0.0.1에 유지하십시오. 원격 접속은 HTTPS(동봉된 Caddy 구성) 또는 SSH 터널을 통해서만 허용하십시오.
- 데이터 디렉터리가 있는 디스크를 암호화하십시오: 메시지 본문과 미디어는 수신된 그대로 저장됩니다.
- 데이터 디렉터리를 서비스 계정으로 제한하십시오. 유닉스에서는 새 디렉터리에 모드 0700을 부여하고, 윈도우에서는 폴더의 권한을 설정하십시오.
- 볼트 마스터 키는 서버의 다른 곳에 보관하십시오: 데이터 디렉터리를 생성하기 전에
TGWITNESS_VAULT_KEY_FILE를 설정하십시오. - 서명 키 지문과 체크포인트를 다른 시스템에 저장하고, 다른 호스트에 위트니스를 추가하십시오.
data/, 세션,panel-token.txt또는 볼트 키를 GitHub이나 채팅방에 절대 업로드하지 마십시오.- 리버스 프록시에서는
Authorization헤더나 요청 본문을 기록하지 마십시오.
데이터를 잃지 않고 패널 토큰을 변경할 수 있나요?
네. 토큰은 패널을 열기만 합니다. TgWitness를 중지하고, 데이터 디렉터리에서 panel-token.txt를 삭제한 후 다시 시작하세요. 저널, 세션 및 키는 그대로 유지됩니다. TGWITNESS_TOKEN가 설정된 경우, 파일 대신 환경 변수 값이 사용됩니다.
저장된 메시지가 왜 암호화되지 않나요?
수집 담당자는 검색, 버전 비교 및 내보내기를 위해 해당 기록을 읽어야 합니다. 동일한 컴퓨터에서 키를 사용하여 데이터를 암호화하더라도, 해당 컴퓨터를 열람할 수 있는 사람에게는 별다른 효과가 없습니다. 디스크 암호화는 작동이 중단되거나 도난당한 디스크를 보호하는 반면, 엄격한 접근 권한 설정은 정상적으로 작동 중인 디스크를 보호합니다.
취약점 신고
GitHub 저장소에서 [보안] → [취약점 신고]를 이용하십시오. 버전, 영향 범위 및 재현에 필요한 최소한의 정보를 포함하십시오. 절대로 인증 정보, 계정 디렉터리 또는 실제 증거 아카이브를 보내지 마십시오. 비공개 신고가 불가능한 경우, 취약점 세부 정보를 포함하지 않은 채 비공개 채널을 요청하는 이슈를 생성하십시오.