EC · ECDSA 키 쌍 생성기 (P-256, secp256k1, Ed25519)

타원곡선 키 쌍을 9가지 곡선(P-256, secp256k1, brainpool, SM2, Ed25519 등)에서 생성 — PEM, JWK, OpenSSH, 원시 바이트로 내보내고 암호로 개인 키를 암호화할 수 있습니다. 100% 브라우저에서 실행되며 업로드되지 않습니다.

EC 키는 작고 빠릅니다 — P-521도 거의 즉시 생성됩니다. 보통은 P-256을 기본으로 쓰고, secp256k1은 비트코인·이더리움이 서명에 쓰는 곡선이며, Ed25519는 요즘 SSH가 쓰는 방식입니다.

암호를 넣으면 개인 키가 암호화된 PEM으로 나옵니다 — PBES2 방식으로 PBKDF2-SHA256(60만 회)와 AES-256-CBC를 씁니다. OpenSSL이나 JOSE 라이브러리에서 같은 암호로 열립니다.

🔒 키는 브라우저의 Web Crypto API로 생성되며 업로드되지 않습니다. 개인 키는 비밀로 보관하고 절대 공유하지 마세요.

이 EC 키 생성기가 하는 일

이 도구는 브라우저에 내장된 Web Crypto API로 타원곡선(ECDSA) 공개 키/개인 키 쌍을 브라우저 안에서 직접 생성합니다. 곡선(P-256, P-384, P-521, secp256k1, brainpool 3종, SM2, Ed25519)을 고르고, 개인 키를 암호화하려면 암호를 넣은 뒤 생성 버튼을 누르면, 공개 키는 SPKI PEM(-----BEGIN PUBLIC KEY-----), 개인 키는 PKCS#8 PEM(-----BEGIN PRIVATE KEY-----)으로 나오고, 두 키의 JSON Web Key(JWK)도 함께 제공됩니다. '다른 형식'을 열면 구형 SEC1 -----BEGIN EC PRIVATE KEY----- 블록, authorized_keys에 붙여 넣는 OpenSSH 공개 키 한 줄과 짝이 되는 openssh-key-v1 개인 키, 그리고 컨테이너 없는 원시 바이트(16진수 또는 base64)까지 나옵니다. 암호를 넣으면 개인 키는 암호화된 PEM(PBES2: PBKDF2-SHA256 60만 회, AES-256-CBC)으로 나옵니다. 각 블록은 클릭 한 번으로 복사하거나 내려받을 수 있습니다. 모두 표준 형식이라 OpenSSL, SSH 도구, JWT/JOSE 라이브러리(ES256, ES384, ES512), TLS 설정, WebAuthn 코드에 그대로 넣을 수 있습니다.

EC와 RSA 비교, 그리고 개인 키 보호

타원곡선 키는 같은 보안 수준에서 RSA보다 훨씬 작고 생성이 빠릅니다 — 256비트 P-256 키는 대략 3072비트 RSA 키에 해당합니다 — 그래서 ECDSA는 TLS, SSH, JWT 서명의 현대적 기본값입니다. 특별한 요구가 없으면 P-256을 쓰세요. 더 큰 여유가 필요하면 P-384·P-521, 비트코인·이더리움이면 secp256k1, SSH면 Ed25519, 국가 표준이 요구하면 brainpool이나 SM2를 고르면 됩니다. 공개 키는 서명을 검증해야 하는 누구에게나 공유해도 안전하지만, 개인 키는 반드시 비밀로 지켜야 합니다 — 이 키를 가진 사람은 누구나 당신 이름으로 서명할 수 있기 때문입니다. 생성은 crypto.subtle.generateKey로 로컬에서 이뤄지므로 개인 키는 어떤 서버로도 전송·기록·저장되지 않고, 복사하기 전까지 브라우저 탭 안에만 존재합니다. Web Crypto는 보안 컨텍스트가 필요하므로 이 생성기는 https 또는 localhost에서 동작합니다. 그래도 브라우저에서 만든 키는 운영용 키가 아닙니다 — 실제 트래픽에 서명하는 키는 개인 키를 꺼낼 수 없는 저장소에서 만들어야 하며, 페이지에도 그렇게 적혀 있습니다.

자주 묻는 질문

어떤 곡선을 생성할 수 있나요?

9가지입니다. P-256, P-384, P-521 — NIST 프라임 곡선으로 각각 secp256r1, secp384r1, secp521r1이며 JWT·JOSE의 ES256, ES384, ES512와 짝을 이룹니다. 비트코인·이더리움이 서명에 쓰는 secp256k1(ES256K), RFC 5639의 brainpoolP256r1·brainpoolP384r1·brainpoolP512r1, 중국 표준 SM2(sm2p256v1), 그리고 요즘 SSH가 쓰는 EdDSA 곡선 Ed25519입니다. 브라우저의 Web Crypto API가 아는 곡선은 이 중 4개뿐이고 나머지 5개는 페이지 안에서 직접 계산하므로, 그 곡선들도 업로드 없이 만들어집니다.

키는 어떤 형식으로 나오나요?

공개 키는 SPKI PEM(-----BEGIN PUBLIC KEY-----), 개인 키는 PKCS#8 PEM(-----BEGIN PRIVATE KEY-----), 두 키의 JWK 객체, 구형 SEC1 -----BEGIN EC PRIVATE KEY----- 블록, authorized_keys용 OpenSSH 공개 키 한 줄과 짝이 되는 openssh-key-v1 개인 키, 그리고 원시 키 바이트(16진수·base64)까지 제공됩니다. 암호를 넣으면 개인 키는 암호화된 PEM(-----BEGIN ENCRYPTED PRIVATE KEY-----)으로 나오며 OpenSSL이나 JOSE 라이브러리에서 같은 암호로 열립니다.

이 키를 운영에 써도 되나요?

개발·테스트·학습용으로만 쓰세요. 브라우저 탭에서 만든 키는 페이지의 확장 프로그램이 읽을 수 있는 자바스크립트를 거치며, 여기서 직접 계산하는 곡선들은 실행 시간이 값에 따라 달라집니다. 실제 트래픽에 서명하는 키는 개인 키를 꺼낼 수 없는 곳 — HSM, 클라우드 KMS, 또는 그 키를 쓸 서버에서 직접 실행한 ssh-keygen — 에서 만드세요.

키가 서버에서 생성되나요?

아니요. 모든 생성은 브라우저의 Web Crypto API로 로컬에서 이뤄집니다. 공개 키와 개인 키는 어떤 서버로도 전송·기록·저장되지 않으며, 브라우저 탭 안에서만 만들어지고 탭을 닫으면 사라집니다.

EC와 RSA 중 무엇을 써야 하나요?

EC(ECDSA) 키는 더 작고 빠르며 TLS, SSH, JWT 서명의 현대적 기본값입니다. 특정 시스템과의 호환이 반드시 필요한 경우에만 RSA를 사용하세요. EC라면 P-256이 강력한 보안 여유를 갖춘 좋은 기본값입니다.