PBES
PKCS #5 RFC 8018 6. Encryption Schemes パスワードベース暗号化スキーム パスワードとハッシュ関数を使ってブロック暗号のkeyとivを生成、暗号化する 仕組み
PBKDF1を使ったPBES1とPBKDF2を使ったPBES2がある PKCS#5 Padding と言われるのはPBES1のPadding
PBES1
想定されている暗号の組み合わせ
MD5 RC2 CBC
SHA1 RC2 CBC
入力
P パスワード
M メッセージ
ハッシュ関数(MD2,MD5,SHA1)
暗号(DES/RC2)
AlgorithmIdentifier
S SALT 最小? 64bit
c 反復回数
出力
C 暗号文
code:PBES1 Encrypt 暗号化
DK = PBKDF1(P, S, c, 16); // DK 16 オクテットの導出鍵(DK) ハッシュ関数も必要か MD2|MD5|SHA1
//PS = Mを8バイト単位にする1バイトから8バイトのPKCS#5 Padding (略)
EM = M; //+ PS; // PS はスキーム側でつけてもいいか
暗号スキーム = PKCS5Padding(CBC(暗号(K),IV))
C = 暗号スキーム(EM) // Paddingして CBCとDESかRC2かで暗号になり
return C;
OpenSSL の enc 初期設定などで残っている
OpenSSL の RSA鍵などの暗号化の旧形式(traditional)ではPBKDF1を拡張して使われる
PBES2
PBKDF2を使ったブロック暗号
HMAC(SHA256) AES256 CBC など
key と iv を一度に生成できるが iv はパラメータ渡しの場合もある