暗号データ形式

鍵情報の交換

暗号処理を行う場合,鍵情報の読み書きを行う必要がある.すなわち,鍵情報をファイルに格納したり,ファイルから読み込む,あるいは通信を介して外部システムに鍵情報を転送したりする必要がある. このとき,鍵情報の形式を考える必要がある.

鍵情報には,次のような形式が用いられている.

上記の鍵情報をエンコードする代表的な方法に次のものがある.

ASN.1 (BER/DER)

オブジェクト識別子

公開鍵基盤(PKI)で利用する暗号アルゴリズムや公開鍵証明書内に格納する名前(subject)のタイプ(Country名やCommonNameなどの属性)は,オブジェクト識別子(OBJECT IDENTIFIER)として登録されたものが利用される. オブジェクト識別子は世界中で唯一に特定可能なものとして,登録機関により管理されている.

例えば,ハッシュアルゴリズムのSHA-1は,

 id-SHA1 OBJECT IDENTIFIER ::=
 {iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26}

のように定義されており,この値の並び {1, 3, 14, 3, 2, 26} がオブジェクト識別子である.

Base64

Base64は,MIME RFC(RFC 2045)で定義された任意のオクテット値を65文字の英数字に符号化する方式である. Base64エンコード方式は人間が可読でない任意のオクテット列を表現するためにデザインされている.65文字のUS-ASCIIのサブセット([A-Za-z0-9+/=])が使われ,1つの表示可能な文字に6ビットが割り当てられる. 暗号化された不可視文字データを含むデータをメール等で転送する際に,可視文字に変換するためなどに利用される.

オクテット値3つ(8ビット×3 = 24ビット)を4文字(6ビット×4)で表現する.そのため,データ量は3分の4倍,33%増加することになる. Base64は6ビット単位であるが,オクテット列の長さと必ずしも一致する(6と8の公倍数の長さになる)とは限らないので,``=''を最後に付加(パディング)して調節される.この結果,Base64エンコードデータは必ず4の整数倍の長さになる.

Base64エンコードデータは,MIMEの制限上,一行当り76文字以下でなければならない. 区切りの改行文字列CRLFは,復号の時には無視される(これ以外でも,未定義の文字が現れたら無視される).

データ型の変換

暗号関数の実装においては,各種データの表現形式の変換処理が必要になる.暗号パラメータや暗号処理結果などを外部とやり取りする場合は,これらのデータ形式が一致していることが必要である.

以下の変換処理が定義されている.

なお,これらの変換は一般に暗号ライブラリが吸収しており,アプリケーションプログラムが意識する必要は通常ない.

inserted by FC2 system