MODOO HUB ← 모두의 툴
Security · Instrument

RSA 키 생성기

RSA 공개키·개인키 쌍을 PEM 형식으로 생성

공개키 (Public Key) Copy
개인키 (Private Key) Copy

📖 RSA 공개지수 65537의 의미와 PKCS#8 vs PKCS#1 포맷 함정 가이드 보기

RSA 키 생성기란?

RSA 공개키/개인키 쌍을 브라우저 Web Crypto API(crypto.subtle.generateKey)로 생성합니다. 공개키는 X.509 SubjectPublicKeyInfo(SPKI), 개인키는 PKCS#8 형식의 DER을 Base64로 인코딩해 PEM으로 감쌉니다. 공개 지수(public exponent)는 65537(0x010001, 216+1)로 고정되어 있는데, 암호화·서명 검증 속도와 저지수 공격 방어 사이의 표준적인 절충값입니다. 키가 서버로 전송되지 않아 SSH, JWT, TLS 인증서, 코드 서명 등에 안전하게 활용할 수 있습니다. 2048비트와 4096비트를 지원합니다.

자주 묻는 질문

RSA 키 쌍이란?

공개키(암호화/검증)와 개인키(복호화/서명)의 쌍입니다. 공개키는 공개해도 되지만 개인키는 안전하게 보관해야 합니다.

2048비트 vs 4096비트?

4096비트가 이론적으로 더 강하지만 키 생성·서명·복호화 연산이 여러 배 느려집니다. NIST는 2030년까지 2048비트를 안전하다고 권고하며, TLS 인증서를 포함한 대부분의 현대 시스템에서 2048비트로 충분합니다.

PEM 형식이란?

Privacy-Enhanced Mail의 약자로, Base64로 인코딩한 DER 바이너리에 "-----BEGIN ...-----" 헤더/푸터를 씌운 텍스트 형식입니다. 이 도구는 공개키를 X.509 SPKI, 개인키를 PKCS#8 형식의 DER로 export한 뒤 64자마다 줄바꿈해 PEM으로 감쌉니다.

생성된 키는 서버로 전송되나요?

아니요. 브라우저 Web Crypto API로만 처리됩니다. 네트워크 요청이 발생하지 않습니다.

서명용과 암호화용 차이는?

서명용(RSASSA-PKCS1-v1_5)은 JWT RS256, 코드 서명에 쓰이고, 암호화용(RSA-OAEP)은 데이터 자체를 암호화합니다. 단 RSA-OAEP는 평문 길이가 (키 크기/8 − 2×해시길이 − 2)바이트를 넘으면 암호화할 수 없어(2048비트+SHA-256 기준 최대 190바이트), 실무에서는 대칭키(AES)만 RSA로 암호화하는 하이브리드 방식으로 주로 사용됩니다.

OpenSSL 명령어로 동일한 작업은?

OpenSSL 3.x 기준으로는 openssl genrsa -out private.pem 2048 && openssl rsa -in private.pem -pubout -out public.pem 명령이 이 도구와 동일한 PKCS#8 "-----BEGIN PRIVATE KEY-----" 형식을 생성합니다. 다만 OpenSSL 1.x나 -traditional 옵션에서는 같은 명령이 예전 PKCS#1 "-----BEGIN RSA PRIVATE KEY-----" 형식을 만드므로, 버전에 상관없이 형식을 맞추려면 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem을 사용하세요.

SSH 키와 RSA 키의 차이?

SSH는 OpenSSH 전용 포맷(.pub 파일, "ssh-rsa AAAA..." 형태)을 사용하며, 이 도구는 표준 PKCS#8/SPKI PEM 형식을 생성합니다. SSH에서 쓰려면 별도 변환(예: ssh-keygen -i)이 필요합니다.

JWT에 RSA를 사용하려면?

RS256 알고리즘은 RSASSA-PKCS1-v1_5 + SHA-256을 사용합니다. 서명용으로 생성한 키의 개인키로 서명(sign)하고, 공개키로 검증(verify)하세요.