自堕落な技術者の日記 : 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) これは同じだとは全く気づかなかった
次はオクラ関数だな(謎)
サンプルのトークンの鍵群コンテナから共通鍵は取り出せて、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) これは同じだとは全く気づかなかった
次はオクラ関数だな(謎)
いつも参考になる情報ありがとうございます。
もちろんご存知とは思いますが、RC4はRSA自身の実装で商標もRSA社が持っています。一応まだソースもアルゴリズムも公開はしていないのかな?
ARC4(ArcFour)は勝手にリバースしてオープンソース実装したもので互換性はあるけど商標の問題もあってRC4とは名乗れ無いのでArcFourにしたと聞いています。
と言うことでRSA社のものかどうかで本当は名前が変わってしまうはずです。
私も正確にはARC4しか使ったことがありません(^^;
などと言う歴史を知らなきゃ分からないですよね。