Cryptology Academy · 강의

교과서적 RSA와 안전하지 않은 이유

가변성, 작은 지수 공격, e=3 취약점을 직접 확인합니다.

레슨 1/413개 단계

교과서적 RSA와 안전하지 않은 이유은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

교과서적 RSA(원시 모듈러 지수 연산)에는 여러 가지 치명적인 취약점이 있습니다. 이 레슨에서는 각 공격을 살펴보고 패딩이 선택 사항이 아닌 이유를 이해합니다.

결정성 공격

교과서적 RSA는 결정적입니다. Enc(M)은 항상 동일한 C를 생성합니다. 공격자는 후보 메시지를 암호화한 뒤 대상 암호문과 비교할 수 있습니다. 이 공격은 메시지 공간이 작은 경우 기밀성을 무너뜨립니다.

변조 가능성

RSA는 곱셈에 대해 변조 가능합니다. Enc(M1) × Enc(M2) = Enc(M1×M2) mod n입니다. 공격자는 암호문에 Enc(2) = 2^e를 곱하여 키를 몰라도 평문이 두 배가 되도록 만들 수 있습니다.

소규모 메시지 공격(e=3)

e=3이고 M < n^(1/3)이면 C = M^3 mod n = M^3입니다(모듈러 감소가 일어나지 않음). C의 세제곱근을 구하면 M을 직접 얻을 수 있습니다. 항상 패딩된 RSA를 사용하고 M이 충분히 큰지 확인해야 합니다.

Coppersmith 공격

Coppersmith는 e=3이고 공격자가 M의 큰 부분(예: M = YYYY-MM-DD...[알 수 없는 부분])을 알고 있다면 다항식 인수분해로 알려지지 않은 비트를 복구할 수 있음을 보였습니다. 짧게 패딩된 평문은 취약합니다.

Håstad 브로드캐스트 공격

같은 M이 e=3을 사용하는 세 수신자에게 전송되면 CRT에 따라 C1,C2,C3가 M^3 mod (n1×n2×n3)를 결정합니다. 세제곱근을 직접 구하면 M을 얻을 수 있습니다. e=3으로 동일한 평문을 여러 수신자에게 암호화해서는 안 됩니다.

Franklin-Reiter 관련 메시지 공격

두 메시지 M1과 M2가 선형적으로 관련되어 있고(M2 = aM1+b) 같은 키로 둘 다 암호화되면, 이 관계를 이용하여 M1과 M2를 복구할 수 있습니다. 무작위 바이트로 패딩하면 이를 방지할 수 있습니다.

공통 모듈러 공격

두 서버가 n을 공유하지만 서로 다른 e1,e2를 사용하고 GCD(e1,e2)=1이며 둘 다 같은 M을 암호화한다면, 확장 유클리드 알고리즘을 사용하여 M을 복구할 수 있습니다. 여러 주체 간에 모듈러를 공유해서는 안 됩니다.

RSA 복호화 타이밍 공격

RSA 복호화 시간은 개인 키 비트에 따라 달라집니다(제곱-곱셈 연산이 비트에 따라 달라짐). Kocher는 1996년 타이밍 공격에서 복호화 시간을 측정하여 개인 키를 복구했습니다. 해결 방법은 블라인딩입니다.

RSA 블라인딩 방어

복호화 전에 C' = C × r^e mod n을 계산합니다(무작위 블라인딩 인자 r^e를 곱함). M' = C'^d mod n을 계산합니다. M = M' × r^(-1) mod n을 계산합니다. 이제 타이밍은 M이 아니라 r에 따라 달라지므로 공격자는 잡음이 섞인 측정값만 볼 수 있습니다.

근본적인 해결책: 무작위 패딩

모든 교과서적 RSA 공격에는 공통된 해결책이 있습니다. 바로 무작위 패딩입니다. PKCS#1 v1.5는 무작위성을 추가했고 OAEP는 증명 가능한 보안을 추가했습니다. 적절한 패딩을 사용하면 위의 공격은 어느 것도 작동하지 않습니다.

빠른 확인

공격자가 암호문에 특정 메시지가 들어 있는지 테스트할 수 있게 하는 교과서적 RSA의 속성은 무엇입니까?

복습

교과서적 RSA는 위험할 정도로 안전하지 않습니다. 다음에는 PKCS#1 v1.5 패딩의 설계와 사용법, 그리고 이를 무너뜨린 Bleichenbacher 공격을 살펴봅니다.
무료로 시작

AI 튜터와 함께 Cryptology Academy을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
67
레슨
261

자주 묻는 질문

“교과서적 RSA와 안전하지 않은 이유” 강의는 무료인가요?

네 — “교과서적 RSA와 안전하지 않은 이유” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“교과서적 RSA와 안전하지 않은 이유”에서 뭘 배우나요?

가변성, 작은 지수 공격, e=3 취약점을 직접 확인합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“교과서적 RSA와 안전하지 않은 이유” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 교과서적 RSA와 안전하지 않은 이유
  2. PKCS#1 v1.5 패딩과 Bleichenbacher 공격
  3. OAEP: 최적 비대칭 암호화 패딩
  4. 전자 서명을 위한 RSA-PSS
← Cryptology Academy(으)로 돌아가기