OpenPGP(BouncyCastle을 통해)를 사용하여 은행 파일을 암호화하고 금융 처리를 위해 파일을 은행에 SFTP하는 프로세스가 있습니다.
그들은 나에게 공개 키 파일을 보냈고, 나는 다음 명령을 사용하여 키를 검사했습니다(결과는 다음과 같습니다).
C:\Program Files (x86)\GNU\GnuPG>gpg2 --dry-run -vvvv --import \test\thekey.txt
gpg: using character set `CP437'
gpg: armor: BEGIN PGP PUBLIC KEY BLOCK
gpg: armor header: Version: GnuPG v1.2.6 (GNU/Linux)
:public key packet:
version 4, algo 17, created 1232463981, expires 0
pkey[0]: [1024 bits]
pkey[1]: [160 bits]
pkey[2]: [1024 bits]
pkey[3]: [1021 bits]
keyid: C0B18494F5B25CB6
:user ID packet: "FTP Upload Key 3 <[email protected]>"
:signature packet: algo 17, keyid C0B18494F5B25CB6
version 4, created 1232463981, md5len 0, sigclass 0x13
digest algo 2, begin of digest 23 e8
hashed subpkt 2 len 4 (sig created 2009-01-20)
hashed subpkt 27 len 1 (key flags: 03)
hashed subpkt 11 len 5 (pref-sym-algos: 9 8 7 3 2)
hashed subpkt 21 len 2 (pref-hash-algos: 2 3)
hashed subpkt 22 len 2 (pref-zip-algos: 2 1)
hashed subpkt 30 len 1 (features: 01)
hashed subpkt 23 len 1 (key server preferences: 80)
subpkt 16 len 8 (issuer key ID C0B18494F5B25CB6)
data: [159 bits]
data: [156 bits]
:public sub key packet:
version 4, algo 16, created 1232463981, expires 0
pkey[0]: [1024 bits]
pkey[1]: [4 bits]
pkey[2]: [1024 bits]
keyid: 358DC68F4A83D261
:signature packet: algo 17, keyid C0B18494F5B25CB6
version 4, created 1232463981, md5len 0, sigclass 0x18
digest algo 2, begin of digest 28 08
hashed subpkt 2 len 4 (sig created 2009-01-20)
hashed subpkt 27 len 1 (key flags: 0C)
subpkt 16 len 8 (issuer key ID C0B18494F5B25CB6)
data: [158 bits]
data: [160 bits]
gpg: pub 1024D/F5B25CB6 2009-01-20 FTP Upload Key 3 <[email protected]>
gpg: writing to `C:/Users/jholovacs/AppData/Roaming/gnupg/pubring.gpg'
gpg: using PGP trust model
gpg: key 9166F91E: accepted as trusted key
gpg: key DBA95ED9: accepted as trusted key
gpg: key DF548FCC: accepted as trusted key
gpg: key F5B25CB6: public key "[User ID not found]" imported
gpg: Total number processed: 1
gpg: imported: 1
샘플 텍스트 파일을 가져와 공개 키를 사용하여 암호화한 후 다음 명령을 사용하여 결과 파일을 검사했습니다(결과는 다음과 같습니다).
C:\Program Files (x86)\GNU\GnuPG>gpg2 --list-packets <\test\bankfile.pgp
:compressed packet: algo=1
:pubkey enc packet: version 3, algo 16, keyid 358DC68F4A83D261
data: [1019 bits]
data: [1024 bits]
:encrypted data packet:
length: 620
gpg: encrypted with ELG key, ID 4A83D261
gpg: decryption failed: No secret key
문제는 다음과 같습니다. 은행에 파일을 업로드하면 파일이 개인 키와 일치하지 않는다고 합니다. 키 ID가 공개 키와 일치하는 것을 확인하여 358DC68F4A83D261
머리를 긁적입니다. 그런데 4A83D261
공개 키 파일에 반영되지 않은 ID의 ElGamal 키도 표시됩니다.
라이브러리 기반의 사용자 정의 암호화 솔루션을 사용하고 있으므로 BouncyCastle
암호화에 오류가 있을 수 있습니다( Pgp4Win
그러나 내 자체 버전을 사용하여 오류를 복제할 수는 없습니다). 그들 측에도 문제가 있을 가능성도 있다. 내 문제는 문제가 어디에 있는지 확인하기 위해 이 피드백을 읽는 방법을 잘 모르겠다는 것입니다. 몇 가지 조언을 주시면 감사하겠습니다.
답변1
그렇군요, 맞는 키였는데, 버전 호환성 문제인 것 같았습니다. OpenPGP 버전은 BouncyCastle의 데이터 압축 버전을 지원할 수 없습니다. 결국 압축을 비활성화했고 해당 소프트웨어가 파일을 해독할 수 있었습니다.