タグ

ブックマーク / hiro99ma.blogspot.com (2)

  • [java]DESede-CBC暗号化

    いろいろとネットの情報を参考にしながら、FeliCa LiteのMAC生成アルゴリズムができた。 そのとき、3DES暗号についてなんとなくわかったので、記録を残しておく。 3DESといってもいくつか細かくあるらしく、FeliCa LiteではCBCという方式を使っている。 これは、前ブロックの3DES計算結果を、次のブロックとxorする方式みたいだ。 それは、IVとか初期ベクタとか呼んでいる。 細かい実装は知らないが、1段目でDESエンコード、2段目でそれをDESデコード、3段目でそれをDESエンコードする。 1, 2, 3段目はそれぞれ別の鍵を用いるのが望ましいらしい(FeliCa Liteでは、1と3が同じ)。 鍵が3つとも同じだと、エンコード→デコード→エンコードとなり、DESエンコード1回分と同じになるという。 DESを3回やって、IVを自分でxorしてみたが、ちゃんと同じ結果にな

    kma83
    kma83 2015/02/23
    FeliCaLitefでトリプルDESのCBCモード暗号化ロジックを実装するメモ。IV(初期ベクタ)の話題も。
  • [java]符号無し演算にはまる

    プロトコル解析するときは、だいたい符号無し1byteで扱っていって、必要があれば符号有りにしたりすると思う。 いつも忘れるのだが、Javaは符号無し、が無い。 "byte"すらも、符号付き1byte型だ。 なんとなく話の方向の想像がついただろうが、まあ書かせておくれ。 C#で書いて動いているFeliCa Lite-Sの相互認証処理を、Androidに移植している。 実装は終わってデバッグしているのだが、どうにもMAC(W)計算が合わない。 半日あれこれ調べたところ、書込カウント値が正しく計算できていないことに気付いた。。 Lite-SからはMACが強化されて、書込カウント値を使うようになった。 これが24bit(3byte)ある。 Read without EncryptionでWCNTレジスタを読込み、その中の3byteを整数変換するだけだ。 C#では、こんな感じで書いている。 int

    kma83
    kma83 2015/02/06
    FeliCa Lite-Sの相互認証まわりのネタ。
  • 1