ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

手作りネットプロトコル工房コミュのSerpent って バグない?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
AESファイナリストの暗号アルゴリズムに Serpentというアルゴリズムがあります。

暗号大全の著者として非常に有名なブルースシュナイアーが開発したTwofish(第3位)の圧倒的な存在感によって、Serpentは知る人ぞ知る無冠の帝王の様な感がありますが、実はSerpent、第一位になったRejndaelよりも暗号強度は高いんだそうで、使ってみようと思いました。 しかし...



暗号アルゴリズム実装の正しさを確認するために Known Answer Test というのがあり、これと値の比較をする事でデバッグをするようになっているのですが、これが実装によって全然一致しないのです。無名過ぎて誰もチェックしていないせいなんでしょうか。

この違いっていうのがまた微妙で、GNU CRYPT と BoucyCastleの間では値が一致するのです。 しかし、Serpentのホームページからダウンロードしたアルゴリズムとは、何故か値が一致しないのです。

ところが、このSerpentのホームページのアルゴリズムを、NISTが公式に発表している Known Answer Test ドライバにかけると、GNU CRYPT/BouncyCastleと 値が一致するのです。

しかも奇妙なことに、この正式版、更に鍵長を倍にして key[ keylength ] = 0x10 とした暗号化結果とKnown Answer Test 値が一致します。 この動作は、僕が最近ある場所で拾ってきたSerpentのJavaScript実装でも再現します。

どこかに、ウソが隠れているのは間違いないんですが...。 犯人は誰なのか...。

犯人予想

GNU-CRYPT が間違っており、BouncyCastleが 値検証に GNU-CRYPTを使った
BouncyCastleが間違っており、GNU-CRYPTが 値検証に GNU-CRYPTを使った
GNU-CRYPTもBouncyCastleも正しい。 Serpentのホームページにある実装にバグがある。→じゃ本物はどこに?
NISTのKATにバグがあって、Serpentとの干渉によって不具合が発生する → バグ改正版はどこに?

わからない...。

コメント(11)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

手作りネットプロトコル工房 更新情報

手作りネットプロトコル工房のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング