RSA 암호화 & 복호화
무료 온라인 RSA 암호화 & 복호화 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.
결과가 여기에 표시됩니다...
입력 → 암호화
Usage Guide
RSA 소개
RSA(Rivest–Shamir–Adleman)는 1977년에 발명된 가장 널리 사용되는 비대칭 암호화 알고리즘입니다. 수학적으로 연결된 키 쌍을 사용합니다: 암호화를 위한 공개 키와 복호화를 위한 개인 키. 보안은 큰 정수를 인수분해하는 계산적 어려움에 기반합니다. RSA는 현대 보안 통신의 기반입니다 — SSL/TLS 인증서, HTTPS, SSH, PGP 및 디지털 서명은 모두 RSA 또는 그 변형에 의존합니다.
사용 단계
이 도구는 RSA 키 쌍 생성, 암호화 및 복호화를 지원합니다:
패딩 방식
RSA는 보안을 위해 패딩 방식이 필요합니다. 이 도구는 두 가지 옵션을 지원합니다:
키 크기 가이드
적절한 RSA 키 크기 선택은 보안과 성능 사이의 균형입니다:
FAQ
Q: RSA가 대용량 파일을 직접 암호화할 수 없는 이유는 무엇인가요?
A: RSA는 키 크기에서 패딩 오버헤드를 뺀 것보다 작은 데이터만 암호화할 수 있습니다. OAEP-SHA256을 사용하는 2048비트 키의 경우 최대 평문은 190바이트에 불과합니다. 대용량 데이터에는 하이브리드 암호화를 사용하세요: 랜덤 AES 키를 생성하고, AES로 데이터를 암호화한 다음, AES 키만 RSA로 암호화합니다.
Q: RSA 암호화와 RSA 디지털 서명의 차이는 무엇인가요?
A: RSA 암호화: 수신자의 공개 키로 암호화; 개인 키만 복호화 가능. 기밀성을 보장합니다. RSA 디지털 서명: 자신의 개인 키로 서명; 공개 키를 가진 누구나 검증 가능. 진위성과 부인 방지를 보장합니다.
Q: 키는 어떤 형식으로 내보내나요?
A: 이 도구는 표준 PEM 형식으로 키를 내보냅니다:
개인 키: PKCS#8 (-----BEGIN PRIVATE KEY-----)
공개 키: SPKI (-----BEGIN PUBLIC KEY-----)
이 형식들은 OpenSSL, Node.js crypto, Python cryptography, Java 및 대부분의 다른 플랫폼에서 직접 가져올 수 있습니다.
Q: 공개 키를 공개적으로 공유해도 안전한가요?
A: 그렇습니다 — 그것이 비대칭 암호화의 핵심입니다. 공개 키는 자유롭게 배포되도록 설계되었습니다. 그러나: 1) 개인 키는 절대 공유하지 마세요. 2) 중간자 공격을 방지하기 위해 신뢰할 수 있는 채널을 통해 공개 키의 진위성을 확인하세요. 3) 주기적으로 키 쌍을 교체하세요.
Q: RSA와 AES 중 언제 무엇을 사용해야 하나요?
A: RSA는 키 교환 및 소규모 비밀에 적합: 느리고 평문 크기가 제한됩니다. AES 는 대용량 데이터 암호화에 적합: 빠르고 어떤 크기도 처리할 수 있습니다. 함께 사용하세요 — AES 키 전송에 RSA, 데이터 암호화에 AES.
Use Cases
권장: AES와의 하이브리드 암호화
랜덤 AES-256-GCM 키를 생성하고, AES로 페이로드를 암호화한 다음, AES 키를 수신자의 RSA 공개 키로 암호화합니다. 이것은 TLS, PGP 및 S/MIME에서 사용되는 패턴입니다.
- ✅ AES 키 암호화에는 RSA-OAEP (SHA-256)
- ✅ 데이터 암호화에는 AES-256-GCM
- ✅ RSA 최소 2048비트; 장기 키에는 4096비트
- ❌ RSA로 대용량 데이터를 직접 암호화하지 마세요
권장: 안전한 비밀 전송
RSA는 신뢰할 수 없는 채널을 통해 소규모 비밀 — 비밀번호, 토큰, 대칭 키 — 을 전송하는 데 적합합니다. OAEP 패딩과 최소 2048비트 키를 사용하세요.
- ✅ OAEP-SHA256 패딩 (권장)
- ✅ 2048비트 또는 4096비트 키 크기
- ✅ 공개 키 진위성 확인 (인증서 또는 지문)
- 💡 2048비트 OAEP-SHA256의 경우 비밀을 190바이트 미만으로 유지
권장: SSL/TLS 키 교환 (참고 정보)
TLS 1.2는 키 교환에 RSA를 사용했습니다. TLS 1.3은 전방 비밀성을 위해 RSA 키 교환을 ECDHE로 대체했지만, RSA 인증서는 여전히 서버 인증에 사용됩니다.
- ✅ TLS 인증서에는 최소 2048비트
- ✅ 루트 CA 인증서에는 4096비트
- ✅ TLS 1.3 선호 (ECDHE 사용, RSA 키 교환 아님)
- 💡 TLS 1.3의 RSA는 인증에만 사용되며 키 교환에는 사용되지 않음
권장: 디지털 서명 (핵심 개념)
RSA 개인 키는 데이터에 서명할 수 있으며, 해당 공개 키가 서명을 검증합니다. 새로운 구현에는 RSA-PSS를 사용하세요; PKCS1v15 서명은 레거시이지만 여전히 널리 지원됩니다.
- ✅ RSA-PSS (현대적, 서명에 권장)
- ✅ PKCS1v15 서명 (레거시, 광범위하게 호환)
- ✅ 먼저 메시지를 해시 (SHA-256 이상)
- 💡 서명은 개인 키로 서명하고 공개 키로 검증 (암호화의 반대)
비권장: 대용량 파일 암호화
RSA는 ~190바이트(2048비트, OAEP-SHA256)보다 큰 데이터를 직접 암호화할 수 없습니다. 대용량 데이터에는 항상 AES 를 사용하고 RSA는 AES 키 보호에만 사용하세요.
- ❌ RSA로 파일이나 대용량 페이로드를 직접 암호화하지 마세요
- ✅ 데이터에는 AES-256-GCM 사용
- ✅ AES 키 암호화에만 RSA-OAEP 사용
- 💡 이 하이브리드 패턴은 모든 주요 보안 프로토콜에서 사용됩니다
비권장: 대칭 방식의 데이터 암호화
RSA는 대칭 암호화보다 현저히 느리며(100~1000배), 엄격한 평문 크기 제한이 있습니다. 대용량 암호화에는 항상 AES 를 선택하세요.
- ❌ 고빈도 또는 대용량 암호화에 RSA를 사용하지 마세요
- ✅ 빠른 인증된 대용량 암호화에는 AES-256-GCM
- ✅ 키 교환이나 소규모 비밀에만 RSA 사용
- 💡 두 세계의 장점을 모두 활용하기 위해 RSA + AES 결합
모범 사례 권장 사항
- 새로운 RSA 암호화 구현에는 항상 OAEP-SHA256 패딩을 사용하세요. PKCS1v15는 레거시이며 Bleichenbacher 스타일 공격에 취약합니다.
- 최소 2048비트 키를 사용하세요; 2030년 이후에도 유효하게 유지할 인증서나 키에는 4096비트를 권장합니다.
- RSA는 ~190바이트(2048비트, OAEP-SHA256)보다 큰 데이터를 암호화할 수 없습니다. 대용량 데이터에는 하이브리드 암호화를 사용하세요: 데이터에는 AES, AES 키에는 RSA.
- 개인 키를 비밀로 유지하고 안전하게 저장하세요. 개인 키가 노출되면 해당 공개 키로 암호화된 모든 메시지가 노출됩니다.
- 디지털 서명에는 PKCS1v15 서명보다 RSA-PSS를 선호하세요.