๐Ÿ” ๋ด‰์ธ ์ƒ์„ธ ยท b0ff64972e9b4c828121a062a185380b

์ด ๋ด‰์ธ ํ•˜๋‚˜์— ๋Œ€ํ•ด ์„œ๋ฒ„๊ฐ€ ์•„๋Š” ์ „๋ถ€.

โœ… ๊ฒ€์ฆ๋จ โ— ์ผ๋ถ€ ๊ฒ€์ฆ โš ๏ธ ์ž๊ฐ€์‹ ๊ณ (ํฐ์ด ์ฃผ์žฅ) โ„น๏ธ ๋ฉ”ํƒ€

์ข…๋ฅ˜ ์Œ์„ฑ

media_kind = audio

๊ธฐ๋ณธ ์ •๋ณด โ„น๏ธ ๋ฉ”ํƒ€

โ€˜์„œ๋ฒ„ ๋ฐ›์€ ์‹œ๊ฐโ€™๋งŒ ์„œ๋ฒ„๊ฐ€ ์ฐ์€ ๊ฐ’์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋ด‰์ธ ๋ฒˆํ˜ธยทํ˜•์‹ ๊ฐ™์€ ์‹๋ณ„ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋ฐ›์€ ์‹œ๊ฐ
received_at
2026-09-02T03:47:38.210475Z
๋ด‰์ธ ๋ฒˆํ˜ธ
seal_id
b0ff64972e9b4c828121a062a185380b
๋ด‰์ธ ๋ฐฉ์‹
seal_mode
client-hybrid
๋ด‰์ธ ํ˜•์‹ ๋ฒ„์ „
version
seal-manifest/0.2

๋ฐœ์ทŒ๋ณธ ๋งŒ๋“ค๊ธฐ โœ… ๊ฒ€์ฆ๋จ

๋ง‰๋Œ€์—์„œ ๊ตฌ๊ฐ„์„ ํด๋ฆญํ•ด ์ž˜๋ผ๋‚ด๋ฉด, ๊ทธ ๋ฐœ์ทŒ๋ณธ์ด โ€˜์ด ์›๋ณธ์˜ ํ•ด๋‹น ๊ตฌ๊ฐ„โ€™์ž„์„ ์ฆ๋ช…ํ•˜๋Š” ๋ด‰์ธ์ด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค (ํ•œ ์นธ = 1์ดˆ).

๋ง‰๋Œ€ = ์ „์ฒด ๋…น์Œ (ํ•œ ์นธ = 1์ดˆ). ํ•œ ์นธ ํด๋ฆญ = ๊ทธ 1์ดˆ ๋ฐœ์ทŒ, ๋‘ ์นธ ํด๋ฆญ = ์‹œ์ž‘~๋ ๊ตฌ๊ฐ„.
์„ ํƒ ์—†์Œ

์‚ฌ์šฉํ•œ ๊ธฐ์ˆ  โ„น๏ธ ๋ฉ”ํƒ€

์ด ๋ด‰์ธ์— ์“ฐ์ธ ์•”ํ˜ธ ๊ธฐ์ˆ  ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์ •๊ทœํ™” ๋ฐฉ์‹
canonicalization
json-sorted-compact-utf8
๋ช…์„ธ ํ•ด์‹œ
manifest_hash
sha256
์†Œ๋ฆฌ ํ•ด์‹œ
payload_hash
sha256
์ „์ž์„œ๋ช… ๋ฐฉ์‹
signature
ecdsa-p256-sha256

๋ณธ์ธ ์„ ์–ธ โš ๏ธ ์ž๊ฐ€์‹ ๊ณ 

๋…น์Œํ•œ ์‚ฌ๋žŒ์ด ์Šค์Šค๋กœ ์„ ์–ธํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์„œ๋ช…๋ผ ์žˆ์–ด ๋‚˜์ค‘์— ๋ชป ๋ฐ”๊พธ์ง€๋งŒ, ๊ทธ ์„ ์–ธ์ด โ€˜์‚ฌ์‹คโ€™์ธ์ง€๋Š” ๊ธฐ์ˆ ์ด ์ฆ๋ช…ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์„ ์–ธํ•œ ์‹œ๊ฐ
declared_at
2026-09-02T03:47:38.210475Z
๋ณธ์ธ์ด ๋‹น์‚ฌ์ž์ธ๊ฐ€
is_party
True
๋ณธ์ธ ์„ ์–ธ ๋ฌธ๊ตฌ
statement
๋‚˜๋Š” ๋‹น์‚ฌ์ž์ด๋ฉฐ ํ•ฉ๋ฒ•์ ์œผ๋กœ ๋…น์Œํ•จ

๋…น์Œ ์ƒํ™ฉ (ํฐ์ด ๊ธฐ๋ก) โš ๏ธ ์ž๊ฐ€์‹ ๊ณ 

ํฐ์˜ ์‹œ๊ณ„ยท์œ„์น˜์„ผ์„œ๊ฐ€ ์ ์€ ๊ฐ’์ž…๋‹ˆ๋‹ค โ€” ์•„๋ž˜ โ€˜์‹ ๋ขฐ๋œ ์‹œ๊ฐโ€™๊ณผ๋Š” ๋ณ„๊ฐœ(ํฐ ์‹œ๊ณ„๋Š” ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ).

๋ถ€ํŒ… ์‹๋ณ„์ž
boot_id
(์—†์Œ)
๋…น์Œ ์‹œ๊ฐ (ํฐ ์ฃผ์žฅ)
captured_at
2026-09-02T03:47:38.210475Z
์œ„์น˜ (GPS)
gps
{"accuracy_m": "18", "fix_at": "2026-09-01T12:01:58.212Z", "lat": "37.643265", "lon": "126.888573", "source": "gps"}
๊ธฐ๊ธฐ ์ž‘๋™์‹œ๊ฐ„(ms)
monotonic_offset_ms
6412620974
ํ†ต์‹ ๋ง ์‹œ๊ฐ
nitz_time
(์—†์Œ)

์˜ค๋””์˜ค ํŒŒ์ผ โ— ์ผ๋ถ€ ๊ฒ€์ฆ

โ€˜์†Œ๋ฆฌ ์ง€๋ฌธโ€™์€ ์„œ๋ฒ„๊ฐ€ ์‹ค์ œ ์†Œ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด ์ผ์น˜ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค โœ… ยท ํŒŒ์ผ ์ด๋ฆ„ ๋“ฑ ๋‚˜๋จธ์ง€๋Š” ํฐ์ด ์ ์€ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ข…๋ฅ˜(MIME)
content_type
audio/wav
์ „์ฒด ํŒŒ์ผ ํฌ๊ธฐ(๋ฐ”์ดํŠธ)
file_size_bytes
1009052
ํŒŒ์ผ ์ด๋ฆ„
filename
recording.wav
ํŒŒ์ผ ํ˜•์‹
kind
wav
๋ฐœ์ทŒ ์ฆ๋ช…์šฉ ๊ตฌ์กฐ
merkle
{"alg": "rfc6962-sha256", "frame_bytes": 88200, "leaf_count": 12, "leaf_seconds": 1, "root": "ed6e0398f0422effadd84169ef27899638746fbafc65326b032619ad70aabc6a", "total_samples": 504504}
โ€˜์†Œ๋ฆฌโ€™๋กœ ๋ณด๋Š” ๋ฒ”์œ„
payload_def
wav-fmt-and-data
์†Œ๋ฆฌ ์ง€๋ฌธ (๋ณ€์กฐ ํƒ์ง€์šฉ ํ•ด์‹œ)
payload_sha256
dd90bde4e67a22e9b2cf11dbf196a61468bd5078d2e15c6f2f1b0b2515bc112f
์†Œ๋ฆฌ ๋ถ€๋ถ„ ํฌ๊ธฐ(๋ฐ”์ดํŠธ)
payload_size_bytes
1009032

๊ธฐ๊ธฐ ์ •๋ณด โš ๏ธ ์ž๊ฐ€์‹ ๊ณ 

ํฐ์ด ์ฃผ์žฅํ•˜๋Š” ๊ธฐ๊ธฐ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ โ€˜์ด ๋ด‰์ธ์„ ๋งŒ๋“  ํ‚ค๊ฐ€ ์ง„์งœ ๋ฐœ๊ธ‰๋œ ๊ธฐ๊ธฐ ํ‚ค์ธ์ง€โ€™๋Š” ์•„๋ž˜ โ€˜ํ‚ค ์‹ ์›โ€™์—์„œ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

์•ฑ ๋ฒ„์ „
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_leveldummy
verified_at2026-09-02T03:47:38.210475Z

์Œ์งˆยทํ˜•์‹ โœ… ๊ฒ€์ฆ๋จ

์ด ํŒŒ์ผ์ด ๋งํ•˜๋Š” ์Œ์งˆยทํ˜•์‹์ด ์‹ค์ œ ํŒŒ์ผ ๋‚ด์šฉ๊ณผ ๋งž๋Š”์ง€ ์„œ๋ฒ„๊ฐ€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋น„ํŠธ ์‹ฌ๋„
bits_per_sample
16
์ฑ„๋„ ์ˆ˜
channels
1
์ฝ”๋ฑ
codec
pcm_s16le
์žฌ์ƒ ๊ธธ์ด(ms)
duration_ms
11440
์ƒ˜ํ”Œ๋ ˆ์ดํŠธ(Hz)
sample_rate
44100

์ „์ž ์„œ๋ช… โœ… ๊ฒ€์ฆ๋จ

์ด ๊ณต๊ฐœํ‚ค๋กœ ๋ด‰์ธ ๋‚ด์šฉ ์ „์ฒด์— ์ „์ž์„œ๋ช…ํ•œ ๊ฒŒ ๋งž๋Š”์ง€ ์„œ๋ฒ„๊ฐ€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค โ€” ๋‚ด์šฉ์ด ๋‹จ ํ•œ ๊ธ€์ž๋ผ๋„ ๋ฐ”๋€Œ๋ฉด ์„œ๋ช…์ด ๊นจ์ง‘๋‹ˆ๋‹ค. (ํฐ=ํ•˜๋“œ์›จ์–ด ํ‚ค, ์„œ๋ฒ„ยท์ธ์ฆ์„œ=KMS ํ‚ค)

์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜
algorithm
ecdsa-p256-sha256
์ธ์ฆ์„œ ์ฒด์ธ
cert_chain
[{"issuer_key_id": "a261c5989b73c4c5", "not_after": "2026-09-09T03:47:38+00:00", "not_before": "2026-09-02T03:42:38+00:00", "signature": "h3e3K023dGGvjCUm+Uhwr3vZzp4zzAr43NeDV2jifAqm16bowP1IBm0CMNAIyG4vEEvLwYkptw7d7vkftwtICg==", "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-08-30T03:47:38+00:00", "not_before": "2026-09-01T03:47:38+00:00", "signature": "SKghP7qcQSwyai2hcMDbA0x0oKAyAc270u0Tpjwx4PZiNCuHrJBObycUPN8bPAvNvkj5GESUR8/GDlT0IyBvBg==", "subject": {"device_uid": "issuing-ca", "key_id": "a261c5989b73c4c5", "public_key": "iWtJLshsuHrjphV7zf9VVa2saQ6nRprQAF7PqNe+ecY=", "user_id": null}, "version": "seal-cert/0.1"}]
ํ‚ค ์‹๋ณ„์ž
key_id
b634758fdd15c719
๊ณต๊ฐœํ‚ค
public_key
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKfWzsku9xUy36qojIsY2Zma3J4i5Zht0QyEy9e2eRRKAc/M34ySJOBupiElO9X7xKoolU7E0aWeKUto1OcMfjg==
์„œ๋ช… ๊ฐ’
value
MEUCIGYpcGOfSwntbCifbJ8Zbp6L4Ui8CsmRS35DygjPksiXAiEA5M4Ys0yhiqHCANLjBIL/9aLH2p1B6oW8ricujBD/c+8=

ํ‚ค ์‹ ์› (๋ˆ„๊ฐ€ ๋งŒ๋“  ํ‚ค์ธ๊ฐ€) โœ… ๊ฒ€์ฆ๋จ

์ด ๋ด‰์ธ์„ ๋งŒ๋“  ํ‚ค๊ฐ€ โ€˜์ง„์งœ ๋ฐœ๊ธ‰๋ฐ›์€ ๊ธฐ๊ธฐ ํ‚คโ€™์ž„์ด ์ธ์ฆ์„œ๋กœ ์‹ ๋ขฐ ๋ฟŒ๋ฆฌ๊นŒ์ง€ ํ™•์ธ๋์Šต๋‹ˆ๋‹ค โ€” ์•„๋ฌด ๋„๊ตฌ๋กœ๋‚˜ ์œ„์กฐํ•œ ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค.

์‹ ์› ๋“ฑ๊ธ‰
tier
๋ฐœ๊ธ‰๋œ ๊ธฐ๊ธฐ ํ‚ค (๊ฒฐ์†๋จ)
๊ธฐ๊ธฐ ์‹๋ณ„์ž
device_uid
android-b634758fdd15c719
์‚ฌ์šฉ์ž
user_id
dummy:๋”๋ฏธ

์‹ ๋ขฐ๋œ ์‹œ๊ฐ ์ฆ์ธ โœ… ๊ฒ€์ฆ๋จ

์ด ๋ด‰์ธ์ด โ€˜์ด ์‹œ๊ฐ ์ด์ „์— ์กด์žฌํ–ˆ๋‹คโ€™๋ฅผ ๋…๋ฆฝ ๊ธฐ๊ด€(์‹œ๊ฐ ์ธ์ฆ๊ธฐ๊ด€ยท๋ธ”๋ก์ฒด์ธ)์ด ๋ณด์ฆํ•ฉ๋‹ˆ๋‹ค. 1๊ฐœ ์ด์ƒ์ด๋ฉด ์‹œ๊ฐ โ€˜ํ™•์ •โ€™.

์‹œ๊ฐ ์ธ์ฆ๊ธฐ๊ด€ (RFC3161) ยท freetsa ยท ๋ณด์ฆ ์‹œ๊ฐ 2026-09-02T03:47:39+00:00
opentimestamps ยท ๋ณด์ฆ ์‹œ๊ฐ ?

์„œ๋ฒ„๊ฐ€ ๋”ฐ๋กœ ๋ณด๊ด€ํ•œ ๊ฒƒ โ„น๏ธ ๋ฉ”ํƒ€

๋ด‰์ธ ์ฆ๊ฑฐ์™€ ๋ณ„๊ฐœ๋กœ ์„œ๋ฒ„๊ฐ€ ํŽธ์˜์ƒ ๋ณด๊ด€ํ•˜๋Š” ๋ถ€๊ฐ€๋ฌผ์ž…๋‹ˆ๋‹ค (์—†์–ด๋„ ๋ด‰์ธ ์ฆ๋ช…์—” ์ง€์žฅ ์—†์Œ).

์›๋ณธ ์Œ์„ฑ ๋ณด๊ด€์žˆ์Œ (S3)
์Œํ–ฅ ์ง€๋ฌธ (์‚ฌ๋ณธ ์ฐพ๊ธฐ์šฉ ๋ณด์กฐ)์žˆ์Œ
์›๋ณธ .wav ๋‚ด๋ ค๋ฐ›๊ธฐ ยท ์ด ์›๋ณธ์„ ์ง์ ‘ ๋“ค์–ด ๋ด‰์ธ๋œ ๊ธธ์ด์™€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์›๋ณธ ๋ฒˆ๋“ค JSON ๋ณด๊ธฐ
{
  "manifest": {
    "algorithms": {
      "canonicalization": "json-sorted-compact-utf8",
      "manifest_hash": "sha256",
      "payload_hash": "sha256",
      "signature": "ecdsa-p256-sha256"
    },
    "attestation": {
      "declared_at": "2026-09-02T03:47:38.210475Z",
      "is_party": true,
      "statement": "๋‚˜๋Š” ๋‹น์‚ฌ์ž์ด๋ฉฐ ํ•ฉ๋ฒ•์ ์œผ๋กœ ๋…น์Œํ•จ"
    },
    "capture": {
      "boot_id": null,
      "captured_at": "2026-09-02T03:47:38.210475Z",
      "gps": {
        "accuracy_m": "18",
        "fix_at": "2026-09-01T12:01:58.212Z",
        "lat": "37.643265",
        "lon": "126.888573",
        "source": "gps"
      },
      "monotonic_offset_ms": 6412620974,
      "nitz_time": null
    },
    "container": {
      "content_type": "audio/wav",
      "file_size_bytes": 1009052,
      "filename": "recording.wav",
      "kind": "wav",
      "merkle": {
        "alg": "rfc6962-sha256",
        "frame_bytes": 88200,
        "leaf_count": 12,
        "leaf_seconds": 1,
        "root": "ed6e0398f0422effadd84169ef27899638746fbafc65326b032619ad70aabc6a",
        "total_samples": 504504
      },
      "payload_def": "wav-fmt-and-data",
      "payload_sha256": "dd90bde4e67a22e9b2cf11dbf196a61468bd5078d2e15c6f2f1b0b2515bc112f",
      "payload_size_bytes": 1009032
    },
    "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-02T03:47:38.210475Z"
    },
    "interpretation": {
      "bits_per_sample": 16,
      "channels": 1,
      "codec": "pcm_s16le",
      "duration_ms": 11440,
      "sample_rate": 44100
    },
    "received_at": "2026-09-02T03:47:38.210475Z",
    "seal_id": "b0ff64972e9b4c828121a062a185380b",
    "seal_mode": "client-hybrid",
    "version": "seal-manifest/0.2"
  },
  "manifest_sha256": "f538d24b02770951aeca4cec5a7fa3139ef2b7064e9ee3b7a680fcbad8893e61",
  "seal_status": "temporary",
  "signature": {
    "algorithm": "ecdsa-p256-sha256",
    "cert_chain": [
      {
        "issuer_key_id": "a261c5989b73c4c5",
        "not_after": "2026-09-09T03:47:38+00:00",
        "not_before": "2026-09-02T03:42:38+00:00",
        "signature": "h3e3K023dGGvjCUm+Uhwr3vZzp4zzAr43NeDV2jifAqm16bowP1IBm0CMNAIyG4vEEvLwYkptw7d7vkftwtICg==",
        "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-08-30T03:47:38+00:00",
        "not_before": "2026-09-01T03:47:38+00:00",
        "signature": "SKghP7qcQSwyai2hcMDbA0x0oKAyAc270u0Tpjwx4PZiNCuHrJBObycUPN8bPAvNvkj5GESUR8/GDlT0IyBvBg==",
        "subject": {
          "device_uid": "issuing-ca",
          "key_id": "a261c5989b73c4c5",
          "public_key": "iWtJLshsuHrjphV7zf9VVa2saQ6nRprQAF7PqNe+ecY=",
          "user_id": null
        },
        "version": "seal-cert/0.1"
      }
    ],
    "key_id": "b634758fdd15c719",
    "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKfWzsku9xUy36qojIsY2Zma3J4i5Zht0QyEy9e2eRRKAc/M34ySJOBupiElO9X7xKoolU7E0aWeKUto1OcMfjg==",
    "value": "MEUCIGYpcGOfSwntbCifbJ8Zbp6L4Ui8CsmRS35DygjPksiXAiEA5M4Ys0yhiqHCANLjBIL/9aLH2p1B6oW8ricujBD/c+8="
  },
  "timestamps": [],
  "version": "seal-bundle/0.2"
}