피드로 돌아가기
Dev.toSecurity
원문 읽기
RSA Low-Exponent 취약점을 이용한 m^e < N 조건의 Direct Root 복호화
Crack the Power picoCTF Writeup
AI 요약
Context
RSA 암호화 과정에서 Padding 미적용으로 인해 Plaintext의 거듭제곱 값이 Modulus보다 작은 상태로 유지된 설계 결함 발생. 이로 인해 Modular Reduction이 수행되지 않아 암호문 C가 단순한 정수 거듭제곱 형태인 m^e 상태로 노출된 상황.
Technical Solution
- Ciphertext C와 Modulus N의 자릿수 비교를 통한 No Wrapping 상태 판별
- m^e < N 조건 충족 시 Modular 연산이 무효화됨에 따른 Direct iroot 적용 전략 수립
- gmpy2 라이브러리의 iroot 함수를 통한 정밀한 20제곱근 추출 및 Exact flag 검증
- Ciphertext의 하위 9자리 패턴 분석을 통한 정수 거듭제곱 가능성 사전 식별
- Padding 부재로 인한 Plaintext 크기 축소와 Modulus 크기 간의 불균형을 이용한 복호화 로직 구현
실천 포인트
- RSA 구현 시 OAEP 또는 PKCS#1 v
1.5 Padding을 적용하여 m^e > N 조건을 강제하고 있는지 확인 - Small Public Exponent(e) 사용 시 메시지 길이가 짧을 경우 발생 가능한 Direct Root Attack 가능성 검토 - 암호화 라이브러리 선택 시 정밀도 문제로 인한 Floating-point 오차를 방지하는 gmpy2와 같은 고정밀 연산 도구 활용