proof/proofPurpose
proofとは、証明のデータの中に書き足される、署名とその確かめ方の情報をまとめた項目のことです。proofPurposeは、その署名が何のために作られたかを示す値です。
別表記:proof/proofPurpose/証明の署名/署名の目的
proofには何が書かれるのか
署名の種類(type)と、署名を作った目的は必ず書きます。種類として汎用の形(DataIntegrityProof)を使う場合は、使った計算方式の名前(cryptosuite)と署名の値(proofValue)も必要です。ほかに、確かめるときに使う鍵のありか(verificationMethod)、作成日時、有効期限などを書く項目があります。
proofPurposeは何を防ぐのか
ある目的のために作られた署名が、別の目的に流用されるのを防ぎます。たとえば、証明の発行に使う鍵が、ログインの手続きに使われてしまう場合です。よく使われる値は5つあり、証明の発行のような主張のためのもの(assertionMethod)、ログインなどの手続きのためのもの(authentication)などがあります。
確かめる側は、署名に使われた鍵が、署名した側の識別子にひもづく情報(controlled identifier document)の中で、その目的に使ってよい鍵として登録されているかを確かめます。一致しなければ、誤りとして扱われます。
署名は1つだけなのか
1つのデータに複数の署名を置けます。順番を問わない並べ方(proof set)と、前の署名を指し示して順番を保つ並べ方(proof chain)の2通りがあります。前者は契約書に複数人が署名する場合、後者は公証人が後から署名を重ねる場合にあたります。
