2014-03-26 2 views
0

RSA를 사용하여 C#에서 라이센스 키 메커니즘을 구현할 때 최소 384 비트의 키 크기로 제한되는 RSACryptoServiceProvider class이 나타났습니다. 이 키 길이는 제가 생성 한 서명 (== 라이센스 키)에 직접적인 영향을줍니다.RSA의 최소 키 길이

일반적으로 384 비트는 RSA의 기술 제한 사항입니까, 아니면 더 짧은 키 크기로 RSA를 성공적으로 구현할 수 있습니까?

RSA를 설명하는 (독일어) 위키 백과 문서를 읽으면 수학 계산 예에서 매우 작은 소수를 사용합니다. 작동하는 것처럼 보이므로 키 크기가 20 비트보다 짧을 것으로 예상됩니다 ... 참고 : 현재 보안에 대해서는 전혀 신경 쓰지 않습니다. 그것은 또 다른 토론입니다. 기술적 인 한계를 바로 잡고 싶습니다.

나는 Stackoverflow가 도구를 요구하는 데 사용되어서는 안된다는 것을 알고 있지만, 하한이있는 .NET RSA 라이브러리를 알고 있다면, 아마도 그 점을 보조 메모로 언급하고 싶을 것입니다.

+0

RSA 뒤에있는 수학은 매우 간단합니다. 직접 구현할 수도 있습니다. 1024 비트 이하의 모든 것이 안전하지 않기 때문에 이러한 작은 키 크기를 지원하는 라이브러리가 있는지 확실하지 않으며 메시지 크기가 키 크기로 제한됩니다. – ntoskrnl

+0

이러한 짧은 키에는 일반적인 패딩을 사용할 수 없습니다. 예를 들어, SHA1을 사용하는 OAEP는 328 비트를 단독으로 사용합니다. – CodesInChaos

+0

서명을 더 짧게하려면 DSA 및 유사한 알고리즘을 고려하십시오. 320 비트 DSA 서명은 파손되면 고가이며 한 대의 PC에서 320 비트 RSA 키가 손상 될 수 있습니다. 더 작은 시그니처 (DSA의 절반 크기)의 경우 BLS 구성표를 사용할 수 있지만 구현하기가 약간 까다 롭습니다. – CodesInChaos

답변

1

보안에 신경 쓰지 않는다면 , 키 크기가 < 384 비트 인 RSA를 구현할 수 있습니다. 안전하지 않은 것으로 권장하지는 않지만 작동합니다.

slide에서 Dan Boneh는 ~ 128 비트의 개인 키를 사용합니다. (그의 과정의 나머지 부분도 볼 가치가있다).

1

기술적 인 한계는 없지만 개인 키 크기가 감소하면 (따라서 모듈러스가 감소하면) 블록 크기도 감소한다는 단점이 있습니다.

따라서 서명/암호화 할 데이터가 블록 길이보다 클 경우 RSA와 결합하여 블록 체인 모드를 사용해야합니다.

0

보안 측면에서 볼 때 384 비트 RSA는 몇 시간 내에 깨질 수 있으며 512 비트 RSA는 1 ~ 2 주 내에 금이 갈 수 있습니다. 서명 크기가 염려되는 경우 160 비트 키가있는 ECDSA는 40 바이트 서명을 생성합니다. BLS는 그 중 절반을 할 수 있지만 좋은 라이브러리는 없습니다.

"기술적 한계"관점에서 RSA 키는 서명하려는 값의 2 배 이상 비트가 있어야합니다. 일반적으로 데이터에 직접 서명하는 대신 데이터의 해시에 서명합니다.