23aeffc3cb2a4e298858e17fbff81868✅ 검증됨 ◐ 일부 검증 ⚠️ 자가신고(폰이 주장) ℹ️ 메타
received_at은 서버가 찍음 · 나머지는 식별/버전 메타
| received_at | 2026-06-09T06:40:07.037982Z |
| seal_id | 23aeffc3cb2a4e298858e17fbff81868 |
| seal_mode | client-hybrid |
| version | seal-manifest/0.2 |
막대에서 구간을 클릭해 발췌 (한 칸=10초 Merkle 리프). 서버서명 + range proof (§13.16).
사용된 알고리즘 표기
| canonicalization | json-sorted-compact-utf8 |
| manifest_hash | sha256 |
| payload_hash | sha256 |
| signature | ed25519 |
당사자 자가 선언 — 법적 진술이지 기술 증명 아님
| declared_at | 2026-06-09T06:40:07.037982Z |
| is_party | True |
| statement | 나는 당사자이며 합법적으로 녹음함 |
폰 시계/센서 자가신고 — TSA 시각(C4)과 별개
| boot_id | null |
| captured_at | 2026-06-09T06:40:07.037982Z |
| gps | {"accuracy_m": "5", "fix_at": "2026-06-09T00:10:39Z", "lat": "37.608285", "lon": "126.894206", "source": "gps"} |
| monotonic_offset_ms | 4009176184 |
| nitz_time | null |
payload_sha256는 C1로 검증 ✅ · 나머지는 자가신고
| content_type | audio/wav |
| file_size_bytes | 945548 |
| filename | recording.wav |
| kind | wav |
| merkle | {"alg": "rfc6962-sha256", "frame_bytes": 882000, "leaf_count": 2, "leaf_seconds": 10, "root": "6e23b840ec9f60ccd212a5c814bd185d4bf6c41c859324f0c4abf7db2eb23ba3", "total_samples": 472752} |
| payload_def | wav-fmt-and-data |
| payload_sha256 | dae91b21779b67100570a2b90fe4653521c9bb7e1f8eb3923750a64674802d2f |
| payload_size_bytes | 945528 |
폰 자가신고 — attestation=deferred라 미검증
| app_version | 0.1-dev |
| attestation | {"issued_at": null, "kind": "deferred", "nonce": null, "token": null} |
| os | android |
| uid | dev-573cc038 |
C2 — 실제 WAV 헤더와 일관성 검증됨
| bits_per_sample | 16 |
| channels | 1 |
| codec | pcm_s16le |
| duration_ms | 10720 |
| sample_rate | 44100 |
C3 — 이 공개키로 매니페스트 서명 검증 (단, 키 신뢰는 keyring 핀 필요)
| algorithm | ed25519 |
| key_id | 1f2812b7718ae2fe |
| public_key | TMDu4lt5oRw5A5tt5qCOPgz3BrUTMSgKrGorVh8BOKE= |
| value | 0PsyErQmyAdgCB9OpKcUosr6/IM7cEe2IA0VqmNIz/I2XToSeQzfnvxVJYYZMstUO0+Srve3uHohBxSAyMJIDg== |
C4 — 독립 시각 증인. ≥1이면 confirmed
best-effort 부가물
| 원본 음성 (original/) | 있음 |
| 지문 (.dfs) | 있음 |
{
"manifest": {
"algorithms": {
"canonicalization": "json-sorted-compact-utf8",
"manifest_hash": "sha256",
"payload_hash": "sha256",
"signature": "ed25519"
},
"attestation": {
"declared_at": "2026-06-09T06:40:07.037982Z",
"is_party": true,
"statement": "나는 당사자이며 합법적으로 녹음함"
},
"capture": {
"boot_id": null,
"captured_at": "2026-06-09T06:40:07.037982Z",
"gps": {
"accuracy_m": "5",
"fix_at": "2026-06-09T00:10:39Z",
"lat": "37.608285",
"lon": "126.894206",
"source": "gps"
},
"monotonic_offset_ms": 4009176184,
"nitz_time": null
},
"container": {
"content_type": "audio/wav",
"file_size_bytes": 945548,
"filename": "recording.wav",
"kind": "wav",
"merkle": {
"alg": "rfc6962-sha256",
"frame_bytes": 882000,
"leaf_count": 2,
"leaf_seconds": 10,
"root": "6e23b840ec9f60ccd212a5c814bd185d4bf6c41c859324f0c4abf7db2eb23ba3",
"total_samples": 472752
},
"payload_def": "wav-fmt-and-data",
"payload_sha256": "dae91b21779b67100570a2b90fe4653521c9bb7e1f8eb3923750a64674802d2f",
"payload_size_bytes": 945528
},
"device": {
"app_version": "0.1-dev",
"attestation": {
"issued_at": null,
"kind": "deferred",
"nonce": null,
"token": null
},
"os": "android",
"uid": "dev-573cc038"
},
"interpretation": {
"bits_per_sample": 16,
"channels": 1,
"codec": "pcm_s16le",
"duration_ms": 10720,
"sample_rate": 44100
},
"received_at": "2026-06-09T06:40:07.037982Z",
"seal_id": "23aeffc3cb2a4e298858e17fbff81868",
"seal_mode": "client-hybrid",
"version": "seal-manifest/0.2"
},
"manifest_sha256": "38293ee656037b343a2e4a272883bf06bc5e20df37f1aba736954447ff70a232",
"seal_status": "temporary",
"signature": {
"algorithm": "ed25519",
"key_id": "1f2812b7718ae2fe",
"public_key": "TMDu4lt5oRw5A5tt5qCOPgz3BrUTMSgKrGorVh8BOKE=",
"value": "0PsyErQmyAdgCB9OpKcUosr6/IM7cEe2IA0VqmNIz/I2XToSeQzfnvxVJYYZMstUO0+Srve3uHohBxSAyMJIDg=="
},
"timestamps": [],
"version": "seal-bundle/0.2"
}