最近私はFTPを扱っており、IndyコンポーネントTIdFTP
のセキュリティについてはわかりません。だからこそ私はあなたと共有したいいくつかのテストを作りました。ベストプラクティスについてのあなたの意見と、それがどのように行われているかを示すことができます。Delphi 7 TIdFTP FTPセキュリティ(パスワード保護)
私はちょうどオブジェクトインスペクタを使用してコンポーネントにユーザ名とパスワードを追加しましたまず第一に:
とうまく動作し、簡単な接続を作成しました:
procedure TForm1.FormActivate(Sender: TObject);
begin
try
FTP.Connect();
ShowMessage ('Connection success');
except
ShowMessage ('Connection failure');
end;
end;
をこの方法に問題があります
Host = 'ivstefano.com'
Password = 'testpass'
Username = 'testuser'
:あなたはリソースハッカーのような単純なツールを使用する場合は、すぐにすべてのデータを見ることができます
FTP.Host:= 'ivstefano.com';
FTP.Username:= 'testuser';
FTP.Password:= 'testpass';
誰かがある場合
まだ賢く、彼は簡単に六角エディタのようないくつかのツールを使用して見ることができた:それから私は他のみんながそうであるようOIから削除し、コードの中に挿入することによって、少し賢くなることにしましたexeファイルにコンパイル中です:
それでは、私は最終的にやったことは、あなたがここにSample OTP toolからダウンロードできるOTP(One Time Pad Wiki)を使用して暗号化ツールを作ることだった。
パスワード「testpass」をキーワード「lemon」で暗号化するために使用しました。それから私は、OTP暗号化された文字列(#25+#2+#3+#7+#117+#19+#31+#6
)とキー(#108+#101+#109+#111+#110
)を取った両方の文字のASCII和中と再びOTPを使用してそれらを復号化するために私のメインのftp接続プログラムでそれらを使用:
function opt(text, key: String): String;
var i: Integer;
begin
SetLength(Result, length(text));
for i:= 1 to length(text) do
Result[i]:= Char(Byte(text[i]) xor (i + Byte(key[i mod length(key)])));
end;
procedure TFTPTester.FormActivate(Sender: TObject);
var decyptedPass: String;
begin
decyptedPass:= opt(#25+#2+#3+#7+#117+#19+#31+#6, #108+#101+#109+#111+#110);
FTP.Host:= 'ivstefano.com';
FTP.Username:= 'testuser';
FTP.Password:= decyptedPass;
try
FTP.Connect();
ShowMessage ('Connection success with pass: ' + decyptedPass);
except
ShowMessage ('Connection failure');
end;
end;
とすることができますように
そして、我々は再び六角を見れば、私たちは、キーフレーズと暗号化されたパスワードがプレーンテキストのパスワードここにあるが、少なくともではないことがわかります:それは正しく接続されている参照
結論:それでも、「ハッカー」はキーフレーズと暗号化されたパスが見ることができますが、彼が持っているので、コードをリバースエンジニアリングして確認するためにキーを使用してパスを解読する方法を推測するのは難しいように何が起こっていますか私が使った暗号の種類。基本的に私は独自の暗号化と解読を発明することができますので、OTPは必要ありませんが、誰かがさらに高度であれば、暗号化されたパスワードを解読し、その鍵を使って暗号化されたパスに適用してアクセスします。
追加情報:おそらくDelphiコードを難読化する方がはるかに良い選択でしょうか?
質問:あなたのパスワードを保護する良い方法はありますか?
SOURCES:ここではFTPTesterとOTP生成のためのソースコードを見つけることができます。Link to both
... FTPは大きなセキュリティホールでプレーンテキストとしてパスワードを送信しました。 OTP(ワンタイムパッド)は、保護されるデータと同じ長さのキーを使用します(キーは完全にランダムでなければなりません)。 –
あなたは正しいですが、私が質問したとき、私はそれ以上は分かりませんでした:) – ziGi
少なくとも質問を修正することからあなたを止めるものはありません。 :) OTPはすべての時間の最も誤解された暗号化方式でなければならないが、最も単純な... –