質問

非常に高速な1対1アルゴリズムが必要です。アルゴリズムは壊れない必要はありません。適度に強いだけで十分ですが、超高速でなければなりません。ハードウェアで実装します。面積も懸念事項であるため、あまりロジックを使用しないでください。

入力がNビット数で、出力がNビット数である関数f_N(x)でなければなりません。 Nはおそらく20〜70の定数です。関数は1対1でなければなりません。 (つまり、可逆、つまり復号化が可能です。復号化の速度は無関係です。)

3ns未満で暗号化する必要があります。これは1秒あたり約333M入力です。たとえば、DESは毎秒約50Mビットを実行します。 1秒あたり333Mの入力が必要です。

これまで、約6ラウンドのFeistel暗号を使用してきました。それには約3nsかかるようです。

提案?

その他のメモ

いくつかの質問があったので、説明します。ハッシュテーブルにキーを配置する必要があります。標準的な方法は、入力キーをハッシュし、結果をテーブルへのインデックスとして使用することです。テーブルの各行には、元のキーを格納する必要があります。 情報理論は、テーブルの行が実際に幅と同じである必要はないことを示しています入力キーですが、入力キーと同じ幅で、テーブルのアドレスのビット数が少ない。例:

  • 入力:x(Nビット)
  • ハッシュ:x%128(8ビット)
  • verifier:floor(x / 128)(N-8ビット)

通常、整数は同じ幅のCPUでは馬鹿げていますが、ハードウェアで実行しています。

x%128は簡単に破れるハッシュです。実際、入力キーが最初の数ビットでのみ異なる場合、偶然にハッシュが壊れています。偶然に壊れず、意図的に破るのが難しいハッシュが必要です。また、 LFSR も試しました。 LFSRは高速ですが、同じ長さの2つのLFSRは、線形に相関するハッシュ結果を生成します。 (f(x)とg(x)が2つの異なる多項式に対して同じハッシュを与える場合、f(x + 1)とg(x + 1)は簡単に相関します。)

したがって、Nビット入力とVビット、Hビット出力(V + H = N)の関数が必要です。両方の関数が同じHを出力するような長さNの2つの入力を見つけるのは困難です。暗号化は、出力を入力と同じ長さのままにし、元に戻すことが難しいという点で、法案に適合します。暗号化以外の機能も動作する可能性がありますが、私が望むのは暗号化の定義そのものです。

このすべてを前もって説明していないのでごめんなさい。これが物事を明確にすることを願っています。

役に立ちましたか?

解決

「速い」と言うときスループットのみに関心がありますか、それともレイテンシ自体が最も重要ですか?

レイテンシーがスループットほど重要でない場合、標準の安全であることが知られているFeistel暗号、および組み合わせロジックからの完全な数のラウンド(たとえば、Blowfishの16)の出力の代わりに、各ラウンドの間にレジスタを貼り付けて、暗号化アルゴリズムをパイプライン処理します?基本的に、既知の安全な暗号化アルゴリズムと同じ量のハードウェア(レジスタにフリップフロップを追加するにはもう少し)が必要になりますが、伝搬遅延はFeistelネットワークの1ラウンドの伝搬遅延+フリップフロップ。

他のヒント

暗号化の強度について心配していなければ、おそらく暗号化する必要はまったくないのではないかと思っています。暗号化アルゴリズムの最も重要な部分は、強度です。暗号化が弱い場合、そもそも暗号化しても何の効果もありません。

いくつかのアルゴリズムを使用したベンチマークを次に示します。 http:/ /gd.tuwien.ac.at/privacy/crypto/libs/cryptlib/benchmarks.html

これらのベンチマークは、アルゴリズムの実装をテストしているため、探しているものではない可能性があることに注意してください。

旧友の小さな暗号化アルゴリズム

をお勧めします

高速で非常に少ないフットプリントであり、おそらくハードウェアに実装する際にも考慮する必要があります。

以下は、1対1機能の要件を満たしていませんが、速度が重要な場合に役立つ可能性があります。 (うまくいかない場合は、分割統治ルートをお勧めします。ハードウェアで作業しているので、理論的には、1つの入力の暗号化が以前の入力の暗号化に依存していない限り、暗号化と復号化を並行して行うことができるはずです。 )

私が「変更」と呼ぶもののための最速のハードウェアアルゴリズムについて入力をビットストリームとして概念的に処理し、暗号的に安全で再構成可能なビットジェネレーターのビットストリーム出力とXORすることです(復号化する場合は再構成可能)。シンプルで非常に高速ですが、それ自体は安全ではない1つの例は、線形フィードバックシフトレジスタ(LFSR)。長い期間(2 128 -1または2 256 -1など)を選択します。ウィキペディアのページでは、セキュリティを強化するための変更を提案しています。また、時々(たとえば、M = 4096、16384、65536など、Mビットごとに1回)、低速だがより安全なビットストリーム(ストリーム暗号またはブロック暗号暗号化)の出力とLFSRの状態のXORを試みることもできます。入力の所定のセット、たとえば、増分シーケンス、またはLFSR状態の遅延スナップショット)-これは、独自の暗号技術ではありませんが、よく知られている暗号技術には大きなものがあるという考えがあります脆弱性があるかどうかのテストに投資したエネルギー量。

64ビットの「キー」を使用した場合の問題各バイトの値とxor-ing?必要な回数だけキーを循環させて、最初の64の後のプレーンテキストビットをxorできます。

64ビットキーは、8文字のパスワードまたはパスフレーズの8バイトのハッシュです。

キーはメッセージとほぼ同じ数のビットを持っているため、実際にはかなり強力で非常に高速です。

これをハードウェアで実行している場合、DSPで標準のブロック暗号を使用しないのはなぜですか?

AESに適したハイエンドDSPアルゴリズム?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top