RSA 암호화 & 복호화

무료 온라인 RSA 암호화 & 복호화 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.

National Standards
Other
출력

결과가 여기에 표시됩니다...

입력 암호화

Usage Guide

RSA 소개

RSA(Rivest–Shamir–Adleman)는 1977년에 발명된 가장 널리 사용되는 비대칭 암호화 알고리즘입니다. 수학적으로 연결된 키 쌍을 사용합니다: 암호화를 위한 공개 키와 복호화를 위한 개인 키. 보안은 큰 정수를 인수분해하는 계산적 어려움에 기반합니다. RSA는 현대 보안 통신의 기반입니다 — SSL/TLS 인증서, HTTPS, SSH, PGP 및 디지털 서명은 모두 RSA 또는 그 변형에 의존합니다.

비대칭 암호화: 대칭 알고리즘(예: AES)과 달리, RSA는 암호화와 복호화에 서로 다른 키를 사용합니다. 공개 키는 자유롭게 공유할 수 있습니다 — 개인 키 보유자만이 그것으로 암호화된 메시지를 복호화할 수 있습니다.

사용 단계

이 도구는 RSA 키 쌍 생성, 암호화 및 복호화를 지원합니다:

1. 키 크기 선택키 크기를 선택합니다(2048 권장; 높은 보안에는 4096). 키가 클수록 더 안전하지만 느립니다.
2. 키 쌍 생성'키 쌍 생성'을 클릭하여 공개/개인 키 쌍을 만듭니다. 두 키 모두 PEM 형식으로 내보냅니다.
3. 키 저장두 키를 복사하여 안전하게 저장하세요. 개인 키는 비밀로 유지해야 합니다 — 분실하면 영구적으로 복호화가 불가능합니다.
4. 암호화공개 키를 붙여넣고, 평문 메시지를 입력하고, '암호화'를 클릭합니다. 출력은 Base64 인코딩된 암호문입니다.
5. 복호화개인 키를 붙여넣고, Base64 암호문을 입력 필드에 붙여넣고, '복호화'를 클릭하여 평문을 복원합니다.
개인정보 보호: 모든 키 생성 및 암호화 작업은 브라우저에서 완전히 실행됩니다. 키나 평문이 서버로 전송되지 않습니다.

패딩 방식

RSA는 보안을 위해 패딩 방식이 필요합니다. 이 도구는 두 가지 옵션을 지원합니다:

OAEP (권장)SHA-256을 사용하는 Optimal Asymmetric Encryption Padding. 현대 표준 — 확률적, 의미론적으로 안전하며 선택 암호문 공격에 저항합니다. 모든 새 프로젝트에 OAEP를 사용하세요.
PKCS1v15 (레거시)PKCS #1 v1.5 패딩. 구형 시스템에서 광범위하게 지원되지만 Bleichenbacher의 적응형 선택 암호문 공격에 취약합니다. 레거시 시스템과의 호환성을 위해서만 사용하세요.
보안 경고: 새로운 구현에는 항상 OAEP 패딩을 우선 사용하세요. PKCS1v15는 레거시로 간주되며 Bleichenbacher 공격에 취약합니다.

키 크기 가이드

적절한 RSA 키 크기 선택은 보안과 성능 사이의 균형입니다:

1024비트 (약함)더 이상 안전하지 않습니다. 현대 컴퓨팅 자원으로 해독 가능합니다. 새로운 시스템에는 사용하지 마세요.
2048비트 (최소)NIST와 주요 CA가 권장하는 현재 업계 최솟값. ~2030년까지 대부분의 애플리케이션에 충분합니다.
3072비트 (강함)2030년 이후에도 보안이 필요한 시스템에 권장됩니다. AES-128의 보안 수준과 일치합니다.
4096비트 (높은 보안)AES-192 보안 수준과 일치합니다. 장기 키(예: 루트 CA 인증서)에 적합하지만 눈에 띄게 느립니다.
실용적인 권장: 일상 사용 및 단기 키에는 2048비트를 사용하세요. 루트 인증 기관이나 수년간 유효하게 유지할 키에는 4096비트를 사용하세요.

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.

Q: Bleichenbacher 공격이란 무엇이며 왜 중요한가요?

A: Bleichenbacher 공격(1998)은 PKCS1v15 패딩에 대한 적응형 선택 암호문 공격입니다. 공격자는 결국 개인 키 없이 평문을 복원할 수 있습니다. 많은 실제 TLS 구현이 이 공격의 변형에 취약했습니다(ROBOT 공격, 2017). OAEP 패딩은 이 클래스의 공격에 대해 증명 가능하게 안전합니다.

Use Cases

권장: AES와의 하이브리드 암호화

랜덤 AES-256-GCM 키를 생성하고, AES로 페이로드를 암호화한 다음, AES 키를 수신자의 RSA 공개 키로 암호화합니다. 이것은 TLS, PGP 및 S/MIME에서 사용되는 패턴입니다.

Recommended Configuration:
  • ✅ AES 키 암호화에는 RSA-OAEP (SHA-256)
  • ✅ 데이터 암호화에는 AES-256-GCM
  • ✅ RSA 최소 2048비트; 장기 키에는 4096비트
  • ❌ RSA로 대용량 데이터를 직접 암호화하지 마세요
권장: 안전한 비밀 전송

RSA는 신뢰할 수 없는 채널을 통해 소규모 비밀 — 비밀번호, 토큰, 대칭 키 — 을 전송하는 데 적합합니다. OAEP 패딩과 최소 2048비트 키를 사용하세요.

Recommended Configuration:
  • ✅ OAEP-SHA256 패딩 (권장)
  • ✅ 2048비트 또는 4096비트 키 크기
  • ✅ 공개 키 진위성 확인 (인증서 또는 지문)
  • 💡 2048비트 OAEP-SHA256의 경우 비밀을 190바이트 미만으로 유지
권장: SSL/TLS 키 교환 (참고 정보)

TLS 1.2는 키 교환에 RSA를 사용했습니다. TLS 1.3은 전방 비밀성을 위해 RSA 키 교환을 ECDHE로 대체했지만, RSA 인증서는 여전히 서버 인증에 사용됩니다.

Recommended Configuration:
  • ✅ TLS 인증서에는 최소 2048비트
  • ✅ 루트 CA 인증서에는 4096비트
  • ✅ TLS 1.3 선호 (ECDHE 사용, RSA 키 교환 아님)
  • 💡 TLS 1.3의 RSA는 인증에만 사용되며 키 교환에는 사용되지 않음
권장: 디지털 서명 (핵심 개념)

RSA 개인 키는 데이터에 서명할 수 있으며, 해당 공개 키가 서명을 검증합니다. 새로운 구현에는 RSA-PSS를 사용하세요; PKCS1v15 서명은 레거시이지만 여전히 널리 지원됩니다.

Recommended Configuration:
  • ✅ RSA-PSS (현대적, 서명에 권장)
  • ✅ PKCS1v15 서명 (레거시, 광범위하게 호환)
  • ✅ 먼저 메시지를 해시 (SHA-256 이상)
  • 💡 서명은 개인 키로 서명하고 공개 키로 검증 (암호화의 반대)
비권장: 대용량 파일 암호화

RSA는 ~190바이트(2048비트, OAEP-SHA256)보다 큰 데이터를 직접 암호화할 수 없습니다. 대용량 데이터에는 항상 AES 를 사용하고 RSA는 AES 키 보호에만 사용하세요.

Recommended Configuration:
  • ❌ RSA로 파일이나 대용량 페이로드를 직접 암호화하지 마세요
  • ✅ 데이터에는 AES-256-GCM 사용
  • ✅ AES 키 암호화에만 RSA-OAEP 사용
  • 💡 이 하이브리드 패턴은 모든 주요 보안 프로토콜에서 사용됩니다
비권장: 대칭 방식의 데이터 암호화

RSA는 대칭 암호화보다 현저히 느리며(100~1000배), 엄격한 평문 크기 제한이 있습니다. 대용량 암호화에는 항상 AES 를 선택하세요.

Recommended Configuration:
  • ❌ 고빈도 또는 대용량 암호화에 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를 선호하세요.

토론 및 피드백

0개의 댓글