Tài liệu hướng dẫn / 08
Tìm hiểu cách thức hoạt động của bằng chứng
Một tin nhắn có thể thay đổi. Tuy nhiên, bản ghi chép về những gì quý vị đã quan sát được phải luôn đảm bảo tính kiểm chứng được.
Hãy khám phá hai thí nghiệm nhỏ dưới đây. Các thí nghiệm này sử dụng các tin nhắn hư cấu, chỉ hoạt động trong trình duyệt của quý vị và tuyệt đối không kết nối với Telegram.
Một tin nhắn, ba nhận định
Khi Telegram gửi một tin nhắn mới, một thông báo chỉnh sửa hoặc một thông báo xóa, ứng dụng thu thập dữ liệu sẽ bổ sung ba ghi nhận riêng biệt. Việc chỉnh sửa không thay thế bản ghi ban đầu. Thông báo xóa cũng không làm mất bản ghi đó.
Tin nhắn đã biến mất khỏi giao diện trò chuyện.
- 01✓
message.newHẹn gặp lúc 10:00
- 02✓
message.editedHẹn gặp lúc 11:00
- 03✓
message.deletedThông báo xóa đối với #42
Cả ba quan sát đã nhận được đều được lưu giữ trong sổ ghi chép.
Thông báo xóa tin nhắn không cung cấp thời gian xóa đáng tin cậy cũng như danh tính của người đã xóa tin nhắn đó. Việc giữ kín các thông tin này giúp duy trì sự phân biệt rõ ràng giữa một quan sát thực tế và một phỏng đoán.
Thay đổi một bản ghi. Theo dõi mã băm.
Mỗi bản ghi đều chứa mã băm của bản ghi trước đó. Mã băm của chính bản ghi đó bao phủ các trường sự kiện, bao gồm cả liên kết đó. Một điểm kiểm tra được lưu trữ bên ngoài sẽ cố định độ dài cụ thể của sổ nhật ký và mã băm đầu sổ.
h₁ = SHA-256(e₁)Liên kết đến 64 số 0h₂ = SHA-256(e₂)Bao gồm thẻ h₁h₃ = SHA-256(e₃)Bao gồm h₂h₃Hãy so sánh ranh giới cố định này với nhật ký được cung cấp.Việc thay đổi một sự kiện sẽ làm thay đổi giá trị băm của nó. Việc tái tạo chuỗi sẽ thay đổi phần đầu của chuỗi. Việc xóa phần cuối sẽ khiến chuỗi ngắn hơn so với điểm kiểm tra được lưu giữ.
Xem bản ghi số 2 và các giá trị băm đầy đủ
Đây chính là dữ liệu JSON định dạng UTF-8 đã được băm trong ví dụ này. Các giá trị trong đây là hư cấu; chín trường dữ liệu và cách tuần tự hóa đều phù hợp với định dạng sổ nhật ký.
- Bản ghi đã lưu 2 hash
- Băm của bản ghi số 2 đã được tính toán lại
Các quy tắc cụ thể, tóm tắt trong vài dòng
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C tuần tự hóa chín trường sự kiện dưới dạng JSON UTF-8: các khóa được sắp xếp theo thứ tự, không có khoảng trắng thừa, không có mã hóa ASCII và không có giá trị NaN/vô cực. Giá trị previous_hash của sự kiện là hi−1. Giá trị h0 được hiển thị có nghĩa là 64 ký tự số 0; các chữ ký bao phủ 32 byte bản tóm tắt thô.
Chín trường dữ liệu bao gồm seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload và previous_hash. Đây là định dạng mã hóa JSON được TgWitness ghi chép; bản thân các giá trị băm và chữ ký không phải là các trường nhập liệu băm.
hexport[Ncheckpoint] = Hcheckpoint
Hãy xác minh chữ ký của điểm kiểm tra dưới khóa thu thập được ghim, sau đó so sánh phạm vi của nó với nhật ký đã được xác minh. Một bản xuất sau này có thể chứa nhiều bản ghi hơn; tuy nhiên, nó vẫn phải khớp với điểm kiểm tra trước đó.
Ba câu hỏi, ba bước kiểm tra khác nhau
Xác minh các giá trị băm và chữ ký so với một khóa đáng tin cậy được lưu trữ riêng biệt.
02 / TÍNH LIÊN TỤCNhững nội dung nào đã được lưu giữ trước đó?So sánh tệp xuất có chữ ký với các điểm kiểm tra được lưu giữ bởi một bên chứng kiến độc lập.
03 / PHƯƠNG THỨC CUNG CẤPCác sự kiện thử nghiệm này đã được gửi đến chưa?So sánh các hành động gửi, chỉnh sửa và xóa được kiểm soát với nhật ký của từng tài khoản.
Một chuỗi băm khớp sẽ trả lời câu hỏi về tính toàn vẹn. Nó không xác nhận việc Telegram đã gửi tin nhắn thành công, tính xác thực của tin nhắn hay thời điểm quan sát được xác nhận độc lập.
Theo dõi toàn bộ quá trình điều tra tài khoản, từ giai đoạn thu thập dữ liệu cho đến khi hoàn thiện hồ sơ vụ việc.