2009-07-20 2 views
1

간단한 라이센스 파일 시스템을 구현 중이며 현재 구현중인 라인에서 실수를 저지르고 있는지 알고 싶습니다.이 RSA 기반 서명 (복구 포함) 체계가 암호 학적으로 안전한가요?

메시지 데이터가 키보다 작습니다. 나는 3072 비트의 키와 함께 RSA를 사용하고 있습니다.

라이센스 발급자는 서명 할 메시지를 생성하고 직접 RSA 기반 접근 방식을 사용하여 서명 한 다음 유사한 방법을 적용하여 메시지를 암호화합니다. 암호화 된 메시지와 서명은 라이센스 파일로 함께 저장됩니다.

  1. Sha512 메시지입니다.
  2. 개인 키를 사용하여 해시에 서명하십시오.
  3. 개인 키를 사용하여 메시지에 서명하십시오.
  4. 연결하여 전송하십시오.

를 수신, 검증 프로세스는 다음과 같습니다

  1. 는 공개 키를 사용하여 파일의 해시를 해독 공개 키
  2. 해시와 메시지
  3. 를 메시지를 해독하고, 비교 로컬 해시

구현이 올바르게 작동하고 있으며 이 유효합니다.이 유효합니다.

저는 현재 해요 제로 패딩 아마 나쁜 움직임이다 키 사이즈 (내가 1 또는 1.5처럼 PKCS 패딩 알고리즘을 사용한다 가정?)

는이 전략을 하는가에 맞게 메시지를 유효한 것 같니? 명백한 결함이나 전망이 있습니까?

답변

3

큰 결함 : 당신 이어야합니다. 해독시 패딩이 계속 있는지 확인하십시오.

(메시지 길이를 미리 알고 있다면 자신의 패딩 구성표를 사용하여 도망 갈 수도 있지만, 언급 한대로 기존 메시지를 사용하는 것이 좋습니다.)

메시지 자체를 암호화하는 것이 왜 불편한 지 잘 모르겠다. 당신이 말했듯이 공개 키를 가진 사람이 암호를 해독 할 수 있으므로 난독 화 이외의 다른 것을 추가하지는 않습니다. 메시지와 암호화 된 패딩 된 해시를 보낼 수도 있습니다.

cryptlib 또는 KeyCzar (가능한 경우)과 같은 "기호 메시지"기능을 제공하는 고급 라이브러리를 사용하는 것이 좋습니다. 이 코드는 코드에서 볼 수있는 것보다 훨씬 많은 눈알을 사용하고 모든 패딩 문제와 유사한 문제를 처리합니다.

+0

메시지 암호화는 순전히 난독 화를위한 것입니다. Enc [x] 및 Enc [해시 [x]] 전송에 취약점이 있습니까? 해시가 올바르게 (그리고 무겁게) 패딩 된 이후로 나는 추정하지 않습니다. 내 구현은 우수한 공개 도메인 LibTomCrypt를 기반으로합니다. 나는 Wei Dai의 CryptoPP를 사용하고 있었지만 RSA 서명과 복구는 최신 권장 서명 방식으로 구현되지 않은 것으로 보입니다. –

+1

모든 패딩을 정돈하고있는 한 다시 볼 수 없습니다. 더 많은 검토를 위해 [email protected] 목록으로 보내주십시오. – caf