Bouncycastle C#을 사용한 PGP 암호화 서명 검증에 유효하지 않은 키 경고를 유발합니다.
-
21-08-2019 - |
문제
PGP 파일을 암호화하고 FTP를 통해 제 3 자에게 보내야합니다. 파일은 제 3 자의 DH/DSS 공개 키와 암호화되어 개인 키에 서명했습니다.
제 3 자에는 공개 키와 자신의 개인 키가 있습니다. 암호화/암호 해독은 작동하지만 제 3자는 서명을 확인하려고 할 때 경고를 받고 있습니다.
PGP 데스크탑을 사용하여 유사하게 암호화 된 파일을 해독하고 확인하려고 할 때 파일은 경고없이 확인합니다.
제 3자는 "McAfee e-Business Server"를 사용하고 있습니다.
정확한 경고는 다음과 같습니다. 경고 : 잘못된 서명은 파일 내용과 일치하지 않습니다! 사용자 "사용자 이름"의 잘못된 서명
코드는 약간 관여하지만 내 블로그에 게시했습니다. 더 적절한 경우 링크 대신 여기에 게시 할 수 있습니다.
이 문제를 해결하는 방법에 대한 통찰력에 감사드립니다.
해결책
문제의 세부 사항에 대한 철저한 설명을 할 수는 없지만 여기에 작동하는 해결책이 있습니다. 우선 다른 PGP 구현은 사용중인 키를 생성하는 데 사용 된 프로그램에 매우 민감한 것 같습니다.
실패한 시나리오 :
- PGP 데스크탑에서 키 생성 (RSA V4, 2048/2048)
- Bouncycastle의 암호화 (DH/DSS, Elgamal)
- Bouncycastle에 로그인 (RSA 키 포함)
- PGP 데스크탑에서 암호 해독 및 서명 검증 성공.
- McAfee Business Server에서는 암호 해독 성공이지만 서명 검증이 실패합니다.
McAfee Business Server가 키를 확인하는 데 성공하도록하려면 Bouncycastle 소스 코드에서 코드를 사용하여 Bouncycastle에서 키를 생성하는 데 성공하기 위해 (org.bouncycastle.bcpg.openpgp.examples.rsakeyringgenerator)이 코드가 특정 키가 필요한 경우 변경할 수 있습니다. 속성.
또 다른 대안은 McAfee Business Server를 사용하여 키를 생성하는 것입니다. 이를 위해서는 소프트웨어에 대한 액세스가 필요합니다. 시험판으로 테스트를했습니다. (그건 그렇고 목에 일어나서 달리기위한 고통이었다)
업데이트 : E-Business Server 8.5.3 (시험)에서 모든 테스트를 수행했습니다. 현상금으로 암호화하고 로그인하여 e-business 서버에서 확인할 수있는 지점에 도달했습니다. 제 3자가 서명을 확인하는 것을 거부하는 e-business server 7.0을 사용하고 있습니다. 모든 것을 작동시키기 위해 V3 서명을 만드는 데 필요한 것이 필요합니다.
우리는 다음에서 변경되었습니다.
PgpSignatureGenerator pgpSignatureGenerator = new PgpSignatureGenerator(m_encryptionKeys.SecretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha1);
에게
PgpV3SignatureGenerator pgpV3SignatureGenerator = new PgpV3SignatureGenerator(m_encryptionKeys.SecretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha1);