Bouncycastle C#을 사용한 PGP 암호화 서명 검증에 유효하지 않은 키 경고를 유발합니다.

StackOverflow https://stackoverflow.com/questions/517635

  •  21-08-2019
  •  | 
  •  

문제

PGP 파일을 암호화하고 FTP를 통해 제 3 자에게 보내야합니다. 파일은 제 3 자의 DH/DSS 공개 키와 암호화되어 개인 키에 서명했습니다.

제 3 자에는 공개 키와 자신의 개인 키가 있습니다. 암호화/암호 해독은 작동하지만 제 3자는 서명을 확인하려고 할 때 경고를 받고 있습니다.

PGP 데스크탑을 사용하여 유사하게 암호화 된 파일을 해독하고 확인하려고 할 때 파일은 경고없이 확인합니다.

제 3자는 "McAfee e-Business Server"를 사용하고 있습니다.

정확한 경고는 다음과 같습니다. 경고 : 잘못된 서명은 파일 내용과 일치하지 않습니다! 사용자 "사용자 이름"의 잘못된 서명

코드는 약간 관여하지만 내 블로그에 게시했습니다. 더 적절한 경우 링크 대신 여기에 게시 할 수 있습니다.

이 문제를 해결하는 방법에 대한 통찰력에 감사드립니다.

도움이 되었습니까?

해결책

문제의 세부 사항에 대한 철저한 설명을 할 수는 없지만 여기에 작동하는 해결책이 있습니다. 우선 다른 PGP 구현은 사용중인 키를 생성하는 데 사용 된 프로그램에 매우 민감한 것 같습니다.

실패한 시나리오 :

  1. PGP 데스크탑에서 키 생성 (RSA V4, 2048/2048)
  2. Bouncycastle의 암호화 (DH/DSS, Elgamal)
  3. Bouncycastle에 로그인 (RSA 키 포함)
  4. PGP 데스크탑에서 암호 해독 및 서명 검증 성공.
  5. 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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top