メインコンテンツまでスキップ

データフォーマット学習ガイド

このディレクトリには、アイデンティティ技術で使われるデータフォーマット(シリアライゼーション形式)に関する学習ドキュメントが含まれています。


なぜデータフォーマットを学ぶのか?

アイデンティティ技術では、様々なデータフォーマットが使われています。

使用例:

OAuth/OIDC:
JWT → JSON (Base64URL エンコード)

FIDO2/WebAuthn:
認証器との通信 → CBOR
attestation → CBOR + COSE

mdoc (mDL):
データ構造 → CBOR
署名 → COSE

X.509 証明書:
証明書 → ASN.1/DER

これらを理解することで、デバッグや実装がスムーズになります。


目次

ドキュメント内容
エンコーディング基礎Base64, URLエンコーディング, UTF-8, Hex
時刻とタイムゾーンUnix時間, UTC, ISO 8601, 2038年問題
UUIDUUID v4/v7, 認証での使用, DB設計
シリアライゼーション概要JSON, CBOR, ASN.1 の比較と使い分け
CBORCBOR の構造とエンコード方式
COSECBOR ベースの署名・暗号化
ASN.1 と DERX.509 証明書で使われるフォーマット
JSON-LDJSON に意味を付与する Linked Data 形式
RDFJSON-LD の基礎となるデータモデル

フォーマットの分類

データフォーマットの系譜:

┌─────────────────────────────────────────────────────────────┐
│ │
│ テキスト系(人間が読める) │
│ ├── XML │
│ ├── JSON ← OAuth/OIDC で広く使用 │
│ ├── JSON-LD ← W3C VC Data Model で使用 │
│ └── YAML │
│ │
│ バイナリ系(コンパクト・高速) │
│ ├── ASN.1/DER ← X.509 証明書、古い暗号系 │
│ ├── Protocol Buffers ← Google が開発、gRPC │
│ ├── MessagePack ← JSON のバイナリ版 │
│ └── CBOR ← IETF 標準、WebAuthn/mdoc で使用 │
│ │
└─────────────────────────────────────────────────────────────┘

アイデンティティ技術での使用状況

技術フォーマット用途
JWTJSON (Base64URL)トークン、クレーム
JWKJSON公開鍵の表現
W3C VCJSON-LDVerifiable Credentials(W3C Data Model)
WebAuthnCBOR認証器データ、attestation
CTAPCBOR認証器との通信プロトコル
mdoc (mDL)CBORモバイル運転免許証
COSECBOR署名・暗号化(CBOR版 JOSE)
X.509ASN.1/DER証明書
PKCSASN.1/DER暗号鍵、署名

学習パス

初めての方

1. エンコーディング基礎
└── Base64, URLエンコーディング, UTF-8 を理解

2. 時刻とタイムゾーン
└── Unix時間, UTC, JWTの時刻クレーム を理解

3. UUID
└── 識別子生成、v4 vs v7 の使い分け

4. シリアライゼーション概要
└── なぜ複数のフォーマットがあるのか理解

5. CBOR
└── 現代のアイデンティティ技術で多用される

WebAuthn/FIDO2 を扱う方

1. CBOR
└── 認証器データの構造を理解

2. COSE
└── attestation の署名を理解

mdoc/mDL を扱う方

1. CBOR
└── mdoc のデータ構造を理解

2. COSE
└── issuerAuth の署名を理解

証明書を扱う方

1. ASN.1 と DER
└── X.509 証明書の構造を理解

W3C Verifiable Credentials を扱う方

1. RDF
└── トリプル、URI、グラフの概念を理解

2. JSON-LD
└── @context とセマンティクスを理解

3. CBOR/COSE(オプション)
└── mdoc 形式も扱う場合

参考リンク