์ด ๋ด์ธ ํ๋์ ๋ํด ์๋ฒ๊ฐ ์๋ ์ ๋ถ.
โ ๊ฒ์ฆ๋จ โ ์ผ๋ถ ๊ฒ์ฆ โ ๏ธ ์๊ฐ์ ๊ณ (ํฐ์ด ์ฃผ์ฅ) โน๏ธ ๋ฉํ
screen.foreground_app ์ ๊ธฐ๋ก์ผ ๋ฟ ํ์ ์ด ์๋๋๋ค.โ์๋ฒ ๋ฐ์ ์๊ฐโ๋ง ์๋ฒ๊ฐ ์ฐ์ ๊ฐ์ด๊ณ , ๋๋จธ์ง๋ ๋ด์ธ ๋ฒํธยทํ์ ๊ฐ์ ์๋ณ ์ ๋ณด์ ๋๋ค.
| media_kind | screen |
| ์๋ฒ ๋ฐ์ ์๊ฐ received_at | 2026-10-01T07:56:11Z |
| ๋ด์ธ ๋ฒํธ seal_id | 1c77582dc5a54a3587db884bee313541 |
| ๋ด์ธ ๋ฐฉ์ seal_mode | server-composited |
| ๋ด์ธ ํ์ ๋ฒ์ version | seal-manifest/0.2 |
์ด ๋ด์ธ์ ์ ์ฑ์ผ๋ก ๋ง๋ค์ด ๋ฐ์ท ๊ธฐ๋ฅ์ด ์์ต๋๋ค โ ์ ์ฑ์ผ๋ก ๋ด์ธํ ์๋ณธ๋ง ์๋ผ๋ผ ์ ์์ด์.
์ด ๋ด์ธ์ ์ฐ์ธ ์ํธ ๊ธฐ์ ์ด๋ฆ์ ๋๋ค.
| ์ ๊ทํ ๋ฐฉ์ canonicalization | json-sorted-compact-utf8 |
| image_hash | sha256 |
| ๋ช
์ธ ํด์ manifest_hash | sha256 |
| ์ ์์๋ช
๋ฐฉ์ signature | ed25519 |
ํฐ์ ์๊ณยท์์น์ผ์๊ฐ ์ ์ ๊ฐ์ ๋๋ค โ ์๋ โ์ ๋ขฐ๋ ์๊ฐโ๊ณผ๋ ๋ณ๊ฐ(ํฐ ์๊ณ๋ ํ๋ฆด ์ ์์).
| ๋ถํ
์๋ณ์ boot_id | boot_count:24 |
| ๋
น์ ์๊ฐ (ํฐ ์ฃผ์ฅ) captured_at | 2026-10-01T07:56:06.989495Z |
| ์์น (GPS) gps | (์์) |
| ๊ธฐ๊ธฐ ์๋์๊ฐ(ms) monotonic_offset_ms | 294031265 |
| ํต์ ๋ง ์๊ฐ nitz_time | (์์) |
ํฐ์ด ์ฃผ์ฅํ๋ ๊ธฐ๊ธฐ ์ ๋ณด์ ๋๋ค. ๋ค๋ง โ์ด ๋ด์ธ์ ๋ง๋ ํค๊ฐ ์ง์ง ๋ฐ๊ธ๋ ๊ธฐ๊ธฐ ํค์ธ์งโ๋ ์๋ โํค ์ ์โ์์ ํ์ธ๋ฉ๋๋ค.
| ์ฑ ๋ฒ์ app_version | 0.7 |
| ๊ธฐ๊ธฐยท์ฑ ์ฆ๋ช
attestation | {"issued_at": null, "kind": "deferred", "nonce": null, "token": null, "verdict": "deferred"} |
| ์ด์์ฒด์ os | android |
| ๊ธฐ๊ธฐ ์๋ณ์ uid | android-1644b696d96936d0 |
| end | {"at_ms": 1790841371326, "grade": "strong", "reasons": [], "token_sha256": "372252de6e7ca5ed844eaba2af9e1f777b9fa4aa5564d804febeecba7dc19ba6"} |
| grade | strong |
| schema | proofcam-device-integrity/1 |
| start | {"at_ms": 1790841370685, "grade": "strong", "reasons": [], "token_sha256": "9705c2fd8f6e5fb25012ce4c8e9d188e578b0f04f204684c6cb271f7d1e0d64b"} |
| display_name | ๊ตฌ |
| ์ฌ์ฉ์ user_id | dummy:๊ตฌ |
| verification_level | dummy |
| verified_at | 2026-10-01T07:56:06.989495Z |
| ๊ธฐ๊ธฐยท์ฑ ์ฆ๋ช
attestation | {"issued_at": null, "kind": "deferred", "nonce": null, "token": null, "verdict": "deferred"} |
| claims | {"alpha_q8": 17, "app_version": "0.7", "capture": {"boot_id": "boot_count:24", "captured_at": "2026-10-01T07:56:06.989495Z", "gps": null, "monotonic_offset_ms": 294031265, "nitz_time": null}, "capture_method": "media_projection", "device_uid": "android-1644b696d96936d0", "identity": {"display_name": "๊ตฌ", "user_id": "dummy:๊ตฌ", "verification_level": "dummy", "verified_at": "2026-10-01T07:56:06.989495Z"}, "media_kind": "screen", "original_sha256": "5929b2d007a28c8f98bb1396abab91cf49728dd712ff3a8ac393708c4625521e", "schema": "proofcam-original-claims/1", "screen": {"black_ratio_pct": 47, "capture_api": "media_projection", "foreground_app": {"install_source": "play", "package": "com.kakao.talk", "signature_sha256": "1e79fc02fc6b7810e5ad6c552234a762403e1cf2f6c97286900452f029e2eb4c"}, "secure_blocked": false}, "seal_id": "1c77582dc5a54a3587db884bee313541"} |
| claims_signature | MEUCIGVFUyK9twtCk1GxbPohTKPrRMeU2q7bnVEwLLLdLFZFAiEAhpQCk6lM4qLReJyQQ2iPOzAJwe5zk3+kwqlspR5cI08= |
| claims_signature_alg | ecdsa-p256-sha256 |
| ๊ธฐ๊ธฐ ์๋ณ์ device_uid | android-1644b696d96936d0 |
| ๊ณต๊ฐํค public_key | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYZywJv7/cVB8b5UXdgkxAK7Ptayvcof0Ic9Tozz55CcHHZ3Ci1tlIYP0K/nNFIiwd2MLLC+Cv5Ti32tAkvNL4Q== |
| ์ ์์๋ช
๋ฐฉ์ signature | MEYCIQDueqIsRDCd8lUKapM9sIY1MjeVeq3pnz3EvCSh0Ivk4gIhAO5qwO5BtBNFfwEYd/NEJ2h2umZpIrkWw98mMwxpGEla |
| signature_alg | ecdsa-p256-sha256 |
| signed_sha256 | 5929b2d007a28c8f98bb1396abab91cf49728dd712ff3a8ac393708c4625521e |
| capture_api | media_projection |
| foreground_app | {"install_source": "play", "package": "com.kakao.talk", "signature_sha256": "1e79fc02fc6b7810e5ad6c552234a762403e1cf2f6c97286900452f029e2eb4c"} |
| format | jpeg |
| height | 2340 |
| original_sha256 | 5929b2d007a28c8f98bb1396abab91cf49728dd712ff3a8ac393708c4625521e |
| result_sha256 | a1f56adebfd0ad242eb9ffe0199d37273f05c766331a9d1c57c92a43a8fa9435 |
| result_size_bytes | 1214253 |
| width | 1080 |
| applied | True |
| composite | {"alpha_q8": 17, "dot_jpg_sha256": "0277eefde305c98d42cea578f14fa38abd3c110a26cb699ce122a1a55cd1c7c3", "jpeg_quality": 95, "orientation": 1, "origin_x": 0, "origin_y": 0, "pattern_corr_milli": 773, "scale_den": 2, "scale_num": 5, "tile_px": 128, "tile_sha256": "d3bca9efa596a8d1e7748a8993b962431bb7f92ecb9089f99e817b62a44d89c4", "version": "proofcam-dot-composite/1"} |
| dot_id | 10100120000000013 |
| scheme | smartpaper |
์ด ๊ณต๊ฐํค๋ก ๋ด์ธ ๋ด์ฉ ์ ์ฒด์ ์ ์์๋ช ํ ๊ฒ ๋ง๋์ง ์๋ฒ๊ฐ ํ์ธํ์ต๋๋ค โ ๋ด์ฉ์ด ๋จ ํ ๊ธ์๋ผ๋ ๋ฐ๋๋ฉด ์๋ช ์ด ๊นจ์ง๋๋ค. (ํฐ=ํ๋์จ์ด ํค, ์๋ฒยท์ธ์ฆ์=KMS ํค)
| ์๋ช
์๊ณ ๋ฆฌ์ฆ algorithm | ed25519 |
| ํค ์๋ณ์ key_id | 25eaae2607d1896f |
| ๊ณต๊ฐํค public_key | DEup3q0hVcdAlh26qceVUaVHP28Tvo5Pg/UwhVRvHRU= |
| ์๋ช
๊ฐ value | 1nJn6/qXZO4nNP5vgR0KQMF+Q8JGE5nQmPItDqCOBwVOrgfaP3fDuc52iTl84fedy1PeOdEo4rYUlOisCMd1Bw== |
ํค๊ฐ ๋๊ตฌ์๊ฒ ๋ฐ๊ธ๋ ๊ฑด์ง๋ ์์ง ํ์ธ ์ ๋จ(์ค์ค๋ก ๋ง๋ ํค) โ ๋ค๋ง ์ยท๋ณ์กฐ ์์์ ๋ณ๊ฐ๋ก ์ ํจํฉ๋๋ค.
| ์ ์ ๋ฑ๊ธ tier | ๋ฏธ๊ฒฐ์ (์ค์ค๋ก ๋ง๋ ํค) |
| ๊ธฐ๊ธฐ ์๋ณ์ device_uid | (์์) |
| ์ฌ์ฉ์ user_id | (์์) |
์ด ๋ด์ธ์ด โ์ด ์๊ฐ ์ด์ ์ ์กด์ฌํ๋คโ๋ฅผ ๋ ๋ฆฝ ๊ธฐ๊ด(์๊ฐ ์ธ์ฆ๊ธฐ๊ดยท๋ธ๋ก์ฒด์ธ)์ด ๋ณด์ฆํฉ๋๋ค. 1๊ฐ ์ด์์ด๋ฉด ์๊ฐ โํ์ โ.
๋ด์ธ ์ฆ๊ฑฐ์ ๋ณ๊ฐ๋ก ์๋ฒ๊ฐ ํธ์์ ๋ณด๊ดํ๋ ๋ถ๊ฐ๋ฌผ์ ๋๋ค (์์ด๋ ๋ด์ธ ์ฆ๋ช ์ ์ง์ฅ ์์).
| ์บก์ฒ ํ๋ฉด ๋ณด๊ด | ์์ (S3) |
| ๋ง์ (์ถ์ ํ์) | ์์ (dot_id 10100120000000013) |
| ๋ง์ ๋ฃ๊ธฐ ์ ์๋ณธ | ๋ณด๊ด๋จ |
| ๋ง์ ์ ํ ๊ณณ | ์๋ฒ(์๋ณธ์ ์ง์ ) ยท ์งํ๊ธฐ 17/255 ยท ๋ฌด๋ฌ ์๊ด 773/1000 |
| ๊ธฐ๊ธฐ ์๋ช (์๋ณธ ํด์) | ์์ ยท ์๋ฒ๊ฐ ๋ฐ์ ๋ ํ์ธ |
| ์ดฌ์ ๋ฐฉ์(๊ธฐ๊ธฐ ์๋ช ๋ ์ฃผ์ฅ) | media_projection |
{
"manifest": {
"algorithms": {
"canonicalization": "json-sorted-compact-utf8",
"image_hash": "sha256",
"manifest_hash": "sha256",
"signature": "ed25519"
},
"capture": {
"boot_id": "boot_count:24",
"captured_at": "2026-10-01T07:56:06.989495Z",
"gps": null,
"monotonic_offset_ms": 294031265,
"nitz_time": null
},
"device": {
"app_version": "0.7",
"attestation": {
"issued_at": null,
"kind": "deferred",
"nonce": null,
"token": null,
"verdict": "deferred"
},
"os": "android",
"uid": "android-1644b696d96936d0"
},
"device_integrity": {
"end": {
"at_ms": 1790841371326,
"grade": "strong",
"reasons": [],
"token_sha256": "372252de6e7ca5ed844eaba2af9e1f777b9fa4aa5564d804febeecba7dc19ba6"
},
"grade": "strong",
"schema": "proofcam-device-integrity/1",
"start": {
"at_ms": 1790841370685,
"grade": "strong",
"reasons": [],
"token_sha256": "9705c2fd8f6e5fb25012ce4c8e9d188e578b0f04f204684c6cb271f7d1e0d64b"
}
},
"identity": {
"display_name": "๊ตฌ",
"user_id": "dummy:๊ตฌ",
"verification_level": "dummy",
"verified_at": "2026-10-01T07:56:06.989495Z"
},
"media_kind": "screen",
"original_attestation": {
"attestation": {
"issued_at": null,
"kind": "deferred",
"nonce": null,
"token": null,
"verdict": "deferred"
},
"claims": {
"alpha_q8": 17,
"app_version": "0.7",
"capture": {
"boot_id": "boot_count:24",
"captured_at": "2026-10-01T07:56:06.989495Z",
"gps": null,
"monotonic_offset_ms": 294031265,
"nitz_time": null
},
"capture_method": "media_projection",
"device_uid": "android-1644b696d96936d0",
"identity": {
"display_name": "๊ตฌ",
"user_id": "dummy:๊ตฌ",
"verification_level": "dummy",
"verified_at": "2026-10-01T07:56:06.989495Z"
},
"media_kind": "screen",
"original_sha256": "5929b2d007a28c8f98bb1396abab91cf49728dd712ff3a8ac393708c4625521e",
"schema": "proofcam-original-claims/1",
"screen": {
"black_ratio_pct": 47,
"capture_api": "media_projection",
"foreground_app": {
"install_source": "play",
"package": "com.kakao.talk",
"signature_sha256": "1e79fc02fc6b7810e5ad6c552234a762403e1cf2f6c97286900452f029e2eb4c"
},
"secure_blocked": false
},
"seal_id": "1c77582dc5a54a3587db884bee313541"
},
"claims_signature": "MEUCIGVFUyK9twtCk1GxbPohTKPrRMeU2q7bnVEwLLLdLFZFAiEAhpQCk6lM4qLReJyQQ2iPOzAJwe5zk3+kwqlspR5cI08=",
"claims_signature_alg": "ecdsa-p256-sha256",
"device_uid": "android-1644b696d96936d0",
"public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYZywJv7/cVB8b5UXdgkxAK7Ptayvcof0Ic9Tozz55CcHHZ3Ci1tlIYP0K/nNFIiwd2MLLC+Cv5Ti32tAkvNL4Q==",
"signature": "MEYCIQDueqIsRDCd8lUKapM9sIY1MjeVeq3pnz3EvCSh0Ivk4gIhAO5qwO5BtBNFfwEYd/NEJ2h2umZpIrkWw98mMwxpGEla",
"signature_alg": "ecdsa-p256-sha256",
"signed_sha256": "5929b2d007a28c8f98bb1396abab91cf49728dd712ff3a8ac393708c4625521e"
},
"received_at": "2026-10-01T07:56:11Z",
"screen": {
"capture_api": "media_projection",
"foreground_app": {
"install_source": "play",
"package": "com.kakao.talk",
"signature_sha256": "1e79fc02fc6b7810e5ad6c552234a762403e1cf2f6c97286900452f029e2eb4c"
},
"format": "jpeg",
"height": 2340,
"original_sha256": "5929b2d007a28c8f98bb1396abab91cf49728dd712ff3a8ac393708c4625521e",
"result_sha256": "a1f56adebfd0ad242eb9ffe0199d37273f05c766331a9d1c57c92a43a8fa9435",
"result_size_bytes": 1214253,
"width": 1080
},
"seal_id": "1c77582dc5a54a3587db884bee313541",
"seal_mode": "server-composited",
"version": "seal-manifest/0.2",
"watermark": {
"applied": true,
"composite": {
"alpha_q8": 17,
"dot_jpg_sha256": "0277eefde305c98d42cea578f14fa38abd3c110a26cb699ce122a1a55cd1c7c3",
"jpeg_quality": 95,
"orientation": 1,
"origin_x": 0,
"origin_y": 0,
"pattern_corr_milli": 773,
"scale_den": 2,
"scale_num": 5,
"tile_px": 128,
"tile_sha256": "d3bca9efa596a8d1e7748a8993b962431bb7f92ecb9089f99e817b62a44d89c4",
"version": "proofcam-dot-composite/1"
},
"dot_id": "10100120000000013",
"scheme": "smartpaper"
}
},
"manifest_sha256": "a9b276824f835db10aeae5b0485c04bb7228dc0ceb03183a193f1ad2e0ca647b",
"seal_status": "temporary",
"signature": {
"algorithm": "ed25519",
"key_id": "25eaae2607d1896f",
"public_key": "DEup3q0hVcdAlh26qceVUaVHP28Tvo5Pg/UwhVRvHRU=",
"value": "1nJn6/qXZO4nNP5vgR0KQMF+Q8JGE5nQmPItDqCOBwVOrgfaP3fDuc52iTl84fedy1PeOdEo4rYUlOisCMd1Bw=="
},
"timestamps": [],
"version": "seal-manifest/0.2"
}