RSA 계산기 - 공개 키 암호화 및 복호화 도구
RSA 키 쌍을 생성하고 숫자 메시지를 암호화·복호화하세요. 공개 키 암호학과 수론을 배우기 위한 대화형 도구입니다.
서로 다른 두 소수(p와 q), 공개 지수(e), 선택 사항인 평문 숫자를 입력해 RSA 알고리즘으로 암호화와 복호화를 수행합니다.
RSA 계산기 - 공개 키 암호화 및 복호화 도구
RSA 키 쌍을 생성하고 숫자 메시지를 암호화·복호화하세요. 공개 키 암호학과 수론을 배우기 위한 대화형 도구입니다.
RSA 계산기 소개
RSA(Rivest–Shamir–Adleman)는 전 세계에서 가장 널리 배포된 공개 키 암호 시스템입니다. HTTPS, 이메일 암호화, 디지털 서명, 안전한 소프트웨어 배포를 뒷받침합니다. RSA를 이해하려면 소인수분해, 모듈러 산술, 오일러 피 함수라는 세 가지 수론 개념에 익숙해야 하며, 이 계산기는 그 개념들을 대화형으로 직접 확인할 수 있게 해 줍니다.
RSA 키 생성 과정은 서로 다른 두 큰 소수 p와 q를 선택하는 것에서 시작합니다. 학습 목적상 이 도구는 작은 소수를 사용하지만, 실제 RSA 구현은 수천 자리의 소수를 사용합니다. 모듈러스 n은 n = p × q로 계산됩니다. 다음으로 오일러 피 함수 φ(n) = (p − 1)(q − 1)을 계산합니다. 공개 지수 e는 1 < e < φ(n)이고 gcd(e, φ(n)) = 1이 되도록 선택해야 합니다. 가장 흔한 선택은 3, 17, 65,537(페르마 소수)이며, 65,537은 사실상 모든 프로덕션 시스템에서 사용됩니다. 개인 지수 d는 φ(n)을 법으로 하는 e의 모듈러 곱셈 역원이며, 확장 유클리드 알고리즘으로 d ≡ e⁻¹ (mod φ(n))를 구합니다.
암호화는 공개 키(e, n)로 수행됩니다. 암호문 C = Mᵉ mod n이며, M은 평문 정수입니다. 복호화는 개인 키(d, n)를 사용합니다. 평문 M = Cᵈ mod n입니다. RSA의 보안성은 큰 n을 그 소인수 p와 q로 분해하는 일이 실제로 불가능하다는 점에 기반합니다. 이 문제를 해결하는 고전적인 다항 시간 알고리즘은 알려져 있지 않습니다.
이 RSA 계산기는 프로덕션 보안이 아니라 학습을 위해 설계되었습니다. JavaScript BigInt로 정확한 정수 산술을 수행하므로 브라우저가 처리할 수 있는 어떤 소수 입력에 대해서도 수학적으로 올바른 결과를 제공합니다. 하지만 현실의 안전한 시스템에는 최소 2,048비트 소수, 적절한 패딩 방식(OAEP), 암호학적으로 안전한 난수 생성기가 필요하며, 이 교육용 도구는 이를 제공하지 않습니다.
이 계산기의 일반적인 사용 사례로는 암호학과 수론에 관한 컴퓨터 과학 과제, RSA 키 생성의 손계산 검증, e의 작은 변화나 p와 q의 선택이 개인 키 d에 미치는 영향 탐구, 그리고 n의 인수분해가 RSA 보안의 핵심 난제인 이유에 대한 직관 형성이 있습니다.
계산기를 사용하려면 p와 q에 서로 다른 두 소수를 입력하고, φ(n)과 서로소인 공개 지수 e를 선택한 뒤, 선택적으로 n보다 작은 숫자 메시지를 입력하고 생성 버튼을 클릭하세요. 도구는 즉시 n, φ(n), d, 암호화 및 복호화 값을 보여 주므로 복호화가 원래 메시지를 복원하는지 확인할 수 있습니다.
RSA 계산기 예제
작은 소수로 키 생성과 메시지 암호화를 보여 주는 세 가지 풀이 예제입니다.
| 입력(p, q, e, M) | 주요 결과 | 참고 |
|---|---|---|
| p=61, q=53, e=17, M=65 | n=3233, φ=3120, d=2753, C=2790, M′=65 | 고전적인 교과서 예제입니다. n=3233, φ(n)=3120. d=17⁻¹ mod 3120 = 2753. 65 암호화: 65¹⁷ mod 3233 = 2790. 복호화: 2790²⁷⁵³ mod 3233 = 65 ✓ |
| p=7, q=11, e=13, M=5 | n=77, φ=60, d=37, C=26, M′=5 | 손으로 검증하기 좋은 작은 소수입니다. φ(77)=60, gcd(13,60)=1 ✓. d=13⁻¹ mod 60=37. 5 암호화: 5¹³ mod 77=26. 26³⁷ mod 77=5 복호화 ✓ |
| p=17, q=19, e=5, M=88 | n=323, φ=288, d=173, C=200, M′=88 | 중간 규모 예제입니다. φ(323)=288, gcd(5,288)=1 ✓. d=5⁻¹ mod 288=173. 88 암호화: 88⁵ mod 323=200. 200¹⁷³ mod 323=88 복호화 ✓ |
RSA 계산기 사용 방법
- '소수 p'와 '소수 q' 필드에 서로 다른 두 소수를 입력합니다. 61과 53처럼 잘 알려진 작은 소수로 시작하면 고전 예제를 확인할 수 있습니다.
- 1보다 크고 φ(n) = (p−1)(q−1)보다 작으며 φ(n)과 서로소인 공개 지수 e를 입력합니다. 일반적인 선택은 3, 17, 65537입니다.
- 선택적으로 메시지 필드에 n(p × q)보다 작은 숫자 평문 메시지 M을 입력합니다.
- '키 생성 및 암호화'를 클릭합니다. 계산기는 모듈러스 n, 피 함수 φ(n), 개인 키 d, 그리고 메시지를 입력했다면 암호문 C와 복호화된 M′를 보여 줍니다.
- 복호화된 값 M′가 원래 메시지 M과 일치하는지 확인하여 RSA 왕복 과정이 올바르게 작동하는지 검증합니다.
RSA 계산기 FAQ
RSA에서 p, q, n, e, d는 무엇인가요?
p와 q는 사용자가 선택하는 서로 다른 두 소수입니다. n = p × q는 공개 모듈러스입니다. e는 공개 지수로 공개됩니다. d는 비밀로 보관되는 개인 지수입니다. (e, n) 쌍은 공개 키이고, (d, n) 쌍은 개인 키입니다. 누구나 (e, n)으로 메시지를 암호화할 수 있지만, d를 가진 사람만 복호화할 수 있습니다.
왜 e는 φ(n)과 서로소여야 하나요?
개인 키 d는 φ(n)을 법으로 하는 e의 모듈러 역원입니다. 모듈러 역원은 gcd(e, φ(n)) = 1, 즉 공통 인수가 없을 때만 존재합니다. e가 φ(n)과 인수를 공유하면 유효한 d가 존재하지 않아 RSA 키 생성이 실패합니다.
왜 메시지 M은 n보다 작아야 하나요?
RSA 암호화는 Mᵉ mod n입니다. M ≥ n이면 모듈러 감소 과정에서 정보가 손실됩니다. 서로 다른 두 메시지가 같은 암호문을 만들 수 있어 복호화가 모호해집니다. 실제 RSA 구현은 OAEP로 메시지를 패딩하여 이 제약이 항상 만족되도록 합니다.
이 RSA 계산기는 실제 사용에 안전한가요?
아니요. 이 도구는 교육 목적 전용입니다. 프로덕션 RSA에는 최소 2,048비트(대략 617개의 십진수 자릿수) 소수, 암호학적으로 안전한 무작위 소수 생성, OAEP 같은 패딩 방식이 필요합니다. 작은 소수는 쉽게 인수분해되므로 실제 데이터를 보호하는 데 절대 사용하면 안 됩니다.
오일러 피 함수 φ(n)은 무엇인가요?
오일러 피 함수 φ(n)은 1부터 n까지의 정수 중 n과 서로소인 수의 개수를 셉니다. n = p × q이고 p와 q가 서로 다른 소수라면 φ(n) = (p − 1)(q − 1)입니다. 이 값은 키 관계 d ≡ e⁻¹ (mod φ(n))가 성립하는 군을 정의하므로 RSA의 핵심입니다.
RSA 복호화는 개인 키가 작동한다는 것을 어떻게 증명하나요?
오일러 정리에 따르면 n과 서로소인 임의의 M에 대해 M^φ(n) ≡ 1 (mod n)입니다. e × d ≡ 1 (mod φ(n))이므로 (Mᵉ)ᵈ = M^(ed) = M^(1 + k·φ(n)) = M × (M^φ(n))^k ≡ M × 1^k = M (mod n)입니다. 따라서 M < n이면 복호화는 항상 원래 메시지를 복원합니다.