web-dev-qa-db-ja.com

パスフレーズを指定せずに独自のローカルファイルを復号化するようにgpgを設定する

これはgpgに関する質問です。特定のユーザー( "opsacc")としてLinuxシステムにログインすると、gpgを使用してファイルを暗号化できます。その後、パスフレーズを指定せずにファイルを復号化できます。このユーザーのgpg公開鍵/秘密鍵は私が作成したものではありません。問題は、別のアカウントとしてログインしたときにこのシナリオを複製したいのですが、常にパスフレーズを入力する必要があるため、複製できないことです。つまり、別のユーザーとしてログインするときに、パスフレーズを指定せずにファイルを暗号化してから復号化できるようにgpgを設定したいと思います。 gpgマニュアルや他の調査では、これは不可能であることが示唆されているようです。

パスフレーズを指定せずに(同じユーザーのみが)復号化できるようにファイルを暗号化する方法を誰かが提案できますか?むしろ、このシナリオを有効にするために必要なキーペアを設定する方法は?

私の場合、アカウント「opsacc」のキーペアを最初に設定したユーザーは、複数の公開/プライベートキーペアを生成したようです。パスフレーズを指定せずにファイルを復号化するためにこれが必要かどうかはわかりません。同様の名前のアカウントが存在する別のLinuxシステムでファイルが作成された可能性があります。キーペアの1つが別のシステムで作成され、ここでエクスポート/インポートされた可能性もあります。

詳細については、コマンドラインからの以下の出力を参照してください。

ユーザー「opsacc」として「server」にログオンし、gpgバージョン1.4.5を使用しました。

[opsacc@server1 ~]$ gpg --version
gpg (GnuPG) 1.4.5
Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, Zip, ZLIB, BZIP2
[opsacc@server1 ~]$

Gpgを使用してコマンドラインでstdinから暗号化されたファイルを作成しました。

[opsacc@server1 ~]$ gpg -o .SecretFile.gpg -r opsacc -e
my_secret_Word
[opsacc@server1 ~]$
[opsacc@server1 ~]$ ls -l .SecretFile.gpg
-rw-rw-r-- 1 opsacc opsacc 595 Mar  6 11:50 .SecretFile.gpg
[opsacc@server1 ~]$
[opsacc@server1 ~]$ file .SecretFile.gpg
.SecretFile.gpg: GPG encrypted data
[opsacc@server1 ~]$ 

その後、パスフレーズを指定せずにファイルを復号化できます。

[opsacc@server1 ~]$ gpg --decrypt --no-secmem-warning -q $HOME/.SecretFile.gpg
my_secret_Word
[opsacc@server1 ~]$

公開鍵/秘密鍵の詳細は次のとおりです。

[opsacc@server1 ~]$ gpg -k
/opt/home/opsacc/.gnupg/pubring.gpg
----------------------------------
pub   1024D/3B50F829 2009-03-25
uid                  opsacc <[email protected]>
sub   2048g/63B0BE4D 2009-03-25

pub   1024D/82406185 2009-03-25
uid                  opsacc <[email protected]>
sub   2048g/766F847E 2009-03-25

[opsacc@server1 ~]$ 
[opsacc@server1 ~]$ gpg -K
/opt/home/opsacc/.gnupg/secring.gpg
----------------------------------
sec   1024D/3B50F829 2009-03-25
uid                  opsacc <[email protected]>
ssb   2048g/63B0BE4D 2009-03-25

sec   1024D/82406185 2009-03-25
uid                  opsacc <[email protected]>
ssb   2048g/766F847E 2009-03-25

[opsacc@server1 ~]$ 

暗号化したファイルのみをユーザーに復号化してもらいたい。パスフレーズなしで秘密鍵を作成できることに気づきませんでした。それは明らかに私が上で説明したシナリオで起こったことです。
したがって、opsaccユーザーが以前に暗号化したファイルを復号化する場合、パスフレーズを入力する必要はありません。このシナリオを別のユーザーのために複製しました。この方法を使用して、マルチユーザーシステム上のファイルを保護しています。つまり、この方法で暗号化すると、ファイルは所有者のみが復号化でき、パスフレーズを指定しなくても(自動スクリプトでファイルを読み取る必要がある場合に非常に便利です)、システム上の他のユーザーはファイルを復号化できません。ただし、このシナリオの主なセキュリティリスクは何か疑問に思っています。ハッカーは、opsaccの暗号化されたファイルにアクセスして復号化するために、何をする必要がありますか?

1
Exchanger

デフォルトでは、各システムユーザーは独自のホームディレクトリを持っているため、GnuPGホームディレクトリを所有しています。各GnuPGホームディレクトリには、秘密鍵の個々のレプリカを保存できます。

パスフレーズが不要な場合、キーはパスフレーズで暗号化されていないようです。キーをエクスポートします(gpg --export-secret-keys [key-id]、そしてそれを他のユーザーのために(彼自身のGnuPGホームディレクトリに、gpg --import)パスフレーズを入力する必要がある人。次に、キーを編集します(gpg --edit-key [key-id])そしてパスフレーズを追加します(GnuPG編集シェル内のpasswd)。

他のユーザーは、キーのコピーにアクセスするためにパスフレーズを入力する必要があります。彼にはパスフレーズなしでopsaccの暗号化されていないバージョンにアクセスする権限がないため、パスフレーズなしでファイルを復号化することはできません。

ただし、パスフレーズを取得すると、もちろん簡単に削除できることに注意してください。

1
Jens Erat