Documentation

AMATELUS.DID

W3C.DIDDocumentから主要な公開鍵を抽出するヘルパー関数

verificationMethodの最初のエントリから公開鍵を取得します。 AMATELUSでは、did:amt仕様に従い、verificationMethodに必ず公開鍵が含まれます。

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    正規のDIDDocument(所有権検証済み)

    以下のいずれかの方法で検証されたDIDDocument:

    1. Issuerによるチャレンジ検証: DIDCommでHolderが秘密鍵所有権を証明
    2. トラストアンカー: 政府配布のウォレットに登録済み、または公式サイトからダウンロード

    W3C DID仕様への準拠:

    • 標準的なW3C.DIDDocumentをそのまま使用
    • did:amt仕様に従い、verificationMethodから公開鍵を抽出可能

    設計思想:

    • DIDDocumentの正規性(所有権検証済み)を型レベルで保証
    • Issuerは検証済みのValidDIDDocumentからValidDIDを構築できる
    • トラストアンカーのValidDIDDocumentは公的に信頼される
    Instances For

      不正なDIDDocument

      秘密鍵所有権が未検証、または検証に失敗したDIDDocument。 以下のいずれかの理由で不正:

      • チャレンジ検証に失敗
      • 改ざんされたDIDDocument
      • 信頼できないソースから取得
      Instances For

        未検証のDIDDocument(和型)

        構造的に正しくパースされたDIDDocumentで、所有権検証の結果を表す和型。 Holderから提示されるUnknownDIDDocumentは、以下のいずれか:

        • valid: 所有権検証済みのDIDDocument
        • invalid: 所有権未検証または検証失敗のDIDDocument

        命名の意図:

        • 「UnknownDIDDocument」= 構造的にパース成功したが、所有権検証の状態は未確定または既知
        • W3C.DIDDocument(検証前)とは異なり、検証結果を含む

        AMATELUSでの使用:

        • HolderはUnknownDIDDocument(和型)をIssuerに提示
        • Issuerはチャレンジで検証し、成功ならValidDIDDocumentを獲得
        • ValidDIDDocumentからValidDIDを構築可能
        Instances For

          UnknownDIDDocumentのBeqインスタンス(W3C DID識別子で比較)

          Equations
          • One or more equations did not get rendered due to their size.

          UnknownDIDDocumentのReprインスタンス

          Equations
          • One or more equations did not get rendered due to their size.

          UnknownDIDDocumentが有効かどうかを表す述語

          Equations
          Instances For

            W3C.DIDからmethod-specific-idを抽出するヘルパー関数

            did:amt仕様では、method-specific-idがハッシュそのものです。 例: "did:amt:0V3R4T7K1Q2P3N4M5..." → "0V3R4T7K1Q2P3N4M5..."

            Equations
            Instances For
              inductive DIDPurpose :

              DIDの種類(目的)

              Identity DID:

              • 身分証明用の永続的なDID
              • 運転免許証、パスポート、資格情報など身分を示すVCの主体
              • 長期間保持され、複数のサービスで参照される可能性がある

              Communication DID:

              • 通信毎に生成される一時的なDID
              • サービス毎に異なる通信相手との通信に使用
              • VCが発行されない場合は破棄
              • VCが発行される場合は、Walletで通信相手DIDと紐づけて保存
              • 複数サービス間での名寄せ回避: ZKP不学性により、複数のサービスから 異なる通信用DIDを観測しても、背後にある同じIdentity DIDを推測困難
              • サービス内ログイン: 保存された同じ通信用DIDで認証継続(名寄せ不要)

              Trust Anchor DID:

              • 政府や公式機関による固定的なDID
              • VC発行者として使用(自治体、銀行等)
              • トラストアンカーとして公式サイトから配布
              • 永続的かつ公開的に信頼される
              Instances For
                structure ValidDID :

                正規のDID(検証済み)

                Wallet内に対応するIdentityがあり、秘密鍵を保持しているDID。

                フィールド:

                • w3cDID: W3C DID仕様に準拠したDID識別子
                • hash: DIDDocumentから計算されたハッシュ値(did:amt仕様のmethod-specific-id)
                • purpose: DIDの使用目的(Identity、Communication、TrustAnchor)

                did:amt仕様:

                • did:amt仕様では、method-specific-idがDIDDocumentのハッシュです
                • hashフィールドはこのハッシュ値を保持します
                • w3cDIDのmethod-specific-id部分とhashは一致する必要があります

                設計思想:

                • Identity DID: 永続的、複数のサービスで使用可能
                • Communication DID: 一時的、VC発行なしなら破棄
                • Trust Anchor DID: 公開的、Issuer/Verifierが使用
                Instances For
                  structure InvalidDID :

                  不正なDID

                  Wallet内にIdentityがない、または盗難されたDID。

                  フィールド:

                  • w3cDID: W3C DID仕様に準拠したDID識別子
                  • reason: 不正と判断された理由
                  Instances For
                    inductive UnknownDID :

                    UnknownDID (Unknown Decentralized Identifier)

                    正規のDIDと不正なDIDの和型。 AMATELUSプロトコルで扱われるDIDは、以下のいずれか:

                    • valid: 正規のDID(Wallet内に対応するIdentityがある)
                    • invalid: 不正なDID(Wallet内にIdentityがない、または盗難DID)

                    設計の利点:

                    • DIDの正規性をプロトコルレベルで明確に区別
                    • Walletバグや悪意の攻撃を型レベルで表現
                    • ZKP/VC/DIDPairと完全に統一された設計
                    • ValidDIDにはハッシュ値を保持(did:amt仕様に準拠)

                    AMATELUSのDIDComm(VC発行フロー):

                    • HolderがIssuerにDIDを送信してVC発行を依頼
                    • IssuerはDIDを受け取り、VCに埋め込む(issuer/subjectフィールド)
                    • Walletバグで間違ったDIDを送るとinvalidになる
                    • 悪意のあるHolderが他人のDIDを使うとinvalidになる
                    • いずれの場合も、VCは発行されるが、そのVCを使うことができない (Holderが秘密鍵を持っていないため、ZKPを生成できない)

                    ZKP/VC/DIDPairとの設計の一貫性:

                    • ZeroKnowledgeProof、VerifiableCredential、DIDPairと同じパターン(Valid/Invalid + 和型)
                    • 統一された形式検証アプローチ
                    Instances For

                      DIDのBeqインスタンス

                      Equations
                      • One or more equations did not get rendered due to their size.

                      DIDのReprインスタンス

                      Equations
                      • One or more equations did not get rendered due to their size.

                      W3C ServiceEndpointをバイト列にシリアライズするヘルパー関数

                      Equations
                      Instances For

                        W3C UnknownDIDDocumentのserviceフィールド全体をシリアライズ

                        Equations
                        Instances For

                          ValidDIDDocumentをバイト列にシリアライズする関数

                          シリアライズ形式: id.value ++ verificationMethods ++ services

                          設計:

                          • W3C DID仕様に完全準拠
                          • did:amt仕様に従い、標準フィールドのみを使用
                          • 決定的: 同じUnknownDIDDocumentは常に同じバイト列を生成
                          • 単射性: シリアライズ形式により、異なるUnknownDIDDocumentは異なるバイト列を生成(高確率)
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            ValidDIDDocumentからW3C.DIDを抽出する関数

                            この関数は、所有権検証済みのUnknownDIDDocumentからW3C.DID識別子を抽出します。

                            AMATELUSでの使用:

                            • Issuer: チャレンジ検証後、ValidDIDDocumentからW3C.DIDを取得
                            • トラストアンカー: 公開されたValidDIDDocumentからW3C.DIDを取得
                            • Verifier: トラストアンカーのValidDIDDocumentからW3C.DIDを取得

                            did:amt仕様との関係:

                            • did:amt仕様では、DID生成時にUnknownDIDDocument全体をハッシュ化
                            • ハッシュはmethod-specific-id部分に含まれる(例: did:amt:0V3R4T7K1Q2P3N4M5...)
                            • したがって、W3C.DIDのvalueからmethod-specific-idを抽出すればハッシュが得られる

                            技術仕様:

                            • 入力: ValidDIDDocument(所有権検証済み)
                            • 出力: W3C.DID
                            • 性質: 決定性(同じ入力には同じ出力)
                            Equations
                            Instances For

                              ValidDIDDocumentからValidDIDを生成(デフォルト: Identity)

                              ValidDIDDocumentをシリアライズしてハッシュを計算し、ValidDIDを構築します。 この関数は、既存のコードとの互換性を保つため、デフォルトでIdentityを選択します。

                              AMATELUSでの使用:

                              • Issuer: チャレンジ検証後にValidDIDを取得(通常はIdentity)
                              • Verifier: トラストアンカーの公開UnknownDIDDocumentからValidDIDを取得

                              この定義により、以下が保証される:

                              • 決定性: 同じValidDIDDocumentからは常に同じValidDIDが取得される
                              • 一意性: did:amt仕様により、method-specific-idがハッシュなので一意性が保証される
                              Equations
                              Instances For

                                ValidDIDDocumentからValidDIDを生成(目的指定版)

                                パラメータ:

                                • doc: ValidDIDDocument
                                • purpose: DIDの使用目的(Identity、Communication、TrustAnchor)

                                AMATELUSでの使用:

                                • Holder: 通信毎に通信用DIDを生成(Communication)
                                • Issuer/Verifier: 特定の目的でDID生成時
                                Equations
                                Instances For

                                  UnknownDIDDocumentからDID(和型)を生成する(デフォルト: Identity)

                                  変換:

                                  • ValidDIDDocument → ValidDID(w3cDIDとhashを含む、purposeはIdentityに固定)
                                  • InValidDIDDocument → InvalidDID(w3cDIDとreasonを含む)

                                  この関数により、UnknownDIDDocumentの正規性がDIDの正規性に反映されます。 既存のコードとの互換性を保つため、デフォルトでIdentityを選択します。

                                  Equations
                                  Instances For

                                    UnknownDIDDocumentからDID(和型)を生成する(目的指定版)

                                    パラメータ:

                                    • doc: UnknownDIDDocument
                                    • purpose: DIDの使用目的(Identity、Communication、TrustAnchor)

                                    変換:

                                    • ValidDIDDocument → ValidDID(w3cDIDとhashとpurposeを含む)
                                    • InValidDIDDocument → InvalidDID(w3cDIDとreasonを含む)

                                    この関数により、UnknownDIDDocumentの正規性がDIDの正規性に反映されます。

                                    Equations
                                    Instances For

                                      DIDからmethod-specific-id(ハッシュ)を取得

                                      did:amt仕様では、method-specific-idがハッシュそのものです。

                                      Equations
                                      Instances For

                                        UnknownDIDからValidDIDへの変換

                                        valid: Some ValidDIDを返す invalid: noneを返す

                                        設計思想: invalidなDIDで発行されたVCは、InvalidVCとして扱われるべきです。 この関数により、DIDの正規性がVCの正規性に正しく反映されます。

                                        Equations
                                        Instances For

                                          DIDがValidDIDDocumentから正しく生成されたかを検証(デフォルト: Identity)

                                          パラメータ:

                                          • did: 検証対象のDID
                                          • doc: ValidDIDDocument

                                          検証:

                                          • did が valid で、fromValidDocument doc と等しい場合のみ成功
                                          • invalid なDIDは常に失敗

                                          既存のコードとの互換性を保つため、デフォルトでIdentityを選択します。

                                          Equations
                                          Instances For

                                            DIDがValidDIDDocumentから正しく生成されたかを検証(目的指定版)

                                            パラメータ:

                                            • did: 検証対象のDID
                                            • doc: ValidDIDDocument
                                            • purpose: 期待されるDIDの使用目的

                                            検証:

                                            • did が valid で、fromValidDocumentWithPurpose doc purpose と等しい場合のみ成功
                                            • invalid なDIDは常に失敗
                                            Equations
                                            Instances For

                                              正規のDID-DIDドキュメントのペア(デフォルト: Identity)

                                              HolderがVerifierに提示するペアは、この述語を満たす必要がある。 正規のペアは、DIDがValidDIDDocumentから正しく生成されたものである。 既存のコードとの互換性を保つため、デフォルトでIdentityを選択します。

                                              Equations
                                              Instances For

                                                不正なDID-DIDドキュメントのペア(デフォルト: Identity)

                                                以下のいずれかの場合、ペアは不正である:

                                                1. DIDとValidDIDDocumentが一致しない
                                                2. InValidDIDDocumentから生成されたDID
                                                Equations
                                                Instances For

                                                  正規のDID-DIDドキュメントのペア(目的指定版)

                                                  HolderがVerifierに提示するペアは、この述語を満たす必要がある。 正規のペアは、DIDがValidDIDDocumentから正しく生成されたものであり、 purposeが一致しているものである。

                                                  Equations
                                                  Instances For

                                                    不正なDID-DIDドキュメントのペア(目的指定版)

                                                    以下のいずれかの場合、ペアは不正である:

                                                    1. DIDとValidDIDDocumentが一致しない
                                                    2. InValidDIDDocumentから生成されたDID
                                                    3. purposeが期待値と異なる
                                                    Equations
                                                    Instances For

                                                      Theorem: 不正なペアは検証に失敗する

                                                      HolderがVerifierに不正な(did, doc)ペアを提示した場合、 isValid did doc = Falseとなり、検証は失敗する。

                                                      Theorem: 検証成功は正規性を保証する

                                                      isValid did doc = Trueならば、(did, doc)は正規のペアである。 これは定義から自明だが、明示的に定理として示す。

                                                      theorem UnknownDID.verifier_rejects_invalid_pair (did : UnknownDID) (doc : ValidDIDDocument) :
                                                      ¬did.isValid doc (verificationFailed : Bool), verificationFailed = true

                                                      Theorem: Verifierは不正なペアを受け入れない(健全性)

                                                      Verifierが(did, doc)ペアを受け取った時、 isValid did doc = Falseならば、検証は失敗する。

                                                      これは、不正なHolderや攻撃者が偽のペアを提示しても 受け入れられないことを保証する。