HC-256は、セキュリティに対する高い信頼性を保ちながら、ソフトウェアによる高速大量暗号化を実現するように設計されたストリーム暗号です。 [ 1 ] 128ビットの変種がeSTREAM暗号候補として提出され、ソフトウェアプロファイルの最終候補4つのうちの1つに選ばれました。[ 2 ] [ 3 ]
このアルゴリズムは Hongjun Wu によって設計され、2004 年に初めて公開されました。特許は取得されていません。
関数
HC-256は256ビットの鍵と256ビットの初期化ベクトル(ノンス)を持つ。[ 1 ]
内部的には、2つの秘密テーブル(PとQ)で構成されています。各テーブルには1024個の32ビットワードが含まれています。状態更新ごとに、各テーブル内の1つの32ビットワードが非線形更新関数を用いて更新されます。2048ステップ後には、テーブルのすべての要素が更新されます。
Blowfish暗号の出力関数に類似した32ビットから32ビットへのマッピング関数を用いて、更新ステップごとに1つの32ビットワードを生成します。最後に、線形ビットマスク関数を適用して出力ワードを生成します。内部的にはハッシュ関数SHA-256の2つのメッセージスケジュール関数を使用しますが、テーブルPとQはSボックスとして使用されます。
HC-128は機能的に似ており、キーの長さ、ノンス、テーブルPとQのワード数、テーブル更新ステップ数をそれぞれ半分に削減します。[ 2 ]
パフォーマンス
HC-256の性能は、Pentium 4プロセッサ上で1バイトあたり約4サイクルと作者によって推定されています。しかし、暗号の初期化フェーズでは、256ビットの鍵をテーブルPとQに展開し、その後4096ステップの暗号処理を実行する必要があります。HC-256の作者は、この処理に約74,000サイクルかかると見積もっています。
HC-128 の場合、 Pentium Mプロセッサ上で 1 バイトあたり約 3 サイクルの暗号化速度が挙げられます。
HC-128の様々なコンピューティング構造への実装が詳細に研究され、単純なソフトウェア実装に比べて大幅なパフォーマンス向上が見られました。[ 4 ] [ 5 ]
参考文献
- ^ a b Wu, Hongjun (2004). 「新しいストリーム暗号 HC-256」(PDF) .高速ソフトウェア暗号化. コンピュータサイエンス講義ノート. 第3017巻. pp. 226– 244. doi : 10.1007/978-3-540-25937-4_15 . ISBN 978-3-540-22171-5。
- ^ a b Wu, Hongjun (2008). 「ストリーム暗号 HC-128」(PDF) .新しいストリーム暗号の設計. コンピュータサイエンス講義ノート. 第4986巻. pp. 39– 47. doi : 10.1007/978-3-540-68351-3_4 . ISBN 978-3-540-68350-6. 2008年7月24日時点のオリジナル(PDF)からアーカイブ。
- ^ 「eSTREAMプロジェクト」 。 2017年2月13日時点のオリジナルよりアーカイブ。2010年11月15日閲覧。
- ^ Chattopadhyay, Anupam; Khalid, Ayesha; Maitra, Subhamoy; Raizada, Shashwat (2012). 「ストリーム暗号HC-128向け高スループットハードウェアアクセラレータの設計」2012 IEEE International Symposium on Circuits and Systems . pp. 1448– 1451. doi : 10.1109/ISCAS.2012.6271518 . ISBN 978-1-4673-0219-7. S2CID 5520516 .
- ^ Khalid, Ayesha; Bagchi, Deblin; Paul, Goutam; Chattopadhyay, Anupam (2013). 「HCシリーズのストリーム暗号の最適化されたGPU実装とパフォーマンス分析」.情報セキュリティと暗号学 – ICISC 2012.コンピュータサイエンス講義ノート. 第7839巻. pp. 293– 308. doi : 10.1007/978-3-642-37682-5_21 . ISBN 978-3-642-37681-8。
外部リンク
- HC-256のeSTREAMページ( 2006年6月23日アーカイブ、 Wayback Machine)