Open10
公開鍵の継続使用による信用醸成プロトコル - scrap
ContentType
- data (MUST)
- signed-data (MUST)
- enveloped-data (MUST)
- digested-data (MAY)
- encrypted-data (MAY)
- authenticated-data (MAY)
ASN.1 definitions
id-ct-contentInfo
1.2.840.113549.1.9.16.1.6
id-ct-contentInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) ct(1) 6 }
ContentInfo
ContentInfo ::= SEQUENCE {
contentType ContentType,
content [0] EXPLICIT ANY DEFINED BY contentType }
ContentType ::= OBJECT IDENTIFIER
Data
1.2.840.113549.1.7.1
id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 }
Signed-data
1.2.840.113549.1.7.2
id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
SignedData ::= SEQUENCE {
version CMSVersion,
digestAlgorithms DigestAlgorithmIdentifiers,
encapContentInfo EncapsulatedContentInfo,
certificates [0] IMPLICIT CertificateSet OPTIONAL,
crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
signerInfos SignerInfos }
DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
SignerInfos ::= SET OF SignerInfo
Signed-data
作成概要:
- コンテンツのメッセージダイジェストを算出
- 秘密鍵を用いて電子署名
- SignerInfoに署名値と署名者を記録する
- SignedDataにSignerInfoを記録
検証概要:
- コンテンツのメッセージダイジェストを算出
- ダイジェストと署名者の公開鍵を使用して署名を検証
- 発行者識別名と発行シリアル番号を使用して証明書を特定
- サブジェクトキー識別子を使用して証明書を特定
- SignedDataの証明書フィールドから取得
OpenPGP電子署名
RFC 4880 5.2. Signature Packet (Tag 2) で署名仕様が定められている。
JSON Web Signature (JWS)
RFC 7515 で署名仕様が定められている。
XML署名
W3C XML Signature Syntax and Processing Version 1.1 で署名仕様が定められている。
PDF署名
ISO 32000-1 12.8 Digital Signatures で仕様が定められている。
参考
import pdfreader
fp = open("signed.pdf", "rb")
doc = pdfreader.PDFDocument(fp)
catalog = doc.obj_by_ref(doc.trailer.root)
# Signature dictionary (see Table 252 in 12.8.2)
sig = catalog["AcroForm"]["Fields"][0]["V"]
C2PA - Coalition for Content Provenance and Authenticity