2012-01-29 43 views
2

私は以前からウェブで「lua aes」ソリューションを見つけました。そして、その安全性についてある程度心配してください。lua aes暗号化

これは、と述べている:

- 暗号化するときにパスワードが見やすいですので、実際の暗号化に使用しないでください。

これは「ファイル暗号化テスト」スクリプトでこれを示しています。

私の質問は以下のとおりです。

なぜ、そのどのように文字列を暗号化したファイルに書き込むと何が違うのですか?

暗号化中にどのように表示することができますか?それは暗号化したあとも見ることができますか?

基本的に、使用するのは安全ですか?

これを使用したことを確認できる人はいますか?元の開発者に郵送しましたが、電子メールアドレスは無効です。

私はそれをまったく使用すべきですか?私はその勧告が行われた二つの理由があると仮定し

答えて

7

  1. 文字列はLuaの中で不変なので、それが作成されます後は、異なるデータ で文字列を上書きする方法はありません。
  2. Luaでは、オブジェクトはガベージコレクションされます。プログラムの の特定のポイントでのみガベージコレクタが実行され、アプリケーションはオブジェクトへの参照がなくなった後にガベージコレクタがいつ実行されるかを通知する方法がありません。あなたがそこに見ることができるようにchar配列の代わりを使用して、

    Why is char[] preferred over String for passwords?

    :それまでは、パスワード文字列は、ポイント1

Luaのと似て

を参照してくださいJavaの場合、ことにより、メモリ内に残ります配列は変更可能で、完了するとゼロに再初期化することができるので、パスワードを格納するためのより良い方法です。

charアレイに最も近いLuaは、数字で満たされたテーブルです。ここでは、パスワードは文字列ではなく表として格納されます。表の各要素は各文字の整数表現で構成されています。たとえば、"pass"{0x70,0x61,0x73,0x73}になります。パスワードを含むテーブルが暗号化または復号化に使用された後、プログラムによって到達できなくなる前にゼロで埋められ、最終的にガベージコレクションされます。


あなたのご意見によると、私は誤解している可能性があります。 「ファイル暗号化テスト」は、パスワードを暗号化されたファイルとともにプレーンテキストに保存し、攻撃者でさえファイルにアクセスできる誰でも簡単に解読できるようにすることがあります。しかし、上記の点はまだ適用されます。しかしこれはまだ推測に過ぎません。私はあなたが言及した暗号化ライブラリへのリンクを提供しない限り、あなたが何を意味するのかを正確に知ることはできません。私はAESのライブラリを見て撮影したとパスワードは、「見やすい」という懸念が開始するために、コマンドラインまたは端子を介して、ユーザーがプレーンテキストでパスワードが原因で発生


プログラムの出力には暗号文のみが含まれているにもかかわらず、Luaプログラム。若干安全なパスワードを提供する方法は、入力を表示すること(sudoで行われているように)やドットや星で入力をマスクすること(多くのWebページで行われているように)ではありません。

いずれか、または上記の点がおそらく唯一の論理的な説明です。

+2

[_Data Lifetimeはシステムの問題です](http://xenon.stanford.edu/~talg/papers/SIGOPS04/abstract.html)、[_ゴミを捨てる:安全なデアラビジョニングによるデータの寿命を短縮_ ](http://www.usenix.org/event/sec05/tech/chow.html)は、問題の詳細や解決方法を知りたい人にとって興味深いかもしれません。 –

+0

警告:LUA実装では、サイドチャネル保護が提供されていない可能性もあります。例えば。別のシステムへの応答としてAES暗号を使用すると、鍵を再構築するために使用できる情報が漏洩している可能性があります(しかし、ほとんどのユーザーは完全性保護を追加することを忘れています。 –

+0

はい、それがどのように問題になるかを見ています。しかし、あなたがそれを表現する方法は、全体が安全でない/不安です。それは「ファイルの暗号化」を引用することだけを述べています。また、どの暗号化ソリューションを使用するかは問題ではないと思いますが、問題は同じです。しかし、どのように克服することができますか? – user1058431

1

LuaCryptoのような別の方法を試すこともできます。これはOpenSSLへのバインディングであり、AES標準を使用してデータを暗号化できます。

+0

これは、AESを実行するためにはるかに優れたテスト済みの便利な方法と思われます。セキュリティとスピードは、初心者にとってLUAのみのオプションよりも1000倍優れています。 –