RSA 키 쌍 생성기
브라우저에서 RSA 공개키/개인키 쌍을 생성합니다. PEM, JWK 형식 지원.
모든 키 생성은 브라우저에서 수행되며, 서버로 전송되지 않습니다. 페이지를 떠나면 키는 삭제됩니다.
RSA 키 생성기 — 공개키 암호화의 핵심 도구
RSA(Rivest-Shamir-Adleman)는 1977년 발표된 비대칭 암호 알고리즘으로, 두 개의 큰 소수의 곱을 인수분해하기 어렵다는 수학적 원리에 기반합니다. NIST FIPS 186-5 및 PKCS#1(RFC 8017)에 표준화되어 있으며, TLS 인증서, 디지털 서명, JWT, SSH 인증 등 현대 인프라 보안의 핵심 구성요소입니다. 이 도구는 Web Crypto API를 사용하여 브라우저 내에서 RSA 키 쌍을 생성하며, 키는 서버로 전송되지 않습니다.
키 크기와 안전 강도 — NIST SP 800-57 기준
| RSA 키 길이 | 안전 강도(비트) | NIST 권장 기한 |
|---|---|---|
| 2048 | 112 | ~2030년까지 허용 |
| 3072 | 128 | 2031년 이후 권장 |
| 4096 | ~140 | 장기 보관 데이터용 |
PKCS#1 vs PKCS#8 — 키 인코딩 형식
PKCS#1(RFC 8017)은 RSA 전용 형식으로 -----BEGIN RSA PRIVATE KEY----- 헤더를 사용합니다.PKCS#8(RFC 5958)은 알고리즘 독립적 형식으로 -----BEGIN PRIVATE KEY----- 헤더를 사용하며, 이 도구가 내보내는 기본 형식입니다. 공개키는 SPKI(Subject Public Key Info) 형식으로 내보냅니다. JWK(RFC 7517)는 JSON 구조로 키를 표현하여 웹 API 환경에서 키 교환에 적합합니다.
OpenSSL로 키 확인하기
# PEM 개인키 정보 확인 openssl rsa -in private_key.pem -text -noout # PEM → PKCS#1 변환 openssl rsa -in private_key.pem -traditional -out rsa_key.pem # PEM → DER 변환 openssl rsa -in private_key.pem -outform DER -out key.der # 공개키 추출 openssl rsa -in private_key.pem -pubout -out public_key.pem
JWT RS256 서명 예시 (Node.js)
const jwt = require('jsonwebtoken');
const fs = require('fs');
const privateKey = fs.readFileSync('private_key.pem');
const token = jwt.sign(
{ sub: 'user-123', role: 'admin' },
privateKey,
{ algorithm: 'RS256', expiresIn: '1h' }
);아키텍처별 RSA 키 운영 전략
소규모 프로젝트: PEM 파일을 .gitignore에 등록하고 로컬에서 관리합니다.중규모 팀: AWS KMS, GCP Cloud KMS 등 관리형 키 저장소에 보관하고 IAM으로 접근을 통제합니다.대규모 엔터프라이즈: HSM(Hardware Security Module)에 키를 저장하여 FIPS 140-2 Level 3 이상 물리적 보안을 확보하고, 키 로테이션 정책을 자동화합니다.
보안 베스트 프랙티스
- RSA 2048 비트 미만의 키는 절대 사용하지 마세요 — NIST는 2024년부터 1024비트 키를 완전 폐기했습니다.
- 개인키는 패스프레이즈로 암호화하여 저장하세요 (
openssl rsa -aes256). - RSA-OAEP(RFC 8017)를 사용하세요 — PKCS#1 v1.5 암호화는 Bleichenbacher 공격에 취약합니다.
- 양자 컴퓨팅 대비가 필요한 경우 NIST PQC 표준(ML-KEM, ML-DSA)으로의 전환 로드맵을 준비하세요.
- 키 유효 기간을 설정하고 주기적으로 로테이션하세요 (권장: 1~2년).
관련 도구
대칭 키 암호화가 필요하다면 AES 암호화 도구를 활용하세요. API 서명 검증에는 HMAC 생성기가 유용하며, SSH 접속에 이 키를 활용하려면 SSH Config 생성기로 IdentityFile 경로를 설정하세요.
참고 자료
- NIST FIPS 186-5 — Digital Signature Standard (DSS)
- RFC 8017 — PKCS#1: RSA Cryptography Specifications v2.2
- RFC 7517 — JSON Web Key (JWK)
- NIST SP 800-57 Part 1 — Recommendation for Key Management