都立工業高等専門学校(現、東京都立産業技術高等専門学校)を卒業、
機械工学が専攻だった癖に論理回路やオーディオ関係の技術者らしい。
趣味として、音楽関係のフリーソフト開発や、DTM・チップチューン活動をしたり、
オーケストラや吹奏楽団でオーボエを吹いてる人。
上のアドレスの『@』と『nifty』の間に『spa.』を追加して下さい。
画像で記載されているアドレスでも届きますが、スパム防止のフィルターを多数導入しています。
本ホームページはリンクフリーです。
リンクは、トップページ
"http://shaw.la.coocan.jp/"
にお願いいたします。
Top Page\ Security Top\ Algorithm\
CMSでサポートされる鍵管理アルゴリズムについて示す。
封筒化データ(Enveloped-data)タイプ及び、AuthenticatedDataタイプの のRecipientInfo Type (受取人情報)において、 KeyTransRecipientInfoを選択した場合に使用可能な鍵管理アルゴリズムを示す。
CMSでは、RSA (PKCS #1 v1.5)を使った鍵配送アルゴリズムが定義される。
RSA暗号による鍵配送の詳細は、"RFC 2313 [PKCS#1]"を参照。
parametersは、NULLを含めなければならない。
parameters ::= NULL
Triple-DESの鍵を使う場合、
RSA暗号化に先立って、Triple-DES鍵で構成しているそれぞれのDES鍵の為、パリティビットを適合させなければならない。
封筒化データ(Enveloped-data)タイプ及び、AuthenticatedDataタイプの のRecipientInfo Type (受取人情報)において、 KeyAgreeRecipientInfoを選択した場合に使用可能な鍵管理アルゴリズムを示す。
鍵合意アルゴリズムを使用する場合、更に鍵暗号化アルゴリズムも必要になる。
したがって、鍵合意には、それぞれのコンテンツ暗号用のアルゴリズムに対して、
鍵暗号化のアルゴリズムが定義されている必要がある。
Triple-DES及びRC2の共通鍵をラップするためのアルゴリズムは、"RFC 3217 [WRAP]"で定義される。
Ephemeral-Static Diffie-Hellmanによる鍵管理の詳細は、"RFC 2631 [DH-X9.42]"を参照。
このアルゴリズムを使う場合は、KeyAgreeRecipientInfoフィールドは以下の通りにしなければならない。
Versionは、3としなければならない。
originatorは、
originatorKeyを選択しなければならない。
その際、algorithmは、以下のdh-public-numberのoidとしなけばならない。
ukmは、有っても無くても良いが、存在する場合は、
短期間の秘密鍵が一回以上使用される場合において、違う鍵暗号化用の鍵が生成される事を確実にする為に使われなければならない。
keyEncryptionAlgorithmは、以下のid-alg-ESDHのoidとしなければならない。
parametersは、共通鍵(データ暗号用)を暗号化する為に使われた共通鍵暗号アルゴリズムを示す。
(鍵暗号化用の鍵は、鍵管理アルゴリズム"ESDH"を使って生成したペアの鍵暗号化用の鍵)
parameters ::= AlgorithmIdentifier
recipientEncryptedKeysの
KeyAgreeRecipientIdentifierは、以下の何れかを格納しなければならない。
両方のケースにおいて受取人の公開鍵証明書には、静的な受取人の公開鍵を含む。
・受取人の公開鍵証明書を識別するissuerAndSerialNumber。
・受取人の公開鍵証明書を識別する主体鍵が含まれたRecipientKeyIdentifier。
recipientEncryptedKeysのEncryptedKeyは、
ESDHが生成したペアの鍵暗号用の鍵(parametersで指定された鍵暗号用のアルゴリズムで使われた)で、
暗号化されたコンテンツ暗号化用の共通鍵を含まなければならない。
Static-Static Diffie-Hellmanによる鍵管理の詳細は、"RFC 2631 [DH-X9.42]"を参照。
このアルゴリズムを使う場合は、KeyAgreeRecipientInfoフィールドは以下の通りにしなければならない。
Versionは、3としなければならない。
originatorは、
issuerAndSerialNumberか、
subjectKeyIdentifierを選択しなければならない。
両方のケースにおいて受取人の公開鍵証明書には、静的な送信者の公開鍵を含む。
"RFC 3279 [CERTALGS]"は、作成者の公開鍵証明書に格納されている
AlgorithmIdentifierのparameterの構造と値を定義する。
作成者の公開鍵証明書のsubjectPublicKeyInfoフィールドには、
以下のdh-public-numberオブジェクトを含めなければならない。
ukmは、存在しなければならない。
ukmは、同じ発信者と受信者間のそれぞれメッセージの為に、違う鍵暗号化用の鍵が生成される事を確実にする。
keyEncryptionAlgorithmは、以下のid-alg-SSDHのoidとしなければならない。
parametersは、共通鍵(データ暗号用)を暗号化する為に使われた共通鍵暗号アルゴリズムを示す。
(鍵暗号化用の鍵は、鍵管理アルゴリズム"SSDH"を使って生成したペアの鍵暗号化用の鍵)
parameters ::= AlgorithmIdentifier
recipientEncryptedKeysの
KeyAgreeRecipientIdentifierは、以下の何れかを格納しなければならない。
両方のケースにおいて受取人の公開鍵証明書には、静的な受取人の公開鍵を含む。
・受取人の公開鍵証明書を識別するissuerAndSerialNumber。
・受取人の公開鍵証明書を識別する主体鍵が含まれたRecipientKeyIdentifier。
recipientEncryptedKeysのEncryptedKeyは、
SSDHが生成したペアの鍵暗号用の鍵(parametersで指定された鍵暗号用のアルゴリズムで使われた)で、
暗号化された、コンテンツ暗号化用の共通鍵を含まなければならない。
封筒化データ(Enveloped-data)タイプ及び、AuthenticatedDataタイプの のRecipientInfo Type (受取人情報)において、 KEKRecipientInfoを選択した場合に使用可能な鍵管理アルゴリズムを示す。
CMSでは、Triple-DES, RC2用の鍵暗号化の鍵を用いる、共通鍵暗号化鍵アルゴリズムが定義される。
RC2暗号をサポートする場合、RC2の128bitの共通鍵は鍵暗号化用の鍵の様に使われ
RC2ParameterVersionのparameterは58と設定する。
CMS手法は、ミックスされた鍵暗号化とコンテンツ暗号化のアルゴリズムをサポートする。
例えば、コンテンツ暗号化用の40bitのRC2鍵は、
168-bitのTriple-DESの鍵暗号化用の鍵か、128-bitのRC2の鍵暗号化用の鍵でラップされる。
鍵合意アルゴリズムの出力は鍵暗号化用の鍵で、この鍵はコンテンツ暗号化用の鍵を暗号化する為に使われる。
鍵合意をサポートする為に、鍵ラップ・アルゴリズムの認証は、
封筒化データ(Enveloped-data)タイプ及び、AuthenticatedDataタイプの
RecipientInfos
KeyAgreeRecipientInfo
keyEncryptionAlgorithmフィールドに格納されるが、
本質的にアクセス資格認証で提供される鍵合意アルゴリズムは、AuthenticatedDataだけで使われるべきである。
ラップされたコンテンツ暗号化用の鍵は、
EnvelopedData
RecipientInfos
KeyAgreeRecipientInfo
RecipientEncryptedKeys
encryptedKey
フィールドに格納され、
ラップされたメッセージ・アクセス資格認証用の鍵は、
AuthenticatedData
RecipientInfos
KeyAgreeRecipientInfo
RecipientEncryptedKeys
encryptedKey
フィールドに格納される。
parameters ::= NULL
Triple-DESのコンテンツ暗号化用の共通鍵を、Triple-DES鍵暗号化用の鍵で暗号化する為に使うアルゴリズムは、" RFC 3217 [WRAP]"の3.1項を参照。
parameters ::= RC2ParameterVersion
RC2ParameterVersion ::= INTEGER
RC2のコンテンツ暗号化用の共通鍵を、RC2鍵暗号化用の鍵で暗号化する為に使うアルゴリズムは、" RFC 3217 [WRAP]"の4.1項を参照。
封筒化データ(Enveloped-data)タイプ及び、AuthenticatedDataタイプの のRecipientInfo Type (受取人情報)において、 PasswordRecipientinfoを選択した場合に使用可能な鍵管理アルゴリズムを示す。
鍵導出アルゴリズムは、パスワードによる鍵管理手法で使われ、パスワードを鍵暗号化用の鍵に変換する為に使われる。
パスワードから導き出された鍵暗号化用の鍵(KEK)は、コンテンツ暗号化用の鍵(CEK)を暗号化する為に使われる。
暗号化(パスワードから導き出された鍵暗号化用の鍵で)されたコンテンツ暗号化用の鍵は、
EnvelopedData
RecipientInfos
PasswordRecipientInfo
encryptedKeyに格納される。
暗号化(パスワードから導き出された鍵暗号化用の鍵で)されたメッセージ・アクセス資格認証用の鍵は、
AuthenticatedData
RecipientInfos
PasswordRecipientInfo
encryptedKeyに格納される。
鍵導出アルゴリズムでは、以下に示す2つのアルゴリズムを指定する。
パスワードから鍵暗号化用の鍵"KEK"を導出するアルゴリズム。
コンテンツ用の暗号鍵CEK(乱数から生成される)を暗号化する暗号アルゴリズム。
鍵は、鍵導出関数でパスワードから導出した鍵を使用する。