64ビット値を対称的に暗号化する方法は?

次のシナリオに適したアルゴリズムに興味があります:

  1. 32ビットの「プレーンテキスト」カウンターから取得した入力
  2. 32ビットまたは64ビットの「暗号文」出力
  3. キー(および場合によっては他のいくつかの非表示パラメーターなど)を使用して出力を復号化できる必要があります。オフセットと現在のカウンター)、元の32ビットカウンター値を返します
  4. ユーザーは入力を監視することはありませんが、任意の数の出力を受信する可能性があります。それでも、受信できないはずです。
  5. 有効なカウンタ値に対応する他の出力を推測するのは難しいはずです。

私の訓練されていない直感は、キーと出力が入力スペースよりも大きい場合、少なくとも最初のいくつかの出力では、「良好な」結果を得るのはかなり簡単です。ただし、十分なサンプルがあれば、キーとインデックスを簡単に計算できることも論理的ですが、ほとんどの場合、 lを使用するには100未満の値。

私の質問は次のとおりです。

  1. このシナリオで機能する既存のアルゴリズムはありますか?
  2. どのくらい難しいですか?亀裂?つまり、有効なインデックスに復号化する値を計算します。
  3. より多くのサンプルを所有すると、クラッキングの効率にどの程度影響しますか?
  4. 単純なアプローチの何が問題になっていますか?例:

    u64 output = input repeat 64x output = ((output ^ key) + key) rotate-left 37 

    加算が64ビット整数境界をラップすると仮定します。ランダムキーを単一の入力と完全に混合するように見えますが、複数の入力があります。方法はわかりませんが、出力によって攻撃者が所有する情報がすぐに増える可能性があります。明らかにそれは壊れそうです、私はただ学ぼうとしています。

  5. (((key & 0xFFFE)+1) * 37)良くなりますか?それはどの程度役立ちますか、またその理由は何ですか?
  6. アルゴリズムの分析とより良いアルゴリズムの設計の両方にどのようなアプローチ、リソースなどを使用しますか?

コメント

  • これは、説明の仕方では非常にXYの問題です。 CSPRNG(Sに注意)は'これに対する良い解決策ではないようです。キーサイズの要求は少し奇妙ですが、なぜ大きなキーサイズを使用できないのですか?
  • キーサイズは必須ではないと思います。 32ビット値を暗号化するには64ビットキーで十分だと思っていました。

回答

  1. このシナリオで機能する既存のアルゴリズムはありますか?

はい、実際には、64ビットのブロック暗号がいくつかあります。標準的なブロック暗号モードは、誕生日の境界(この場合は約30 Gバイト)に近づくと情報の漏洩を開始する傾向があるため、標準的な知恵では一般的な使用は推奨されていません。ただし、使用例ではそうはなりません。懸念事項です。

いくつかのオプションがあります。

  • 3DES(別名TDES)。これは、3つの異なるキーで3回適用されるDESです。これには利点があります。

  • スペックには64ビットのブロック暗号を使用したパラメータセットがあります。最速の代替手段であるという利点があり、「実行していることを知っている人々によって設計され、驚くほどの量の暗号分析を実行しました。

  • FPE暗号(任意のブロックサイズ(64ビットを含む)を処理できるFF1。これには、微調整のオプションが許可されるという利点があります(これは、「その他の非表示パラメーター」を配置するのに便利な場所です。 )。それは代替案よりも遅い。 FF1では、セキュリティはAESの基礎となるセキュリティに加えて、Feistel構造の証明可能なセキュリティからもたらされます。

現在、これらは64ビットより長いキーを取ります。一般的な知恵は、64ビットキーは十分な長さではないということです。

  1. クラックするのはどれくらい難しいでしょうか?つまり、有効なインデックスに復号化する値を計算します。

上記のいずれの場合でも、攻撃者が実行できる唯一の実用的なオプションは次のとおりです。暗号文をランダムに推測し、有効なインデックスに復号化する暗号文に出くわすことを望んでいます。

  1. より多くのサンプルがそれをクラックする効率に影響を与えますか?

上記のいずれの場合でも、大量のサンプルがあると、攻撃は実行不可能になります。

  1. 次のような素朴なアプローチの何が問題になっていますか…

ARX暗号(実際には、任意の暗号、特にARX)を正しく理解するのは難しいです。特に、ARX暗号は、微分特性と線形特性を破壊するのに優れていない傾向があります(つまり、デザインは、それが確実に行われるように、十分に研究する必要があります)。

  1. アルゴリズムの分析とより良いアルゴリズムの設計の両方に使用するアプローチ、リソースなどは何ですか?

すでに分析されているデザインを使用することをお勧めします。上記の3つをリストします。

コメント

  • I '比較的小さなキー入力の変更がある場合、たとえば3DESよりもBlowfishを優先します。3DESのセキュリティはキーが128ビット(もちろん112ビット)に拡張されたとしても疑わしいです。
  • @MaartenBodewes:3DESを表示している人の引用はありますか?不明なキーはランダムな偶数の並べ替えと区別できますか?
  • いいえ、もちろん違います。ただし、'暗号化に〜が含まれている場合は、理由を説明する必要はありません。 128ビットまたは192ビットのキーを供給した場合の80ビットまたは〜112ビットの強度(I 'そうできることは間違いありませんが、すべてのポンチョではありません)。そして、キーのサイズは問題の問題のようです。その場合、パリティビットを破棄するだけでは無駄です。
  • ステートメント"について詳しく説明してください。これらは64ビットより長いキーを使用します。一般的な知恵は、64ビットキーは十分な長さではないということです。"?どのアルゴリズムがどの長さのキーを必要とし、64ビットキーは正確には何に対して十分な長さではありませんか?
  • @shader:64ビットのみのキーは、大規模な(十分な資金のある)敵からのブルートフォース検索に対して脆弱です。 '誰に対しても脆弱ではない、やや大きなキー(128ビットなど)を使用するのは一般的に簡単であるため、通常はより安全なオプションを選択します(' NSAが私たちを攻撃することに関心があるかどうか、またはAmazonがクラウド全体を私たちに捧げることを決定するかどうかをすぐに心配する必要はありません…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です