2012-06-29 7 views
1

MD5WithRSAEncryption을 서명 알고리즘으로 사용하는 경우 해당 무작위 알고리즘은 무엇입니까?
나는 MD5PRNG을 시도했지만 내가 가지고 :올바른 랜덤 알고리즘은 무엇입니까?

java.security.NoSuchAlgorithmException :

KeyPairGenerator를 초기화하는 여기에 사용되는 적절한 무작위 알고리즘은 무엇입니까

를 찾을 수 없습니다 SecureRandom의 MD5PRNG 구현을? SHA1PRNG처럼
우리가 SHA256WithRSAEncryption

를 사용하여 내 말은 : SHA1PRNG는 키 쌍 ​​알고리즘에 의해 사용될 random generator 동안 SHA256WithRSAEncryption가하는 key pair algorithm입니다. 예 : keyPairGenerator.initialize(keySize, secureRandom);
(여기서 keyPairGenerator은 클래스 KeyPairGenerator입니다.)
그들은 적절한 페어링에 어떻게 의존합니까? SHA1PRNG와 함께 MD5WithRSAEncryption을 사용할 수 있습니까?

+0

예. 'SHA256WithRSAEncryption'은 키 쌍 알고리즘이고, 'SHA1PRNG'는 키 쌍 ​​알고리즘에서 사용할 임의 생성기입니다. 그것들은 어떻게 든 적절한 페어링에 의존하고 있습니까? SHA1PRNG와 함께'MD5WithRSAEncryption'을 사용할 수 있습니까? – Jim

+0

@Joey : OP – Jim

답변

3

결정적 랜덤 비트 생성기 (DRBG)의 기본이되는 해시 알고리즘 (있는 경우)은 중요하지 않습니다.

DRBG의 출력은 통계적으로 임의입니다. 출력을 검사하여 비트의 출처에 대해 아무 것도 결정할 수 없으면 암호 용도로 적합하지 않습니다.

그런데 RSA 서명 알고리즘은 RSA-PSS 체계를 사용할 때 RNG를 사용합니다. 이전의 RSA 서명은 결정적입니다 (이것은 약점입니다).

무엇이 입니까?은 알고리즘의 유효 강도입니다. 예를 들어, SHA-1을 3072 비트 RSA 서명 키와 함께 사용하고 싶지는 않습니다. 그 열쇠를 사용하는 암호화 알고리즘만큼 강력하지 않은 해시. DRBG는 classified by their strength 일 수 있습니다. DRBG의 보안 강도는 내부 상태가 제공되지 않고 출력을 예측하는 데 필요한 계산량을 나타냅니다.

좋은 해시 기반 DRBG의 보안 강도는 기본 해시 기능의 보안 강도와 동일합니다. 이를 확인하려면 NIST SP 800‑57 Part 1, Table 3.을보십시오. 강력한 보안을 위해 최소 128 비트 이상을 권장하는 112 비트가 필요합니다. 이는 SHA-224 또는 SHA-256 기반의 DRBG를 각각 2048 또는 3072 비트 RSA 키와 함께 사용한다는 것을 의미합니다.

+0

을 업데이트했습니다. 따라서 'MD5WithRSAEncryption' 키 쌍 생성기를 사용하면'SHA1PRNG '를 사용하지 않아도됩니다. – Jim

+0

사실 SHA-1은 괜찮습니다. 나는 어떤 분석도 보지 못했지만 그것이 80 비트의 보안을 제공하고 1024 비트 RSA 키와 잘 어울리는 것 같아요. 그러나 MD5를 포기하는 것이 좋습니다. 왜냐하면 알고리즘이 손상 되었기 때문입니다. – erickson

+0

@jim 그러나 SHA1PRNG를 사용하지 않을 이유는 없습니다. – erickson

2

SHA1PRNG의 유일한 문제는 키 공간이 어떤 이유로 20 바이트로 제한된다는 것입니다. 사실상 무제한의 텍스트로 해시를 수행 할 수 있기 때문에 이것은 전혀 필요하지 않습니다. 이 발전기의 키 크기에 제한이있는 이유는 분명하지 않습니다. 좋은 소식은 소스 코드를 복사하고 그 제한을 제거하는 것이 쉽습니다. 나쁜 소식은 표준 구현과 호환되지 않는다는 것입니다.

관련 문제