RSAとAES(Rijndael)を実装するDelphi 2010用の無料の最新の暗号化ライブラリを探しています。
ライブラリを使用するサンプルコードを作成して公開する予定なので、無料のライブラリが必要です。
TurboPower LockBoxのDelphi 2010バージョンがこれらの両方を実装する SongBeamer サイトに投稿されていますが、少し古くなっているのではないかと心配しています。たとえば、RSA鍵のサイズが小さく、何年もの間、新しいセキュリティ機能はありません。
更新:LockBoxが古くなっている、または重要な機能が不足しているという認識は間違っていますか?それはまだ生産開発に関連していますか? (特にRSA鍵のサイズ)
RSAアルゴリズムは必ずしも古くなっているわけではありませんが、鍵のサイズは重要です。現在も至る所で愛用されています。 2030年を超えてセキュリティが必要な場合は、RSAキーの長さ 72ビット を使用する必要があります。これは、アルゴリズムの弱点ではなく、計算能力の向上の関数にすぎません。
SongBeamer がメンテナンスを開始する前にLockBoxを見ていました(Delphi 2007)RSAが不安定であることがわかりました。それ以降は修正されている可能性があります。使用する場合は、必要なキーの長さをサポートしていることを確認してから、既知の入力と出力を使用して自動テストをいくつか作成してください。安定して動作することを確認してください。もしそうなら、ぜひそれを使ってください。
Microsoft Crypto APIを使用してRSA暗号化を行うこともできます。私は Delphi 2007 のラッパーを作成しましたが、Unicode用に更新していません(わかっています。他の誰かがそれをUnicodeで簡単に動作するように更新できるかもしれません。
もう1つのオプションは、COM相互運用性などを介して.NET Framework暗号化関数を使用することです。
TurboPower LockBox 3.1.0がリリースされました。それはサポートします:
http://sourceforge.net/projects/tplockbox/ および http://lockbox.seanbdurkin.id.au/
こんにちはBruce私はDelphi 5以降、このライブラリを使用しています。
フリーウェアであり、Sorce Codeでは、残念ながらRSAを実装していません。
TurboPower LockBox。 データ暗号化。 2009年9月4日。 ダウンロード
ステータス:正常に動作しているはずです。
このライブラリは、AnsiおよびUnicodeStringsの暗号化をサポートするように拡張されています。
2009年4月9日
* Delphi 2010パッケージ
*ヒントと警告なしでコンパイルする必要があります
Argalatyrが述べたように、 DCPCrypt はDelphi 2009で動作しますが、RSAは行いません。
ChillKat は、DelphiのRSAとAESをサポートしていますが、無料ではありません。
Sergey Kirichenkoは、ここからダウンロードできる無料のRijndael実装を作成しました: http://rcolonel.tripod.com/dwnload/rc_rnd.Zip 。ファイルの日付は2000年11月なので、新しいDelphiで直接動作するかどうかはわかりません。
ここにダウンロードするためのDelphiコードを含むzipファイルがありました: http://ace.ulyssis.student.kuleuven.ac.be/~triade/GInt/bin/RSA.Zip 、しかし開発者はおそらく彼の研究を終え、大学は彼のホームページを削除しました。 this chinese webpage で、ファイルの内容を確認できます(ページでRSA.pasを検索してリンクをクリックしてください)。
「長い歯」(古い?)の意味が正確にはわかりませんが、必要なものがすべて揃っているので、ロックボックスを選びます。 2009年の更新を除いて、最後の公式の変更は2003年に行われました。
サンプルコードの場合、LockBoxは問題ないかもしれませんが、本番環境ではもう使用しません。暗号化は「長い道のり」です。アルゴリズムは古くなっています。以前は発見されていなかった欠陥、改良された暗号分析技術、数学的進歩、プロセッサー能力の向上により、安全なアルゴリズムと鍵のサイズが十分に安全ではなくなります。 3DES、MD5、SHA-1はすでに十分ではないと考えられています。 AESに対する攻撃が最近公開されました( http://eprint.iacr.org/2009/374 )。最小推奨RSA鍵サイズは1024ビットになりましたが、データを何年も保護する必要がある場合は2048および3072鍵が推奨されます。ロックボックスは、1024ビットまたはlessのキーのみを提供します。正しいブロック暗号モードも選択する必要があります。また、LockBox TLbRijndael(AES)クラスはデフォルトで、既知の欠陥があるECBを使用し、CBC以外のものは提供しません。これらの年に電子セキュリティが獲得した重要性と、その結果としての善悪の両方による研究のため、7年前のライブラリは本当に古く、再コンパイルしてUTF-16文字列のサポートを追加するだけでは十分ではありません。偽のセキュリティは、セキュリティがないよりも悪いことに注意してください。システム管理者に「セキュリティが設定されていません」と言われた場合、システム管理者は自分でセキュリティの実装に取り組みます(たとえば、IPSec、VPNなど)。 「はい、RSAとAESがあります!」 AESとRSAの実装が古くて安全でなくなったとしても、彼は大丈夫だと感じます。
D2010では試していませんが、 DCPcrypt はD2009でおそらく動作します。
Fundamentals Cody Library は、AES暗号化とRSA暗号化の両方を実装しています。私はライブラリを使用していませんので、その品質についてコメントすることはできません。
Daniele Tetiは、Delphi 2010用のDataSnapフィルターのコレクションをリリースしました。これには、ハッシュ、暗号、圧縮が含まれます。彼は将来、非対称暗号も実装する可能性があると述べています。
これはオープンソースなので、気軽に貢献してください。
無料のDelphi AES実装がたくさんあるようです。お気軽にお気に入りを追加してください ここ 。
無料のRSA実装はそれほど多くなく、両方を提供するライブラリはほとんどありません。
LockBoxはまだかなり合理的なオプションのようです。特に、解読するのに文字通り何年もかかる暗号化は必要ないので。
MicrosoftのCrypto APIを直接使用するのが最も実用的なオプションかもしれません。