2011-05-03 3 views

답변

12

매우 안전하지 않은 기본 RSA 알고리즘 (패딩 없음)에서는 메시지 크기가 모듈러스.

RSA의 보안을 강화하려면 PKCS1에 정의 된 패딩 방식을 사용해야합니다. 선택한 구성표에 따라 메시지 크기가 모듈러스보다 훨씬 작을 수 있습니다. http://en.wikipedia.org/wiki/PKCS1

73

RSA는 모듈러스보다 다소 작은 단일 메시지를 암호화합니다. 구체적으로, 메시지는 먼저 "패딩"되어 0과 n-1 사이의 큰 정수로 해석되는 바이트 시퀀스가됩니다. 여기서 n은 모듈러스 (공개 키의 일부)입니다. 패딩 된 메시지는 모듈보다 길 수는 없으므로 원시 메시지의 최대 길이가 엄격합니다.

특히 가장 일반적인 패딩 방식 (PKCS#1 "구식", 별칭 "v1.5")을 사용하는 경우 패딩은 메시지에 적어도 11 바이트를 추가하며 패딩 된 메시지 길이는 모듈러스 길이, 예. 1024 비트 RSA 키의 경우 128 바이트 따라서 최대 메시지 길이는 117 바이트입니다. 결과 암호화 된 메시지 길이는 모듈러스와 크기가 같기 때문에 암호화는 반드시 메시지 크기를 적어도 11 바이트 씩 확장합니다.

  • 의 임의의 대칭 키 K 선택 (원시 순서 :

    (말하자면 전자 메일)를 암호화 큰 메시지를 RSA를 사용하는 일반적인 방법은 하이브리드 방식을 사용하는 것입니다 예를 들어, 128에서 256 랜덤 비트).

  • 큰 메시지는 AES와 같은 적절하고 효율적인 대칭 암호화 체계를 사용하여 K으로 대칭 적으로 암호화됩니다.
  • k은 RSA로 비대칭 적으로 암호화됩니다.

큰 메시지를 RSA로 암호화 할 수있는 많은 117 바이트 블록으로 "분할"하는 것은 여러 가지 이유로 정상적으로 수행되지 않습니다. 추가 약점을 추가하지 않고 바로 수행하기가 어렵습니다. 각 블록은 무시할 수없는 전체 메시지 크기 증가를 의미하는 11 바이트만큼 확장됩니다 (네트워크 대역폭은 희소 한 리소스가 될 수 있음). 대칭 암호화는 훨씬 빠릅니다.

+2

조금 더 확장하십시오. 요즘에는 OAEP (PKCS # 1 v2.1)를 사용하여 RSA 암호화 전에 메시지를 채워야합니다. 패딩은 내부적으로 해시 함수 (MGF)를 두 번 사용하고 다른 정보를 사용합니다. 'hlen'이 해시 함수의 출력 크기라고 가정하면, 오버 헤드는'2 * hlen + 2'입니다. SHA-1은 이에 가장 일반적으로 사용되는 해시 함수입니다. ** 1024 비트 RSA 키 **는 SHA-1의 경우 최대 ** 86 바이트 ** SHA-256의 경우 ** 62 바이트 ** 만 암호화 할 수 있음을 의미합니다. –

+0

RSA 알고리즘은 모듈러스 결과에 의존하기 때문에 "RSA는 모듈러스보다 다소 작은 길이의 단일 메시지를 암호화합니다"라고 가정합니다. 따라서 규칙이 깨지면 두 개의 서로 다른 메시지가 비슷한 암호문을 생성 할 수 있습니다. 권리? – Yerken