PBMAC
PBMAC1
RFC 8018 PKCS #5
https://tex2e.github.io/rfc-translater/html/rfc8018.html
PBKDF2(などKDF)とMACの組み合わせ
詳細な動作はPBKDF2に依存
パスワードでHMACを使えるようにする
RFC 7292 PKCS #12
RFC 9879 Use of Password-Based Message Authentication Code 1 (PBMAC1) in PKCS #12 Syntax
https://www.rfc-editor.org/rfc/rfc9879.html
https://tex2e.github.io/rfc-translater/html/rfc9879.html
BMPString から UTF8String に変更
RFC 9579 Use of Password-Based Message Authentication Code 1 (PBMAC1) in PKCS #12 Syntax→ 9879
CRMFにもある?
RFC 8018 A.5. PBMAC1
code:id-PBMAC1
rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) 113549}
pkcs OBJECT IDENTIFIER ::= {rsadsi 1}
pkcs-5 OBJECT IDENTIFIER ::= {pkcs 5}
id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14}
PBMAC1-params ::= SEQUENCE {
keyDerivationFunc AlgorithmIdentifier {{PBMAC1-KDFs}},
messageAuthScheme AlgorithmIdentifier {{PBMAC1-MACs}} }
PBMAC1-KDFs ALGORITHM-IDENTIFIER ::=
{ {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }
PBMAC1-MACs ALGORITHM-IDENTIFIER ::= { ... }
PKCS #8 などASN.1な形式に組み込むものかな
KDF keyDerivationFunc PBKDF2
S salt
c iterationCount 反復回数
dkLen keyLength 出力サイズ
PRF prf 擬似ランダム関数 HMAC-SHA1など
MAC messageAuthScheme HMACなど2
P password
出力
DK 派生鍵
T メッセージ認証コード
DK = KDF(P, S, c, dkLen) PRFのHMACなどを使う
T = MAC(M, DK)
CRMFのPBKDF (名前はない)
出力サイズはHMACのサイズで固定
入力
pw パスワード
data MAC対象
iter 反復回数
PBMParameter
salt OCTET STRING
owf AlgorithmIdentifier 鍵の計算に利用されるアルゴリズム
iterationCount INTEGER ハッシュ適用回数 最低 100 から1000 は必要
mac AlgorithmIdentifier HMAC-SHA1 必須 その他MAC
出力
ソルト値 S の生成
S
ソルトを pw に追加
K = pw || salt
ハッシュ化 (反復回数+1回ぐらいの繰り返し)
K = Hash(K)
HMACの計算
MAC = HASH(K XOR opad, HASH(K XOR ipad, data)) (HMACの中はこんなかんじ)