自堕落な技術者の日記 : OATH関連でごにょごにょと、、、 - livedoor Blog(ブログ)


サンプルのトークンの鍵群コンテナから共通鍵は取り出せて、MACも一致したので、まぁ、、、大丈夫なのかな、、、と、、、、

取り出し方は2フェーズで

(1)別途提供される鍵群コンテナ全体のAES256bit共通鍵とイニシャルベクタ(IV)で復号して、トークンの共通鍵を取り出す。その際、アルゴリズムは"AES256-CBC"とだけ示されてるんですが、Java JCEのアルゴリズムを指定する際、"AES/CBC/NoPadding"じゃダメで"AES/CBC/PKCS5Padding"でなければいけませんでした。これは、RSA BSAFE ShareでもBouncyCastleでも同じ事、、、、

(2)取り出したトークンの共通鍵が正しく復号されているかどうか、指定されているMACで一致確認を行う。平文のトークン共通鍵に対して鍵群全コンテナ全体の秘密鍵を用い"HMAC-SHA1"でMAC値を得て、これが記載内容と合致すれば正しく復号できていることになる。JCEアルゴリズム名はBouncyCastleでは"Hmac-SHA1"だがRSA BSAFE Shareではこれではダメで"HmacSHA1"である。

というわけで、トークン個別の共通鍵は無事取り出せました。にょほほ、、、

【今日の愚痴というか提言(−−;】
幾つかのJCEプロバイダを触ってみてJCEアルゴリズム名が実装によって微妙に違うのは止めにして欲しい。ちょっと名前が違うだけでエラーになっちゃいます(T_T)これは是非標準化をお願いしたいところです。実装によってはaliasを使ってHmac-SHA1==HmacSHA1==HMACwithSHA1みたいにしているものもあるんですが、実装によって完全に同じではありません。私は正規化された名称が一つあればそれで十分だと思います。
例えば
- AES (= Rijndael) これはまぁ、わかるんだけど
- RC4 (= ARC4 = ArcFour) これは同じだとは全く気づかなかった

次はオクラ関数だな(謎)