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