참고 문헌 / 증거
증거 기록의 작동 방식
해시 체인, 서명, 체크포인트 및 위트니스에 대해 검증자가 사용하는 정확한 수식을 바탕으로 설명합니다.
TgWitness는 수집 계정이 감지한 내용을 보존하고, 이러한 감지 내용을 서명된 기록부에 연결하며, 다른 사용자가 신뢰할 수 있는 키와 이전에 보관된 체크포인트를 기준으로 내보낸 데이터를 검증할 수 있도록 합니다.
이 지역 문서 웹사이트에는
/docs/concepts/에 대화형 예제가,
/docs/witness/에 체크포인트 결정 탐색기가 추가되어 있습니다. 모든 예시 메시지,
횟수 및 지연 시간은 가상의 것입니다. 체인 샌드박스 내의 해시는 브라우저에서
SHA-256을 사용하여 계산됩니다. 텔레그램으로 전송되는 정보는 없습니다.
메시지가 변경되고, 관찰 기록이 축적됩니다#
도표를 텍스트로 변환
- 텔레그램 → 수집기: 새 메시지: 10:00에 만나요
- 수집기 → 서명된 기록부: message.new 추가
- 텔레그램 → 수집기: 수정: 11:00에 만나요
- 수집기 → 서명된 기록부: 'message.edited' 추가
- 텔레그램 → 수집기: 삭제 알림
- 수집기 → 서명된 기록부: 'message.deleted' 추가
- 서명된 기록부에 대한 참고 사항: 원본 + 수정 + 삭제 내역이 그대로 유지됩니다.
이 간략화된 순서는 텔레그램이 각 업데이트를 전달했으며, 선택된 계정이 이를 확인할 수 있었다고 가정합니다. 운영 이벤트도 이 기록부에 포함됩니다. 삭제 알림에는 삭제자나 정확한 삭제 시점이 포함되지 않습니다. 반복된 전달은 별개의 관측값으로 간주되며, 기록부 전체에 걸쳐 중복 항목이 제거되지는 않습니다.
해시 값이 포함하는 내용#
공식을 안쪽에서 바깥쪽으로 읽어보세요: C는 9개의 필드를 정확한 바이트로 변환하고, SHA-256은 해당 필드들의 다이제스트를 생성하며, hex는 그 다이제스트를 저장하는 방식입니다. 이전 해시는 이미 이벤트 내에 포함되어 있습니다. unhex는 저장된 해시를 Ed25519가 서명하는 32 바이트로 다시 변환합니다.
C(ei)를 9개의 이벤트 필드로 구성된 표준 UTF-8 JSON으로 정의합니다. 첫 번째
previous_hash는 64개의 0으로 구성됩니다. 그 이후의 각 레코드에는 앞선
레코드의 16진수 해시가 포함됩니다:
서명은 32바이트의 원시 다이제스트를 포함합니다. 해시 입력값에는 정확히
seq, observed_at, source_at, kind, chat_id, message_id, actor_id,
payload 및 previous_hash가 포함됩니다. 객체 키는 정렬되며, 공백 및 ASCII
에스케이프는 생략되고, NaN 및 무한대는 거부됩니다.
정확한 인코딩을 참조하십시오.
도표를 텍스트로 변환
- 0이 64개 → 기록 1 / 해시 h1
- 기록 1 / 해시 h1 → 기록 2에는 h1 / 해시 h2가 포함되어 있습니다.
- 기록 2에는 h1 / 해시 h2가 포함되어 있습니다. → 기록 3에는 h2 / 해시 h3가 포함되어 있습니다.
- 기록 3에는 h2 / 해시 h3가 포함되어 있습니다. → 서명된 체크포인트: count 3, head h3 (다른 곳에 보관)
| 제공된 저널로 변경 | 이를 감지하는 요소 |
|---|---|
| 저장된 해시 값을 유지한 채 기록 2를 수정합니다. | 재계산된 이벤트 해시가 다르며, 해당 서명은 변경된 이벤트를 더 이상 포함하지 않습니다. |
| 변경된 기록과 그 이후의 모든 해시 값을 재구성합니다. | 원본 서명이 실패했으며, 해당 경계 지점에 보존된 체크포인트도 일치하지 않습니다. |
| 끝부분은 제거하되 나머지 접두사는 그대로 유지하십시오. | 제공된 접두사보다 앞선 이전에 저장된 체크포인트를 확인해 보면, 내보낸 데이터의 길이가 너무 짧다는 것을 알 수 있습니다. |
| 다른 키로 대체 저널에 재서명하기 | 별도로 검증된 키 지문은 대체 신원을 거부합니다. |
기록 2에서 이 논리를 적용해 보십시오: 저장된 이벤트에서 Meet at 11:00를 Meet at 12:00로 변경하면
재계산된 해시가 더 이상 일치하지 않습니다. 후속 체인을 재계산하면
링크를 복구할 수는 있지만, 원래의 서명이 새로운 다이제스트를 포함하도록 만들 수는 없습니다.
반면, 관찰된 텔레그램 수정 내역은 새로운 저널 기록으로 생성됩니다.
해시 링크만으로는 누군가가 대체 체인을 재계산하는 것을 막을 수 없습니다. 신뢰는 독립적으로 신뢰할 수 있는 키를 사용하여 서명을 확인하고, 수집기 외부에 보관된 참조 자료와 비교함으로써 확보됩니다.
이전 체크포인트에서 추가된 내용#
저널이 확장되어도 참조 지점은 고정됩니다. 체크포인트에 “기록 3개, 헤더 h3”라고 명시되어 있다면, 4개의 기록으로 구성된 내보내기 파일은 3번째 위치에 h3가 일치하면 통과할 수 있습니다. 가장 최근의 헤더는 h4이며, 이는 달라질 것으로 예상됩니다. 기록이 2개뿐인 내보내기 파일은 실패합니다.
체크포인트 서명을 검증한 후, 다음을 요구합니다:
내보내기 데이터는 체크포인트를 넘어설 수 있습니다. 이 경우 보존된 경계에서 데이터가 일치해야 합니다. 실제 검증자는 또한 모든 이벤트의 순서, 이전 링크, 해시 및 서명을 확인합니다. 최종 저장된 헤더만 비교할 경우, 저장된 해시가 업데이트되지 않은 내부 기록의 변조 사실을 놓칠 수 있습니다.
증인이 있어야 할 곳#
도표를 텍스트로 변환
- 수집기 / 계정 세션 / 키 A → 읽기 전용 체크포인트 엔드포인트
- Witness / 고정된 수집기 키 / 자체 키 B → 별도의 서명된 증거 기록부
- Witness / 고정된 수집기 키 / 자체 키 B → 읽기 전용 체크포인트 엔드포인트 (검토 요청)
- 읽기 전용 체크포인트 엔드포인트 → Witness / 고정된 수집기 키 / 자체 키 B (서명된 답변)
- Witness / 고정된 수집기 키 / 자체 키 B → 서명된 TGW1 게시물이 있는 채널 (봇 API / 자체 토큰)
이 위트니스는 롤백, 동일한 카운트에서 다른 헤더, 변경된 키, 무효한 응답 및 누락된 응답을 기록합니다. 카운트가 더 크다고 해서 이전 기록이 모두 변경되지 않았다고 단정할 수는 없습니다. 내보낸 데이터를 보존된 체크포인트와 비교해 보십시오. 다른 호스트에 위치한 위트니스는 수집기 호스트의 서비스 중단을 피할 수 있으며, 별도의 운영자가 관리함으로써 추가적인 독립성을 확보할 수 있습니다.
이 ‘witness’는 수집기가 보고한 저널 상태를 인증합니다. 모든 텔레그램 메시지를 독립적으로 관찰하지는 않습니다. witness 설정 방법을 참조하십시오.
알려진 동작에 대한 테스트 실행#
통제된 그룹, 별도의 수집 계정 및 새로운 마커를 사용하십시오. 의도적으로 메시지를 전송, 수정 및 삭제하고, 각 단계마다 기록 여부를 확인하십시오. 결과를 검토하기 전에 예상되는 작업과 중단 시점을 미리 정의하십시오.
예상된 동작만 집계되며, 중복된 수신 확인은 분자를 증가시키지 않습니다. 분모는 0이 아니어야 합니다. 누락된 수신 확인의 경우 측정된 지연 시간이 없습니다. 시계 오차를 기록하십시오. 텔레그램은 정확한 삭제 시간을 제공하지 않으므로, 직접 제어한 삭제 동작 시간을 사용하십시오. 5/6 (83.3%)와 같은 결과는 테스트 동작을 나타낼 뿐, 모든 텔레그램 트래픽의 완전성을 나타내는 것은 아닙니다.
워크플로우 선택#
다음은 채널, 그룹, 봇 및 비공개 채팅 전반에 걸쳐 발생한 사건에 대한 완전한 조사 절차 안내입니다:
- 전체 계정 조사 모드를 활성화하고 접근 가능한 모든 채팅 내역을 목록화하세요.
- 저널 스냅샷, 채팅별 전체 기록 및 보존된 첨부 파일을 확보할 수 있습니다.
- 실시간 변경 사항과 의도적인 패널 상호작용을 해당 기록과 함께 보관합니다.
- 인용된 기록 및 인물 프로필을 통해 발신자 ID, 답장 관계, 반복되는 수신처 및 파일 해시를 추적합니다.
- 타임스탬프와 명확한 공백을 모두 포함하여 채팅 간 타임라인을 재구성합니다.
- 다른 계정의 작업 공간을 비교하되, 각 계정의 출처와 키는 별도로 유지합니다.
- 서명된 기록부, 프로필 및 내역 내보내기 파일을 사건 메모와 함께 통합하고 검증합니다.
이 웹사이트의 ‘/docs/cases/’ 가이드에는 대화형 사건 지도와
봇 관련 분쟁, 삭제된 메시지, 참가자 이름 변경 등에 대한 다양한 시나리오가 포함되어 있습니다. 사건 기록
및 워크스페이스 간 분석 기능은 외부에서 제공되며, 이 애플리케이션은
전체 조사 그래프나 통합 사건 아카이브를 자동으로 생성하지 않습니다.