web-dev-qa-db-ja.com

AESでファイルをすばやく暗号化するにはどうすればよいですか?

AES-256を使用してファイルを暗号化します。どうすればそれをすばやく簡単に行うことができますか?

79
Stefano Palazzo

残念ながら、あなたのものを保護する簡単な解決策はありません。ユースケースについて考えてみてください。おそらく、単純なAES以外のものが適しています。


プラットフォームに依存しない非常に単純な暗号化が必要な場合は、opensslを使用できます。

注意:これを使用して、room-mateからbirthday-gift-ideas.txtを非表示にできますが、決意のある攻撃者に対して安全であるとは思わないでください!

  1. コメントで指摘されたように、この方法は単純なキー派生関数を使用するため、パスワードが安全であるためには、パスワードが非常に良好である必要があります。
  2. さらに、このメソッドは暗号文を認証しません。これは、攻撃者が気付かないうちに内容を変更または破損できることを意味します。
  3. 多くの種類のセキュリティでは、暗号化だけでは不十分です(たとえば、暗号化を使用して安全に通信することはできません)

まだopensslを使用したい場合:

  • 暗号化:

    openssl aes-256-cbc -in attack-plan.txt -out message.enc

  • 復号化:

    openssl aes-256-cbc -d -in message.enc -out plain-text.txt

暗号化と復号化の両方でbase64スイッチを使用して、opensslで-a- encodeにメッセージをエンコードできます。このようにして、たとえば、暗号文を電子メールメッセージに貼り付けることができます。次のようになります。

stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=

暗号と動作モードを選択できることに注意してください。通常の使用では、CBCモードのaes 256をお勧めします。使用可能な暗号モードは次のとおりです(AESのカウントのみ)。

aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb

こちらもご覧ください:

ご注意ください:

OpenSSLはパスワードを要求します。これは暗号化キーではなく、32バイトに制限されていません!他の人とファイルを転送する場合、共有秘密は非常に強力なはずです。このサイトを使用して、パスワードがどれだけ優れているかを把握できます。

警告:これらのサイトがパスワードをサーバーに送信しないことを確認しましたが、いつでも変更できます。これらのサイトを開発ツール/インスペクターで使用し、強力なパスワードを入力する前にそれらが送信するかどうかを確認します。

85
Stefano Palazzo

gpgコマンドを使用したい:

暗号化:

gpg --cipher-algo AES256 --symmetric filename.tar.gz

速記:

gpg --cipher-algo AES256 -c filename.tar.gz

これはパスフレーズを要求します。

復号化:

gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg

速記:

gpg -o filename.tar.gz -d filename.tar.gz.gpg

cipher-algo AES256~/.gnupg/gpg.confに追加して、AES256をデフォルトにすることもできます。 (マンページによると CAST5

26
scrrr

7zpasswordオプションを使用する場合)256ビットAES暗号化を使用します(SHA256キーストレッチング )。

インストール(p7Zip-full)して、暗号化するファイルまたはディレクトリを右クリックし、Compress。7zおよびその他のオプション/パスワード

enter image description here

復号化するには、。7zファイルを右クリックして、Extract hereを選択します。

16
arrange

aescrypt

リンクされたWebサイトには、オープンソースの256ビットaes暗号化/復号化ツールが含まれており、Javaを介したMacO、Windows、Linuxなどのマルチプラットフォームです。

暗号化:aescrypt -e <file>

復号化:aescrypt -d <file>

次の構文を使用して、ホームフォルダーをバックアップおよび暗号化できます。

tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes

ubuntuのインストール

ソースのダウンロードと抽出

make
Sudo make install

他のプラットフォーム

Webサイトからバイナリまたはソースコードをダウンロードします。

4
fossfreedom

私がしたであろう多くの提案は、このスレッドですでに出されています。基本的に、opensslはファイルまたはスクリプトを暗号化する最も簡単な方法です。ただし、AES-256の使用には注意してください。これは、someプラットフォーム。最も新しいOS ...すなわちLinuxにあります。しかし、AIX 5.3などのその他のものはそうではありません(HP-UXも同様だと思います)。異なるプラットフォームでファイルまたはスクリプトを使用する場合は、AES-128を使用することを強くお勧めします。これはどこでも利用できるためです。

AES-128を使用してファイルを「迅速かつ簡単に」暗号化するにはどうすればよいですか?

www.ShellScrypt.com のようなサイトは、openssl AES-128を非常に強力に使用してシェルスクリプトを暗号化し、暗号化されたコピーを作成します実行可能スクリプトの。スクリプトをサイトに貼り付けるだけで、Zipファイルが生成されます。そのZipファイルには、暗号化された(およびスクリプトの場合は実行可能)バージョンのファイルが含まれます。これにより、ファイルを「easily」および「conveniently」で暗号化できます。/scriptは、スクリプトを使用したり、opensslコマンドの複雑で混乱した呪文を実行したりするすべてのシステムで、パッケージまたはモジュールの要件を満たす必要はありません。

以下に示すのは、AES-を使用する基本的なencrypt/decryptopensslコマンドです128:

test@test-VirtualBox:~$ 
test@test-VirtualBox:~$ echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content
test@test-VirtualBox:~$ 
test@test-VirtualBox:~$
3

Stefano Palazzoの答えに加えて、base64コマンドと同様に機能する小さなbash関数を作成しました。

ファイルをaes256暗号化してから、base64でエンコードします。逆にすると、元のプレーンテキストをbase64でデコード、解読、および吐き出します。

aes256() {
  decodeMe=""
  isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"

  if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
    decodeMe="-d"
    shift
  fi

  if [ "$isPipe" = "true" ]; then
    read input
    printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
    exitCode="$?"
  else
    openssl aes-256-cbc -a $decodeMe -in "$*"
    exitCode="$?"
  fi

  unset isPipe decodeMe input
  return "$exitCode"
}

使用法:

echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=

echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string

aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password

aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
1