web-dev-qa-db-ja.com

使用するPGP対称アルゴリズムを隠す/検出する方法



ファイルを対称的に暗号化するとき(署名ではなく、非対称暗号化の質問ではない)、使用されている暗号化アルゴリズムを隠すことは可能ですか、それともすでに隠されていますが、何らかの方法でキャッシュされた結果としてシステムに表示されるだけです?

Analogy:暗号化されたファイルに署名するとき、受信者IDを隠すことが可能です。しかしGnuPG(この場合はgpg4win)を使用した対称暗号化を使用する場合、使用する暗号化アルゴリズムを隠すにはどうすればよいですか


例:
gpg --armor --symmetric --cipher-algo AES256 --output encryptedOutputFile.asc unencryptedInputFile.txt


そして次に:
gpg --decrypt plaintextfile.txt

利回り:
gpg:AES256暗号化データ
gpg:1つのパスフレーズで暗号化


観察:

どういうわけか、gpg4winはSpace Magicを使用して、パスフレーズを入力する前でも対称アルゴリズムを推測しています。これはどのように発生していますか?アルゴリズムがキャッシュに存在する可能性を排除しようとしましたが、まだ推測されていません。 GPGはデフォルトでCAST5を使用するので、AES256をどのように推測するのですか?

では、パスフレーズが指定される前であっても、GPGはAES256が使用されているとどのように推測するのでしょうか。

Gpg-フラグで使用されるアルゴリズムを隠す方法はありますか?

ありがとうございました!

6
Wind And Flame

適切に強力なパスフレーズ/キーを使用する場合、使用されるアルゴリズムを非表示にする正当な理由はありません。

本当に心配な場合は、暗号化されたファイルを16進エディターで開き、対称的に暗号化されたASCII装甲ファイルの4番目のバイトを変更します。

たとえば、対称暗号化ファイルの最初の4バイトは次のとおりです。

8C 0D 04 09

4番目のバイトはAES256を示す09です。その他の値については、common/openpgpdefs.hを参照してください。

typedef enum
  {
    CIPHER_ALGO_NONE        =  0,
    CIPHER_ALGO_IDEA        =  1,
    CIPHER_ALGO_3DES        =  2,
    CIPHER_ALGO_CAST5       =  3,
    CIPHER_ALGO_BLOWFISH    =  4, /* 128 bit */
    /* 5 & 6 are reserved */
    CIPHER_ALGO_AES         =  7,
    CIPHER_ALGO_AES192      =  8,
    CIPHER_ALGO_AES256      =  9,
    CIPHER_ALGO_TWOFISH     = 10, /* 256 bit */
    CIPHER_ALGO_CAMELLIA128 = 11,
    CIPHER_ALGO_CAMELLIA192 = 12,
    CIPHER_ALGO_CAMELLIA256 = 13
  }
cipher_algo_t;

したがって、バイトを0a(10進数の10)に変更すると、aes256ではなくtwofishを使用したと見なされます。バイトを09に戻すまで、gpgで復号化することはできません。

変更する前に私は見る:

$ gpg -d some_file.gpg 
gpg: AES256 encrypted data
Enter passphrase: 

そして、そのバイトを変更した後、私は見る:

$ gpg -d some_file.gpg 
gpg: TWOFISH encrypted data
Enter passphrase: 

これにより、あいまいさが増し、バイトを元に戻すことを忘れないようにし、読みやすさを大幅に低下させます。これを行うことはお勧めしません。

6
dr jimbob

メッセージの暗号化に使用されたパスフレーズがAES256で暗号化されているようです。暗号化されたセッションキーパケットが復号化されるまで、メッセージの暗号化に使用されるアルゴリズムは自己不明です。

これはpgpdumpが示すものです:

Old: Symmetric-Key Encrypted Session Key Packet(tag 3)(13 bytes)
New version(4)
Sym alg - AES with 256-bit key(sym 9)
Iterated and salted string-to-key(s2k 3):
    Hash alg - SHA1(hash 2)
    Salt - f8 8d cc 5f 67 70 ee 2a 
    Count - 65536(coded count 96)
New: Symmetrically Encrypted and MDC Packet(tag 18)(294 bytes)
Ver 1
Encrypted data [sym alg is specified in sym-key encrypted session key]
    (plain text + MDC SHA1(20 bytes))

対称鍵暗号化セッション鍵パケットには、「使用される対称アルゴリズムを説明する1オクテットの数値」が含まれています( RFC 488 を参照)。セッションキーの暗号化に使用するアルゴリズムが必要なようです(RFCを破る場合を除く)

パスフレーズの暗号化に使用されるアルゴリズムの追加を抑制できないようです。

2
martijnbrinkers