問題タブ [cryptanalysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encryption - AES256をリバースエンジニアリングすることは可能ですか?
私がこれを持っていると想像してください:
AES_256は、AESアルゴリズムを実装します。
$cdata
の内容と内容を知って$data
いて、コードも持っているAES_256()
場合、リバースエンジニアリングして見つけることはできます$pass
か?
cryptography - 特定の GUID から次の GUID を予測する方法は?
お客様に10000通のメールを送信しましたが、各メールには次の形式のリンクが含まれていました
残念ながら、guid
私が送信したのはランダム GUID (によって生成されたテスト データGuid.NewGuid()
) であったため、顧客はすべて無効なリンクを受け取りました...
Web サーバーから受信した 404 に基づいて、いくつかの GUID を送信しました。Windows の guid ジェネレーターは弱いので、既に持っている guid から次の guid を予測できると読みました。誰も方法を知っていますか?それができれば、送信した GUID を有効にして、リンクが再び機能するようにすることができます。
cryptography - ハッシュ関数に対するマルチコリジョンと1回目または2回目のプレイメージ攻撃の違いは何ですか?
ハッシュ関数でのマルチコリジョンと1番目または2番目のプリイメージの違いは何ですか。
最初の原像攻撃:ハッシュhが与えられた場合、次のようなメッセージmを見つけます。
hash(m)=h。
2番目の原像攻撃:固定メッセージm1が与えられた場合、次のような別のメッセージm2を見つけます。
hash(m2)= hash(m1)。
マルチコリジョン攻撃:一連のメッセージm1、m2、...mNを生成します。
hash(m1)= hash(m2)= ... = hash(mN)。
ウィキペディアによると、原像攻撃は、攻撃されている固定ハッシュまたはメッセージがあるという点で衝突攻撃とは異なります。
私は次のような発言をする論文に混乱しています:
この手法は、衝突を検索するのに効率的であるだけでなく、MD4の2番目のプリイメージを探索するためにも適用できます。2番目の原像攻撃について、彼らは、ランダムメッセージが確率2 ^ –122の弱いメッセージであり、弱いメッセージに対応する2番目の原像を見つけるために1回のMD4計算のみが必要であることを示しました。
著者が言っているように思われることを理解すると、ランダムなメッセージを与えるのに十分な数のメッセージのセットを含むマルチコリジョン攻撃を開発したということです。衝突。
私は多くの論文で同様の議論を見ました。私の質問は、攻撃がマルチコリジョン攻撃でなくなり、2番目の原像攻撃になるのはいつですか。
マルチコリジョンが2^300の他のメッセージと衝突した場合、それは2番目のプリイメージとしてカウントされます。マルチコリジョンは、衝突したメッセージの1つの「プレイメージ」を計算するために使用できるためです。2 ^ 60、2 ^ 100、2 ^ 1000の境界線はどこにありますか?
23で始まるすべてのハッシュダイジェストのプレイメージを生成できるとしたらどうでしょうか。確かに、それはプリイメージの厳密な定義を満たしていませんが、暗号化ハッシュ関数の重大な欠陥でもあります。
誰かが大きなマルチコリジョンを持っている場合、ハッシュがマルチコリジョンと衝突したメッセージのイメージをいつでも回復できます。例えば、
hash(m1)= hash(m2)= hash(m3)= h
誰かがhのプリイメージを要求し、m2で応答します。これが愚かでなくなり、本当の攻撃になるのはいつですか?
経験則?ハッシュ関数攻撃の評価に関する優れたリソースを知っていますか?
関連リンク:
encryption - ブルートフォース復号化攻撃は、適切な解決策を見つけたとき、どのようにしてそれを知るのでしょうか?
暗号化されたデータに対するブルート フォース攻撃は、データを復号化するための適切なキーをいつ見つけたのかをどのように知るのでしょうか? 人間に見てもらう以外に、データが復号化されたことを知る方法はありますか? 人間に優しいデータでない場合はどうなりますか?
cryptography - 復号化の成功を認識するのは難しくありませんか?
暗号化アルゴリズムを破る方法について聞くと、非常に高速に復号化する方法と検索スペースを削減する方法に焦点が当てられていることが多いことに気付きます。しかし、復号化の成功をどのように認識できるのか、なぜこれがボトルネックにならないのか、いつも疑問に思っています。それとも、暗号化/復号化されたペアが既知であると想定されることがよくありますか?
encryption - 暗号化されたデータの繰り返し-危険信号?
Base 64でエンコードされた暗号化データがいくつかあり、かなりの繰り返しに気づきました。(約)200文字の長さの文字列では、特定のbase-64文字が数回の別々の繰り返し実行で最大7回繰り返されます。
これは、暗号化に問題があることを示す危険信号ですか?私の理解によれば、平文が完全に均一であっても、暗号化されたデータは決して重要な繰り返しを示すべきではありません(つまり、文字A以外の2 GBを暗号化しても、暗号化されたバージョンでは重要な繰り返しはありません)。
php - PHPPseudoCryptクラスを復号化しようとしています
http://blog.kevburnsjr.com/php-unique-hashにリストされているPseudoCryptスクリプトを逆にする方法を作成しようとしています。このコードでは、次の式があります。
$numを除くすべての変数を取得できました。たとえば、次の番号を取ります。
その場合、方程式は次のようになります。
答えは1でなければなりません。しかし、私は方程式=$numを作る方法を決定していません。URLで作成されたハッシュを使用してから、ハッシュを復号化してデータベースでクエリを実行したいと考えています。
編集:複製の余地がほとんどない一意のハッシュを作成するためのより良い方法がある場合は、代わりにそれを受け入れます。
編集:どういうわけか私は$decに間違った値を入れました。編集:機能するコードで更新されたブログ投稿。
hash - Security implications of storing the password hash along an encrypted AES key
I am using the PKCS#5 standard to generate a key using a random and unique salt and the user`s password in input. Consider this key as the "encryption" key.
The "encryption" key is used to encrypt a random AES key. Each users have an AES key associated to their profile.
So, a user`s profile will contains this informations:
--> password hash for authentication purpose.
--> salt used in the PKCS#5 algo. (From the PKCS#5 V2.0 documentation, we know that this information needs no protection).
--> the encrypted AES key generated randomly and encrypted with the "encryption" key generated by the PKCS#5 algo with the salt and the user`s password
I was asking myself if it is dangerous to be in possession of the password`s hash, the salt and the encrypted AES key IN THE SAME TIME. I am 99.9% sure that this is not a problem, but can it facilitates the work of an attacker being in possession of all those details?
python - 英語に似ているかどうかに基づいて文字列を採点する
この質問を正確に表現する方法がわからないので、例を次に示します。
string1 = "THEQUICKBROWNFOX" string2 = "KLJHQKJBKJBHJBJLSDFD"
string1 を string2 よりも高くスコア付けする関数と、他の何百万もの意味不明な文字列が必要です。スペースがないことに注意してください。これは単語単位ではなく、文字単位の関数です。
90 年代に、私は Delphi でトライグラム スコアリング関数を作成し、Huck Finn のトライグラムを入力しました。コードを C または Python に移植するか、スタンドアロン ツールに組み込むことを検討していますが、もっと効率的な方法があるはずです。今までに。これを何百万回も行うので、速度は素晴らしいです。Reverend.Thomas Beyse() Python ライブラリを試し、すべて大文字の文字列でトレーニングしましたが、単語間にスペースが必要なようで、[] のスコアが返されます。いくつかのマルコフ連鎖ライブラリを見つけましたが、それらも単語間にスペースが必要なようでした。私の理解では、なぜそうなのかわかりません...
とにかく、私は多くの暗号解読を行っているので、将来的にはスペースと句読点を使用するスコア関数が役立つでしょうが、今は ALLCAPITALLETTERS だけが必要です。
助けてくれてありがとう!
cryptography - 同じファイルの既に復号化されたバージョンを使用して、暗号化されたファイルから AES キーを取得する
それは可能ですか?暗号化されたファイルは、CBC モードで AES-128 を使用します。復号化されたバージョンは既に持っていますが、暗号化に使用されたキーがわからず、それが必要です (理由は言いたくありません)。
パディングが無効になっているため、両方のファイルが同じであることはわかっています(サイズは同じです)。それが役立つ場合は、暗号化プロセスで使用された初期化ベクトルも知っています。