문서 / 08
증거가 어떻게 활용되는지 확인하기
메시지는 변경될 수 있습니다. 여러분이 확인한 내용의 기록은 언제든지 검증 가능해야 합니다.
아래의 두 가지 간단한 실험을 살펴보세요. 이 실험들은 가상의 메시지를 사용하며, 브라우저 내에서만 실행되고 텔레그램에 연결되지 않습니다.
한 가지 메시지, 세 가지 관찰점
텔레그램에서 새 메시지, 수정 알림, 삭제 알림이 전송되면 수집기는 세 가지 별도의 기록을 추가합니다. 수정 알림은 첫 번째 기록을 대체하지 않습니다. 삭제 알림도 해당 기록을 지우지 않습니다.
해당 메시지가 채팅 화면에서 사라졌습니다.
- 01✓
message.new10:00에 만나요
- 02✓
message.edited11:00에 만나요
- 03✓
message.deleted#42에 대한 삭제 공지
수신된 세 가지 관찰 사항 모두는 기록부에 그대로 남아 있습니다.
삭제 알림에는 신뢰할 수 있는 삭제 시간이나 메시지를 삭제한 사람이 명시되지 않습니다. 이러한 정보를 알 수 없게 함으로써, ‘관찰’과 ‘추측’ 사이의 구분이 유지됩니다.
기록을 변경하세요. 해시를 추적하세요.
각 기록에는 이전 기록의 해시가 포함됩니다. 해당 기록의 해시는 해당 링크를 포함한 이벤트 필드 전체를 포괄합니다. 외부에 보관된 체크포인트는 특정 저널 길이와 시작 해시를 고정합니다.
h₁ = SHA-256(e₁)64개의 0으로 구성된 링크h₂ = SHA-256(e₂)h₁ 포함h₃ = SHA-256(e₃)h₂ 포함h₃이 고정된 경계를 제공된 기록부와 비교해 보십시오.이벤트를 변경하면 해시가 변경됩니다. 체인을 재구성하면 체인의 선단이 변경됩니다. 체인의 끝부분을 제거하면 체인의 길이가 보존된 체크포인트보다 짧아집니다.
기록 2번 및 전체 해시값 확인
이 예시에서 해시 처리된 정확한 UTF-8 JSON 데이터입니다. 값은 가상의 것이며, 9개의 필드와 직렬화 형식은 저널 형식과 일치합니다.
- 저장된 기록 2의 해시
- 기록 2의 해시 재계산
실제 규칙을 몇 줄로 요약하면 다음과 같습니다.
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C는 9개의 이벤트 필드를 UTF-8 JSON 형식으로 직렬화합니다: 정렬된 키, 여분의 공백 없음, ASCII 이스케이프 없음, NaN/무한대 없음. 이벤트의 previous_hash는 hi−1입니다. 표시된 h0는 64개의 0 문자를 의미하며, 서명은 32바이트의 원시 다이제스트를 포함합니다.
9개의 필드는 seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload 및 previous_hash입니다. 이는 TgWitness에 문서화된 JSON 인코딩 방식이며, 해시 및 서명 자체는 해시 입력 필드가 아닙니다.
hexport[Ncheckpoint] = Hcheckpoint
고정된 수집기 키 아래에 있는 체크포인트 서명을 확인한 다음, 그 경계를 검증된 저널과 비교하십시오. 이후에 내보낸 파일에는 더 많은 기록이 포함될 수 있으나, 이전 체크포인트에서는 여전히 일치해야 합니다.
세 가지 질문, 세 가지 다른 확인 절차
별도로 신뢰할 수 있는 키를 사용하여 해시값과 서명을 검증합니다.
02 / 연속성이전에 어떤 내용이 유지되었나요?서명된 내보내기 파일을 별도의 증인이 보관한 체크포인트와 비교해 보십시오.
03 / 제공이 테스트 이벤트들이 도착했나요?각 계정의 기록부와 전송, 수정, 삭제 작업을 대조하여 일치 여부를 확인합니다.
일치하는 해시 체인은 무결성 여부에 대한 의문을 해소해 줍니다. 그러나 이는 텔레그램 메시지의 완전한 전달 사실, 메시지의 진실성 또는 독립적으로 신뢰할 수 있는 관찰 시점을 입증하지는 않습니다.
정보 수집부터 사건 자료 정리까지, 계정 전체에 대한 조사 과정을 따라가 보세요.