02de8d6f9c9f4a7082981246520308d1✅ 검증됨 ◐ 일부 검증 ⚠️ 자가신고(폰이 주장) ℹ️ 메타
received_at은 서버가 찍음 · 나머지는 식별/버전 메타
| received_at | 2026-06-09T09:01:13.920171Z |
| seal_id | 02de8d6f9c9f4a7082981246520308d1 |
| 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-09T09:01:13.920171Z |
| is_party | True |
| statement | 나는 당사자이며 합법적으로 녹음함 |
폰 시계/센서 자가신고 — TSA 시각(C4)과 별개
| boot_id | null |
| captured_at | 2026-06-09T09:01:13.920171Z |
| gps | {"accuracy_m": "5", "fix_at": "2026-06-09T00:10:39Z", "lat": "37.608285", "lon": "126.894206", "source": "gps"} |
| monotonic_offset_ms | 4017643066 |
| nitz_time | null |
payload_sha256는 C1로 검증 ✅ · 나머지는 자가신고
| content_type | audio/wav |
| file_size_bytes | 472796 |
| filename | recording.wav |
| kind | wav |
| merkle | {"alg": "rfc6962-sha256", "frame_bytes": 882000, "leaf_count": 1, "leaf_seconds": 10, "root": "6d5d9be9e5d46aad5ac034e742ab2b9dba3cf78c34a2ee4ddf3ae5b0fb9dc16a", "total_samples": 236376} |
| payload_def | wav-fmt-and-data |
| payload_sha256 | 3f441f54eac3245238e1dbd6ecece5184b18182c5c541874b848a82a5a9aadaa |
| payload_size_bytes | 472776 |
폰 자가신고 — attestation=deferred라 미검증
| app_version | 0.1-dev |
| attestation | {"issued_at": null, "kind": "deferred", "nonce": null, "token": null} |
| os | android |
| uid | dev-fdfc26bc |
C2 — 실제 WAV 헤더와 일관성 검증됨
| bits_per_sample | 16 |
| channels | 1 |
| codec | pcm_s16le |
| duration_ms | 5360 |
| sample_rate | 44100 |
C3 — 이 공개키로 매니페스트 서명 검증 (단, 키 신뢰는 keyring 핀 필요)
| algorithm | ed25519 |
| key_id | f5425aad34696231 |
| public_key | 17F+94pJPaFo+SzQI6K1UePMPT0DTGoRw72E8jPKYkw= |
| value | 2vZ3IRcgacUzRR45Fw+NueVMeJKDV1UBcXjm1cdcrnS6epls4rMGVQkYQhKA7zNEv8XoPG07v3wiIum/nTKyBw== |
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-09T09:01:13.920171Z",
"is_party": true,
"statement": "나는 당사자이며 합법적으로 녹음함"
},
"capture": {
"boot_id": null,
"captured_at": "2026-06-09T09:01:13.920171Z",
"gps": {
"accuracy_m": "5",
"fix_at": "2026-06-09T00:10:39Z",
"lat": "37.608285",
"lon": "126.894206",
"source": "gps"
},
"monotonic_offset_ms": 4017643066,
"nitz_time": null
},
"container": {
"content_type": "audio/wav",
"file_size_bytes": 472796,
"filename": "recording.wav",
"kind": "wav",
"merkle": {
"alg": "rfc6962-sha256",
"frame_bytes": 882000,
"leaf_count": 1,
"leaf_seconds": 10,
"root": "6d5d9be9e5d46aad5ac034e742ab2b9dba3cf78c34a2ee4ddf3ae5b0fb9dc16a",
"total_samples": 236376
},
"payload_def": "wav-fmt-and-data",
"payload_sha256": "3f441f54eac3245238e1dbd6ecece5184b18182c5c541874b848a82a5a9aadaa",
"payload_size_bytes": 472776
},
"device": {
"app_version": "0.1-dev",
"attestation": {
"issued_at": null,
"kind": "deferred",
"nonce": null,
"token": null
},
"os": "android",
"uid": "dev-fdfc26bc"
},
"interpretation": {
"bits_per_sample": 16,
"channels": 1,
"codec": "pcm_s16le",
"duration_ms": 5360,
"sample_rate": 44100
},
"received_at": "2026-06-09T09:01:13.920171Z",
"seal_id": "02de8d6f9c9f4a7082981246520308d1",
"seal_mode": "client-hybrid",
"version": "seal-manifest/0.2"
},
"manifest_sha256": "c114d0b6e0746b9487f79fe09eb3abf58f12d7669b55f1acccef708beefe2758",
"seal_status": "temporary",
"signature": {
"algorithm": "ed25519",
"key_id": "f5425aad34696231",
"public_key": "17F+94pJPaFo+SzQI6K1UePMPT0DTGoRw72E8jPKYkw=",
"value": "2vZ3IRcgacUzRR45Fw+NueVMeJKDV1UBcXjm1cdcrnS6epls4rMGVQkYQhKA7zNEv8XoPG07v3wiIum/nTKyBw=="
},
"timestamps": [],
"version": "seal-bundle/0.2"
}