Pythonベースのサーバーアプリケーションとクライアントの間でオープンデータチャネルを介してデータを保護するための信頼できる非対称暗号化ソリューションが見つからないようです。
クライアントがオープン データ チャネルを介した中間者攻撃を防ぐ方法が必要です。現在の交換では、クライアントがサーバー アプリケーションと通信していることを確認するために使用するトークンを、私のサイトのphpスクリプト。これは理想とはほど遠いものであり、トークンが送信されるのを待って別のユーザーに渡してしまうと、簡単に危険にさらされる可能性があります。
as3crypto の rsa 暗号化を試してみましたが、多くのライブラリでサポートされておらず、既知の脆弱性がある古い実装です。
このようなことが起こらないように、公開鍵/秘密鍵をクライアントとサーバーの両方にハードコーディングできるソリューションが本当に欲しいです。
3 に答える
いくつかの調査を行った後、必要な rsa の部分をゼロからコーディングすることにしました。任意の長さの生の整数キーを生成する Python コードをいくつか見つけ、rsa アルゴリズムがどのように機能するかを調べました。
T^P = X (mod R) で暗号化
X^Q = T (mod R) で復号化
ここで、T は開始データ、X は終了データ、P は鍵の公開部分、Q は鍵の秘密部分、R は鍵の共有部分 (すべて整数) です。
リプレイ攻撃を防ぐために可能な限り、データには nonice があり、メッセージは全体として長整数に変換されて、従来のビットごとの暗号解析を防ぎます。
SWF 自体が安全でないチャネルを介して転送されるため、誰かが実際に攻撃を計画している場合、公開キーをハードコーディングしても役に立ちません。したがって、キーは個別に送信されたかのように交換できます。
基本的に、中間者攻撃を防ぐためにできることは何もありません。攻撃をより困難にすることしかできません。HTTPS は入手できる最高のものであり、かなり簡単なソリューションでもあると思います。
swf コンテンツの逆コンパイルは経験豊富なハッカーにとって大きな問題ではないため、キーをハードコーディングしないことを強くお勧めします。SSL の使用について考えたことはありますか?