์ด ๋ด์ธ ํ๋์ ๋ํด ์๋ฒ๊ฐ ์๋ ์ ๋ถ.
โ ๊ฒ์ฆ๋จ โ ์ผ๋ถ ๊ฒ์ฆ โ ๏ธ ์๊ฐ์ ๊ณ (ํฐ์ด ์ฃผ์ฅ) โน๏ธ ๋ฉํ
audioโ์๋ฒ ๋ฐ์ ์๊ฐโ๋ง ์๋ฒ๊ฐ ์ฐ์ ๊ฐ์ด๊ณ , ๋๋จธ์ง๋ ๋ด์ธ ๋ฒํธยทํ์ ๊ฐ์ ์๋ณ ์ ๋ณด์ ๋๋ค.
| ์๋ฒ ๋ฐ์ ์๊ฐ received_at | 2026-09-16T04:51:08.844411Z |
| ๋ด์ธ ๋ฒํธ seal_id | 2e6d29d1f7594659b4b59bd2a11e0d71 |
| ๋ด์ธ ๋ฐฉ์ seal_mode | client-hybrid |
| ๋ด์ธ ํ์ ๋ฒ์ version | seal-manifest/0.2 |
๋ น์ ๋์ค OS๊ฐ ๋ง์ดํฌ๋ฅผ ์ฐจ๋จํด ๊ทธ ๊ตฌ๊ฐ์ ๋ฌด์์ ๋๋ค(ํฐ์ด ์์คํ ์ ๊ณ ๋ฅผ ๋ฐ์ ๊ธฐ๋ก). ๋ด์ธยท์๋ช ์ ์ ์์ด๋ฉฐ, ์ด ๊ธฐ๋ก ์์ฒด๊ฐ ์๋ช ๋์ ์์ ์์ด ์ง์ฐ๋ฉด ๊ฒ์ฆ์ด ๊นจ์ง๋๋ค.
| ๊ตฌ๊ฐ 1 | ๋๋ต 22์ด ~ 3๋ถ 11์ด |
| ํฉ๊ณ | ์ฝ 169์ด (1๊ฐ ๊ตฌ๊ฐ) |
| ๊ทผ๊ฑฐ | android-is-client-silenced |
๋ง๋์์ ๊ตฌ๊ฐ์ ํด๋ฆญํด ์๋ผ๋ด๋ฉด, ๊ทธ ๋ฐ์ท๋ณธ์ด โ์ด ์๋ณธ์ ํด๋น ๊ตฌ๊ฐโ์์ ์ฆ๋ช ํ๋ ๋ด์ธ์ด ์๋ก ๋ง๋ค์ด์ง๋๋ค (ํ ์นธ = 1์ด).
์ด ๋ด์ธ์ ์ฐ์ธ ์ํธ ๊ธฐ์ ์ด๋ฆ์ ๋๋ค.
| ์ ๊ทํ ๋ฐฉ์ canonicalization | json-sorted-compact-utf8 |
| ๋ช
์ธ ํด์ manifest_hash | sha256 |
| ์๋ฆฌ ํด์ payload_hash | sha256 |
| ์ ์์๋ช
๋ฐฉ์ signature | ecdsa-p256-sha256 |
๋ น์ํ ์ฌ๋์ด ์ค์ค๋ก ์ ์ธํ ๋ด์ฉ์ ๋๋ค. ์๋ช ๋ผ ์์ด ๋์ค์ ๋ชป ๋ฐ๊พธ์ง๋ง, ๊ทธ ์ ์ธ์ด โ์ฌ์คโ์ธ์ง๋ ๊ธฐ์ ์ด ์ฆ๋ช ํ์ง ๋ชปํฉ๋๋ค.
| ์ ์ธํ ์๊ฐ declared_at | 2026-09-16T04:51:08.844411Z |
| ๋ณธ์ธ์ด ๋น์ฌ์์ธ๊ฐ is_party | True |
| ๋ณธ์ธ ์ ์ธ ๋ฌธ๊ตฌ statement | ๋๋ ๋น์ฌ์์ด๋ฉฐ ํฉ๋ฒ์ ์ผ๋ก ๋ น์ํจ |
ํฐ์ ์๊ณยท์์น์ผ์๊ฐ ์ ์ ๊ฐ์ ๋๋ค โ ์๋ โ์ ๋ขฐ๋ ์๊ฐโ๊ณผ๋ ๋ณ๊ฐ(ํฐ ์๊ณ๋ ํ๋ฆด ์ ์์).
| ๋ถํ
์๋ณ์ boot_id | (์์) |
| ๋
น์ ์๊ฐ (ํฐ ์ฃผ์ฅ) captured_at | 2026-09-16T04:51:08.844411Z |
| ์์น (GPS) gps | {"accuracy_m": "22", "fix_at": "2026-09-15T22:45:00Z", "lat": "37.608435", "lon": "126.894123", "source": "gps"} |
| ๊ธฐ๊ธฐ ์๋์๊ฐ(ms) monotonic_offset_ms | 688780289 |
| ํต์ ๋ง ์๊ฐ nitz_time | (์์) |
โ์๋ฆฌ ์ง๋ฌธโ์ ์๋ฒ๊ฐ ์ค์ ์๋ฆฌ๋ฅผ ๋ค์ ๊ณ์ฐํด ์ผ์น ํ์ธํ์ต๋๋ค โ ยท ํ์ผ ์ด๋ฆ ๋ฑ ๋๋จธ์ง๋ ํฐ์ด ์ ์ ์ค๋ช ์ ๋๋ค.
| ํ์ผ ์ข
๋ฅ(MIME) content_type | audio/wav |
| ์ ์ฒด ํ์ผ ํฌ๊ธฐ(๋ฐ์ดํธ) file_size_bytes | 17703548 |
| ํ์ผ ์ด๋ฆ filename | recording.wav |
| ํ์ผ ํ์ kind | wav |
| ๋ฐ์ท ์ฆ๋ช
์ฉ ๊ตฌ์กฐ merkle | {"alg": "rfc6962-sha256", "frame_bytes": 88200, "leaf_count": 201, "leaf_seconds": 1, "root": "129fa262d32d0a590effbe7e15f8b0a1a4328517aefeea720ccde1bd9dcad992", "total_samples": 8851752} |
| โ์๋ฆฌโ๋ก ๋ณด๋ ๋ฒ์ payload_def | wav-fmt-and-data |
| ์๋ฆฌ ์ง๋ฌธ (๋ณ์กฐ ํ์ง์ฉ ํด์) payload_sha256 | 090344f28d0928a3cfeca4758e60316a72747fea3462a3b4ce3705c1570fddbf |
| ์๋ฆฌ ๋ถ๋ถ ํฌ๊ธฐ(๋ฐ์ดํธ) payload_size_bytes | 17703528 |
ํฐ์ด ์ฃผ์ฅํ๋ ๊ธฐ๊ธฐ ์ ๋ณด์ ๋๋ค. ๋ค๋ง โ์ด ๋ด์ธ์ ๋ง๋ ํค๊ฐ ์ง์ง ๋ฐ๊ธ๋ ๊ธฐ๊ธฐ ํค์ธ์งโ๋ ์๋ โํค ์ ์โ์์ ํ์ธ๋ฉ๋๋ค.
| ์ฑ ๋ฒ์ app_version | 0.1-dev |
| ๊ธฐ๊ธฐยท์ฑ ์ฆ๋ช
attestation | {"issued_at": null, "kind": "deferred", "nonce": null, "token": null} |
| ์ด์์ฒด์ os | android |
| ๊ธฐ๊ธฐ ์๋ณ์ uid | android-b634758fdd15c719 |
| display_name | ๋๋ฏธ |
| ์ฌ์ฉ์ user_id | dummy:๋๋ฏธ |
| verification_level | dummy |
| verified_at | 2026-09-16T04:51:08.844411Z |
์ด ํ์ผ์ด ๋งํ๋ ์์งยทํ์์ด ์ค์ ํ์ผ ๋ด์ฉ๊ณผ ๋ง๋์ง ์๋ฒ๊ฐ ํ์ธํ์ต๋๋ค.
| ๋นํธ ์ฌ๋ bits_per_sample | 16 |
| ์ฑ๋ ์ channels | 1 |
| ์ฝ๋ฑ codec | pcm_s16le |
| ์ฌ์ ๊ธธ์ด(ms) duration_ms | 200720 |
| ์ํ๋ ์ดํธ(Hz) sample_rate | 44100 |
์ด ๊ณต๊ฐํค๋ก ๋ด์ธ ๋ด์ฉ ์ ์ฒด์ ์ ์์๋ช ํ ๊ฒ ๋ง๋์ง ์๋ฒ๊ฐ ํ์ธํ์ต๋๋ค โ ๋ด์ฉ์ด ๋จ ํ ๊ธ์๋ผ๋ ๋ฐ๋๋ฉด ์๋ช ์ด ๊นจ์ง๋๋ค. (ํฐ=ํ๋์จ์ด ํค, ์๋ฒยท์ธ์ฆ์=KMS ํค)
| ์๋ช
์๊ณ ๋ฆฌ์ฆ algorithm | ecdsa-p256-sha256 |
| ์ธ์ฆ์ ์ฒด์ธ cert_chain | [{"issuer_key_id": "1809a7344359eb9a", "not_after": "2026-09-23T04:41:36+00:00", "not_before": "2026-09-16T04:36:36+00:00", "signature": "FaOljPACIT2lzupuMTEx0KdkGRgexURezcWNMd4W3uMliUFGixZkida1u9eaHWR1Kk/D81xAB7czfVxuaDioCQ==", "subject": {"device_uid": "android-b634758fdd15c719", "key_id": "b634758fdd15c719", "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKfWzsku9xUy36qojIsY2Zma3J4i5Zht0QyEy9e2eRRKAc/M34ySJOBupiElO9X7xKoolU7E0aWeKUto1OcMfjg==", "user_id": "dummy:๋๋ฏธ"}, "version": "seal-cert/0.1"}, {"issuer_key_id": "25eaae2607d1896f", "not_after": "2036-09-13T04:41:36+00:00", "not_before": "2026-09-15T04:41:36+00:00", "signature": "ie1vf4kishvCkN730c3n+3ugM5MNieSIGsr7JGIjsRWHnUW3l9lU6FrbQdBbxW6P0ygKDRDuy52Fy19nl2zgDg==", "subject": {"device_uid": "issuing-ca", "key_id": "1809a7344359eb9a", "public_key": "JVOEeLutl36fgS/sRf3Z/FXau+O21KztQjsekD7BgwU=", "user_id": null}, "version": "seal-cert/0.1"}] |
| ํค ์๋ณ์ key_id | b634758fdd15c719 |
| ๊ณต๊ฐํค public_key | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKfWzsku9xUy36qojIsY2Zma3J4i5Zht0QyEy9e2eRRKAc/M34ySJOBupiElO9X7xKoolU7E0aWeKUto1OcMfjg== |
| ์๋ช
๊ฐ value | MEYCIQC4xc9Ut9gpOFmU9zaBetJT6GPFCz5kvL2QfTW6Ds2/FQIhAI8yyukwplavlYyLn+o1pUiF2JBbsJz1GgfVgrsWimt8 |
์ด ๋ด์ธ์ ๋ง๋ ํค๊ฐ โ์ง์ง ๋ฐ๊ธ๋ฐ์ ๊ธฐ๊ธฐ ํคโ์์ด ์ธ์ฆ์๋ก ์ ๋ขฐ ๋ฟ๋ฆฌ๊น์ง ํ์ธ๋์ต๋๋ค โ ์๋ฌด ๋๊ตฌ๋ก๋ ์์กฐํ ๊ฒ ์๋๋๋ค.
| ์ ์ ๋ฑ๊ธ tier | ๋ฐ๊ธ๋ ๊ธฐ๊ธฐ ํค (๊ฒฐ์๋จ) |
| ๊ธฐ๊ธฐ ์๋ณ์ device_uid | android-b634758fdd15c719 |
| ์ฌ์ฉ์ 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-09-16T04:51:08.844411Z",
"is_party": true,
"statement": "๋๋ ๋น์ฌ์์ด๋ฉฐ ํฉ๋ฒ์ ์ผ๋ก ๋
น์ํจ"
},
"capture": {
"boot_id": null,
"captured_at": "2026-09-16T04:51:08.844411Z",
"gps": {
"accuracy_m": "22",
"fix_at": "2026-09-15T22:45:00Z",
"lat": "37.608435",
"lon": "126.894123",
"source": "gps"
},
"mic_silence": {
"ranges_ms": [
{
"end_ms": 191920,
"start_ms": 22800
}
],
"source": "android-is-client-silenced"
},
"monotonic_offset_ms": 688780289,
"nitz_time": null
},
"container": {
"content_type": "audio/wav",
"file_size_bytes": 17703548,
"filename": "recording.wav",
"kind": "wav",
"merkle": {
"alg": "rfc6962-sha256",
"frame_bytes": 88200,
"leaf_count": 201,
"leaf_seconds": 1,
"root": "129fa262d32d0a590effbe7e15f8b0a1a4328517aefeea720ccde1bd9dcad992",
"total_samples": 8851752
},
"payload_def": "wav-fmt-and-data",
"payload_sha256": "090344f28d0928a3cfeca4758e60316a72747fea3462a3b4ce3705c1570fddbf",
"payload_size_bytes": 17703528
},
"device": {
"app_version": "0.1-dev",
"attestation": {
"issued_at": null,
"kind": "deferred",
"nonce": null,
"token": null
},
"os": "android",
"uid": "android-b634758fdd15c719"
},
"identity": {
"display_name": "๋๋ฏธ",
"user_id": "dummy:๋๋ฏธ",
"verification_level": "dummy",
"verified_at": "2026-09-16T04:51:08.844411Z"
},
"interpretation": {
"bits_per_sample": 16,
"channels": 1,
"codec": "pcm_s16le",
"duration_ms": 200720,
"sample_rate": 44100
},
"received_at": "2026-09-16T04:51:08.844411Z",
"seal_id": "2e6d29d1f7594659b4b59bd2a11e0d71",
"seal_mode": "client-hybrid",
"version": "seal-manifest/0.2"
},
"manifest_sha256": "bacaf88d94130cdbd0e5121c10b712cf7acde170767f820d483c99cf92c22ff7",
"seal_status": "temporary",
"signature": {
"algorithm": "ecdsa-p256-sha256",
"cert_chain": [
{
"issuer_key_id": "1809a7344359eb9a",
"not_after": "2026-09-23T04:41:36+00:00",
"not_before": "2026-09-16T04:36:36+00:00",
"signature": "FaOljPACIT2lzupuMTEx0KdkGRgexURezcWNMd4W3uMliUFGixZkida1u9eaHWR1Kk/D81xAB7czfVxuaDioCQ==",
"subject": {
"device_uid": "android-b634758fdd15c719",
"key_id": "b634758fdd15c719",
"public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKfWzsku9xUy36qojIsY2Zma3J4i5Zht0QyEy9e2eRRKAc/M34ySJOBupiElO9X7xKoolU7E0aWeKUto1OcMfjg==",
"user_id": "dummy:๋๋ฏธ"
},
"version": "seal-cert/0.1"
},
{
"issuer_key_id": "25eaae2607d1896f",
"not_after": "2036-09-13T04:41:36+00:00",
"not_before": "2026-09-15T04:41:36+00:00",
"signature": "ie1vf4kishvCkN730c3n+3ugM5MNieSIGsr7JGIjsRWHnUW3l9lU6FrbQdBbxW6P0ygKDRDuy52Fy19nl2zgDg==",
"subject": {
"device_uid": "issuing-ca",
"key_id": "1809a7344359eb9a",
"public_key": "JVOEeLutl36fgS/sRf3Z/FXau+O21KztQjsekD7BgwU=",
"user_id": null
},
"version": "seal-cert/0.1"
}
],
"key_id": "b634758fdd15c719",
"public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKfWzsku9xUy36qojIsY2Zma3J4i5Zht0QyEy9e2eRRKAc/M34ySJOBupiElO9X7xKoolU7E0aWeKUto1OcMfjg==",
"value": "MEYCIQC4xc9Ut9gpOFmU9zaBetJT6GPFCz5kvL2QfTW6Ds2/FQIhAI8yyukwplavlYyLn+o1pUiF2JBbsJz1GgfVgrsWimt8"
},
"timestamps": [],
"version": "seal-bundle/0.2"
}