7ba3fcfd4b484ab0b5b0db4caebdc0d1✅ 검증됨 ◐ 일부 검증 ⚠️ 자가신고(폰이 주장) ℹ️ 메타
‘서버 받은 시각’만 서버가 찍은 값이고, 나머지는 봉인 번호·형식 같은 식별 정보입니다.
| 서버 받은 시각 received_at | 2026-07-21T04:35:30.060236Z |
| 봉인 번호 seal_id | 7ba3fcfd4b484ab0b5b0db4caebdc0d1 |
| 봉인 방식 seal_mode | client-hybrid |
| 봉인 형식 버전 version | seal-manifest/0.2 |
막대에서 구간을 클릭해 잘라내면, 그 발췌본이 ‘이 원본의 해당 구간’임을 증명하는 봉인이 새로 만들어집니다 (한 칸 = 1초).
이 봉인에 쓰인 암호 기술 이름입니다.
| 정규화 방식 canonicalization | json-sorted-compact-utf8 |
| 명세 해시 manifest_hash | sha256 |
| 소리 해시 payload_hash | sha256 |
| 전자서명 방식 signature | ecdsa-p256-sha256 |
녹음한 사람이 스스로 선언한 내용입니다. 서명돼 있어 나중에 못 바꾸지만, 그 선언이 ‘사실’인지는 기술이 증명하지 못합니다.
| 선언한 시각 declared_at | 2026-07-21T04:35:30.060236Z |
| 본인이 당사자인가 is_party | True |
| 본인 선언 문구 statement | 나는 당사자이며 합법적으로 녹음함 |
폰의 시계·위치센서가 적은 값입니다 — 아래 ‘신뢰된 시각’과는 별개(폰 시계는 틀릴 수 있음).
| 부팅 식별자 boot_id | (없음) |
| 녹음 시각 (폰 주장) captured_at | 2026-07-21T04:35:30.060236Z |
| 위치 (GPS) gps | {"accuracy_m": "4", "fix_at": "2026-07-21T00:24:09Z", "lat": "37.608492", "lon": "126.894032", "source": "gps"} |
| 기기 작동시간(ms) monotonic_offset_ms | 2700292898 |
| 통신망 시각 nitz_time | (없음) |
‘소리 지문’은 서버가 실제 소리를 다시 계산해 일치 확인했습니다 ✅ · 파일 이름 등 나머지는 폰이 적은 설명입니다.
| 파일 종류(MIME) content_type | audio/wav |
| 전체 파일 크기(바이트) file_size_bytes | 381068 |
| 파일 이름 filename | recording.wav |
| 파일 형식 kind | wav |
| 발췌 증명용 구조 merkle | {"alg": "rfc6962-sha256", "frame_bytes": 88200, "leaf_count": 5, "leaf_seconds": 1, "root": "9d271a65b5d92770d15726d3e17ba20ad7c59096724f78054d089b006f64bc55", "total_samples": 190512} |
| ‘소리’로 보는 범위 payload_def | wav-fmt-and-data |
| 소리 지문 (변조 탐지용 해시) payload_sha256 | 0262d1d9594f04f982d37e464f8fd0dca2e2370e715276c96ec05737a55b087a |
| 소리 부분 크기(바이트) payload_size_bytes | 381048 |
폰이 주장하는 기기 정보입니다. 다만 ‘이 봉인을 만든 키가 진짜 발급된 기기 키인지’는 아래 ‘키 신원’에서 확인됩니다.
| 앱 버전 app_version | 0.1-dev |
| 기기·앱 증명 attestation | {"issued_at": null, "kind": "deferred", "nonce": null, "token": null} |
| 운영체제 os | android |
| 기기 식별자 uid | android-8a3b16d3785264e9 |
| display_name | 윤영빈 |
| 사용자 user_id | dummy:윤영빈 |
| verification_level | dummy |
| verified_at | 2026-07-21T04:35:30.060236Z |
이 파일이 말하는 음질·형식이 실제 파일 내용과 맞는지 서버가 확인했습니다.
| 비트 심도 bits_per_sample | 16 |
| 채널 수 channels | 1 |
| 코덱 codec | pcm_s16le |
| 재생 길이(ms) duration_ms | 4320 |
| 샘플레이트(Hz) sample_rate | 44100 |
이 공개키로 봉인 내용 전체에 전자서명한 게 맞는지 서버가 확인했습니다 — 내용이 단 한 글자라도 바뀌면 서명이 깨집니다. (폰=하드웨어 키, 서버·인증서=KMS 키)
| 서명 알고리즘 algorithm | ecdsa-p256-sha256 |
| 인증서 체인 cert_chain | [{"issuer_key_id": "e8686c13772e9b93", "not_after": "2026-07-28T04:35:30+00:00", "not_before": "2026-07-21T04:30:30+00:00", "signature": "bulzZI/W/Jb9gF4p9ySOdfoUgqwLGjB0VN2wWZqm6fFfkfYvOyDGjarTJ4AxvRUbYmkMbwnQ+2X8xgbK8nO+Cw==", "subject": {"device_uid": "android-8a3b16d3785264e9", "key_id": "8a3b16d3785264e9", "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OkN6KVK4sKvwlQqkii2L437Ij3Z3IzeFNOTjVIorjMcpoOjMtNgRjjV+taV7Kum0ihTpfku9vcn1tfnTCI4rQ==", "user_id": "dummy:윤영빈"}, "version": "seal-cert/0.1"}, {"issuer_key_id": "25eaae2607d1896f", "not_after": "2036-07-18T04:35:30+00:00", "not_before": "2026-07-20T04:35:30+00:00", "signature": "JFZZ44iydwttP0SrO1wm8KCkAW/k3wfn33UWTlK+c4xKQMNb5dDTH6SvQ9QTCxSl74Rfcbpktmg1ZGv84JawDA==", "subject": {"device_uid": "issuing-ca", "key_id": "e8686c13772e9b93", "public_key": "epgIX/egcaU+Dxk9kg6tlEitqkLCMa37K+oYw5O+H8w=", "user_id": null}, "version": "seal-cert/0.1"}] |
| 키 식별자 key_id | 8a3b16d3785264e9 |
| 공개키 public_key | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OkN6KVK4sKvwlQqkii2L437Ij3Z3IzeFNOTjVIorjMcpoOjMtNgRjjV+taV7Kum0ihTpfku9vcn1tfnTCI4rQ== |
| 서명 값 value | MEQCIHK9mfmd6ux6rHLtmWUKLDv0lNlTGvPbq/MejmC3TZY3AiALO+03dHXVN3eNEatWvd6silI0C4Owl+Jfy8LqWKH54A== |
이 봉인을 만든 키가 ‘진짜 발급받은 기기 키’임이 인증서로 신뢰 뿌리까지 확인됐습니다 — 아무 도구로나 위조한 게 아닙니다.
| 신원 등급 tier | 발급된 기기 키 (결속됨) |
| 기기 식별자 device_uid | android-8a3b16d3785264e9 |
| 사용자 user_id | dummy:윤영빈 |
이 봉인이 ‘이 시각 이전에 존재했다’를 독립 기관(시각 인증기관·블록체인)이 보증합니다. 1개 이상이면 시각 ‘확정’.
봉인 증거와 별개로 서버가 편의상 보관하는 부가물입니다 (없어도 봉인 증명엔 지장 없음).
| 원본 음성 보관 | 있음 (S3) |
| 음향 지문 (사본 찾기용 보조) | 있음 |
{
"manifest": {
"algorithms": {
"canonicalization": "json-sorted-compact-utf8",
"manifest_hash": "sha256",
"payload_hash": "sha256",
"signature": "ecdsa-p256-sha256"
},
"attestation": {
"declared_at": "2026-07-21T04:35:30.060236Z",
"is_party": true,
"statement": "나는 당사자이며 합법적으로 녹음함"
},
"capture": {
"boot_id": null,
"captured_at": "2026-07-21T04:35:30.060236Z",
"gps": {
"accuracy_m": "4",
"fix_at": "2026-07-21T00:24:09Z",
"lat": "37.608492",
"lon": "126.894032",
"source": "gps"
},
"monotonic_offset_ms": 2700292898,
"nitz_time": null
},
"container": {
"content_type": "audio/wav",
"file_size_bytes": 381068,
"filename": "recording.wav",
"kind": "wav",
"merkle": {
"alg": "rfc6962-sha256",
"frame_bytes": 88200,
"leaf_count": 5,
"leaf_seconds": 1,
"root": "9d271a65b5d92770d15726d3e17ba20ad7c59096724f78054d089b006f64bc55",
"total_samples": 190512
},
"payload_def": "wav-fmt-and-data",
"payload_sha256": "0262d1d9594f04f982d37e464f8fd0dca2e2370e715276c96ec05737a55b087a",
"payload_size_bytes": 381048
},
"device": {
"app_version": "0.1-dev",
"attestation": {
"issued_at": null,
"kind": "deferred",
"nonce": null,
"token": null
},
"os": "android",
"uid": "android-8a3b16d3785264e9"
},
"identity": {
"display_name": "윤영빈",
"user_id": "dummy:윤영빈",
"verification_level": "dummy",
"verified_at": "2026-07-21T04:35:30.060236Z"
},
"interpretation": {
"bits_per_sample": 16,
"channels": 1,
"codec": "pcm_s16le",
"duration_ms": 4320,
"sample_rate": 44100
},
"received_at": "2026-07-21T04:35:30.060236Z",
"seal_id": "7ba3fcfd4b484ab0b5b0db4caebdc0d1",
"seal_mode": "client-hybrid",
"version": "seal-manifest/0.2"
},
"manifest_sha256": "848839a63da9eebba49a3e02b9f0c21e869e7d421769db2d34c7d50602bb5376",
"seal_status": "temporary",
"signature": {
"algorithm": "ecdsa-p256-sha256",
"cert_chain": [
{
"issuer_key_id": "e8686c13772e9b93",
"not_after": "2026-07-28T04:35:30+00:00",
"not_before": "2026-07-21T04:30:30+00:00",
"signature": "bulzZI/W/Jb9gF4p9ySOdfoUgqwLGjB0VN2wWZqm6fFfkfYvOyDGjarTJ4AxvRUbYmkMbwnQ+2X8xgbK8nO+Cw==",
"subject": {
"device_uid": "android-8a3b16d3785264e9",
"key_id": "8a3b16d3785264e9",
"public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OkN6KVK4sKvwlQqkii2L437Ij3Z3IzeFNOTjVIorjMcpoOjMtNgRjjV+taV7Kum0ihTpfku9vcn1tfnTCI4rQ==",
"user_id": "dummy:윤영빈"
},
"version": "seal-cert/0.1"
},
{
"issuer_key_id": "25eaae2607d1896f",
"not_after": "2036-07-18T04:35:30+00:00",
"not_before": "2026-07-20T04:35:30+00:00",
"signature": "JFZZ44iydwttP0SrO1wm8KCkAW/k3wfn33UWTlK+c4xKQMNb5dDTH6SvQ9QTCxSl74Rfcbpktmg1ZGv84JawDA==",
"subject": {
"device_uid": "issuing-ca",
"key_id": "e8686c13772e9b93",
"public_key": "epgIX/egcaU+Dxk9kg6tlEitqkLCMa37K+oYw5O+H8w=",
"user_id": null
},
"version": "seal-cert/0.1"
}
],
"key_id": "8a3b16d3785264e9",
"public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OkN6KVK4sKvwlQqkii2L437Ij3Z3IzeFNOTjVIorjMcpoOjMtNgRjjV+taV7Kum0ihTpfku9vcn1tfnTCI4rQ==",
"value": "MEQCIHK9mfmd6ux6rHLtmWUKLDv0lNlTGvPbq/MejmC3TZY3AiALO+03dHXVN3eNEatWvd6silI0C4Owl+Jfy8LqWKH54A=="
},
"timestamps": [],
"version": "seal-bundle/0.2"
}