次の情報があるとします。
BLOCK A : 8374928304
BLOCK B : 7719
Result : 239
結果はこれら 2 つのブロックから生成されますが、アルゴリズムは不明です。しかし、私はいくつかのblock
&result
ペアを持っています。これらの 2 つのブロックからどのように結果が生成されるかを調べるにはどうすればよいでしょうか?
次の情報があるとします。
BLOCK A : 8374928304
BLOCK B : 7719
Result : 239
結果はこれら 2 つのブロックから生成されますが、アルゴリズムは不明です。しかし、私はいくつかのblock
&result
ペアを持っています。これらの 2 つのブロックからどのように結果が生成されるかを調べるにはどうすればよいでしょうか?
あなたの成功は、暗号/ハッシュスキームを作成したエンティティの洗練度に大きく依存します。特定の入力から特定の出力を生成するために無限の数のメソッドを使用できるため、ハッシュスキームを正しく識別するためにいくつかの入力/出力ペアのみを使用することは、原則として非常に困難です。
ハッシュ スキームを発見する唯一のチャンスは、ハッシュ スキームがあまり洗練されておらず、それが何であるかを推測できることです。ハッシュ作成者があまり洗練されていないと思われる場合は、次の非常に基本的なハッシュスキームを試してみてください。
ただし、後で説明するように、単純な方法を試して検証するには、おそらく自分で行うよりも多くの時間がかかります。例として、ハッシュ スキームは次のようになると仮定できます。
ブロック A をブロック B で変更し、6040 を減算します。
これは上記の場合に機能しますが、他の値では機能しないと強く思います。次に、次を試すことができます。
ブロック A を取り、それをブロック B+1 で変更し、1865 を減算します。
これは上記の値でも機能しますが、すぐに我慢できなくなります。したがって、攻撃者がどのような種類のハッシュ スキームを選択したかについての理論がなければ、これを解決するのは非常に困難な問題です。
暗号化の目的は、アルゴリズムを知らない、またはアルゴリズムを使用してデータを復号化する方法に関する特定の情報を知らない攻撃者からデータを隠すことです (たとえば、公開/秘密キー暗号化では、アルゴリズムはよく知られていますが、秘密鍵は明らかにそうではありません)。アルゴリズムを知らなくてもリバース エンジニアリングできる場合、そのアルゴリズムはあまり安全ではありません。したがって、適切に設計された暗号化アルゴリズムを扱っている場合、求めていることを実行することは統計的に不可能です。