ECC (P-256) 암호화 & 복호화

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

National Standards
Other
출력

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

입력 암호화

Usage Guide

ECC/ECIES (P-256) 소개

ECC/ECIES(타원 곡선 통합 암호화 방식)는 NIST P-256 곡선을 기반으로 한 하이브리드 비대칭 암호화 방식입니다. ECDH(타원 곡선 디피-헬만) 키 합의와 AES-256-GCM 인증된 대칭 암호화를 결합합니다. ECIES는 단일 작업으로 기밀성, 무결성, 진정성을 제공합니다. 키는 컴팩트합니다 — P-256 개인 키는 32바이트에 불과하며, 동등한 보안을 위해 RSA-2048은 256바이트가 필요합니다.

암호화 알고리즘 — 서명 아님: ECC/ECIES는 데이터를 기밀로 유지하는 암호화 알고리즘입니다. 진정성을 증명하지만 데이터를 암호화하지 않는 서명 알고리즘인 ECDSA 와는 완전히 다릅니다. 수신자의 공개 키를 사용하여 비밀 메시지를 보내야 할 때 ECIES를 사용하세요.

사용 단계

이 도구는 ECIES 키 쌍 생성, 암호화(공개 키 사용), 복호화(개인 키 사용)를 지원합니다:

1. 키 쌍 생성'Generate Key Pair'를 클릭하여 연결된 개인 키/공개 키 쌍을 만듭니다. 두 키 모두 PEM 형식으로 출력됩니다(-----BEGIN PRIVATE KEY----- / -----BEGIN PUBLIC KEY-----).
2. 메시지 암호화'Encrypt' 모드를 선택합니다. 입력 필드에 평문을 입력하고 키 파라미터에 PEM 공개 키를 붙여넣습니다. 'Encrypt'를 클릭하면 임시 공개 키(epk)와 암호문(ct)을 포함하는 JSON 객체가 출력됩니다.
3. 메시지 복호화'Decrypt' 모드를 선택합니다. 입력 필드에 JSON 암호문을 붙여넣고 키 파라미터에 PEM 개인 키를 붙여넣습니다. 'Decrypt'를 클릭하면 원본 평문이 출력됩니다.
4. 개인 키 안전한 저장개인 키를 안전한 곳(비밀번호 관리자, 암호화된 저장소, HSM)에 저장하세요. 공개 키는 자유롭게 공유할 수 있습니다. 개인 키를 분실하면 암호화된 모든 메시지를 복호화할 수 없습니다.
브라우저 전용: 모든 키 생성 및 암호화 작업은 WebCrypto API를 사용하여 브라우저에서 완전히 실행됩니다. 키나 메시지가 서버로 전송되는 일은 없습니다.

출력 형식

ECIES 암호화는 두 필드를 가진 JSON 객체를 생성합니다:

epk (임시 공개 키)66개의 16진수 문자 = 33바이트. 발신자의 일회용 키 쌍의 압축된 P-256 포인트입니다. 수신자는 이것을 자신의 개인 키와 함께 사용하여 ECDH를 통해 공유 비밀을 재구성합니다.
ct (암호문)16진수 문자열. AES-256-GCM으로 암호화된 평문 뒤에 16바이트(32개의 16진수 문자) GCM 인증 태그가 붙습니다. 인증 태그는 암호문의 변조를 감지합니다.
출력 예시{"epk":"02a3f1e2d4c5b6...","ct":"7f8e9d0c1b2a...f3e4d5c6b7a8"}
논스 (IV)12바이트 AES-GCM 논스는 HKDF 키 파생 단계에서 결정론적으로 파생됩니다 — 키 파생에 내장되어 있어 JSON에 별도로 저장할 필요가 없습니다.

ECIES 작동 원리

ECIES는 내부적으로 다음 단계를 수행하는 하이브리드 암호화 방식입니다:

단계 1 — 임시 키 쌍발신자는 각 암호화 작업마다 새로운(임시) P-256 키 쌍을 생성합니다. 이 키 쌍은 한 번만 사용되고 폐기됩니다.
단계 2 — ECDH 키 합의발신자는 ECDH로 공유 비밀을 계산합니다: 공유_비밀 = ECDH(발신자_임시_개인_키, 수신자_공개_키). 수신자도 ECDH(수신자_개인_키, 발신자_임시_공개_키)로 동일한 값을 계산합니다.
단계 3 — HKDF 키 파생공유 비밀은 HKDF-SHA256을 통해 44바이트를 파생합니다: 처음 32바이트가 AES-256-GCM 암호화 키가 되고, 다음 12바이트가 GCM 논스(IV)가 됩니다.
단계 4 — AES-256-GCM 암호화평문은 파생된 키와 논스를 사용하여 AES-256-GCM으로 암호화됩니다. 출력은 암호문과 16바이트 인증 태그의 연결입니다.
단계 5 — 출력임시 공개 키(압축 형식, 33바이트)와 암호문을 16진수 문자열로 인코딩하여 JSON 객체로 반환합니다.
순방향 비밀성: 각 암호화에서 새로운 임시 키 쌍을 사용하기 때문에, 수신자의 장기 개인 키가 미래에 노출되더라도 과거의 암호문은 복호화할 수 없습니다. 이 특성을 순방향 비밀성(완전 순방향 비밀성)이라고 합니다. RSA-OAEP는 순방향 비밀성을 제공하지 않습니다.

FAQ

Q: ECIES와 RSA 암호화의 차이점은 무엇인가요?

A: ECIES와 RSA-OAEP는 모두 비대칭 암호화 방식이지만 몇 가지 중요한 차이점이 있습니다. 키 크기: P-256 개인 키는 32바이트; RSA-2048은 동등한 보안을 위해 256바이트가 필요합니다. 속도: ECIES 작업은 RSA보다 훨씬 빠릅니다. 순방향 비밀성: ECIES는 임시 키 쌍을 통해 순방향 비밀성을 제공하지만 RSA-OAEP는 제공하지 않습니다. 새로운 시스템에서는 일반적으로 비대칭 암호화에 ECIES가 RSA보다 권장됩니다.

Q: 순방향 비밀성이란 무엇이며 왜 중요한가요?

A: 순방향 비밀성(완전 순방향 비밀성, PFS)은 장기 개인 키가 나중에 노출되더라도 과거에 암호화된 메시지는 안전하게 유지됨을 의미합니다. ECIES에서 각 암호화는 사용 후 폐기되는 완전히 새로운 임시 키 쌍을 생성합니다. RSA-OAEP는 수신자의 장기 공개 키를 직접 사용하므로, 개인 키가 노출되면 모든 과거 암호문이 복호화될 수 있습니다.

Q: JSON 출력의 필드는 무슨 의미인가요?

A: ECIES 출력 JSON에는 두 필드가 있습니다: epk(임시 공개 키)는 발신자의 일회용 키 쌍의 압축된 33바이트 P-256 포인트를 나타내는 66개의 16진수 문자입니다. ct(암호문)는 AES-256-GCM으로 암호화된 데이터와 16바이트 GCM 인증 태그를 포함하는 16진수 문자열입니다. 전체 JSON을 보존해야 합니다 — 필드가 수정되거나 잘리면 인증 오류로 복호화에 실패합니다.

Q: 같은 공개 키로 여러 메시지를 암호화할 수 있나요?

A: 네. 동일한 수신자 공개 키로 원하는 만큼 메시지를 암호화할 수 있습니다. 각 암호화는 자동으로 새로운 임시 키 쌍을 생성하므로 각 암호문은 독립적이며 다른 파생 키와 논스를 사용합니다. 논스 재사용 위험이 없습니다.

Q: ECC/ECIES는 양자 컴퓨터에 안전한가요?

A: 아니요. ECIES는 쇼어 알고리즘을 실행하는 충분히 큰 양자 컴퓨터가 풀 수 있는 타원 곡선 이산 대수 문제(ECDLP)에 기반합니다. RSA도 마찬가지입니다. 포스트 양자 비대칭 암호화를 위해 NIST는 ML-KEM(이전 CRYSTALS-Kyber)을 표준화했습니다. ECIES는 오늘날의 고전적 위협 모델에 대한 최선의 실용적 선택입니다.

Use Cases

권장: 엔드투엔드 암호화 메시징

ECIES는 발신자가 수신자의 공개 키를 알고 있는 엔드투엔드 암호화 메시징에 적합합니다. 내장된 순방향 비밀성은 수신자의 개인 키가 나중에 노출되더라도 이전에 보낸 메시지가 보호됨을 의미합니다.

Recommended Configuration:
  • ✅ PEM 공개 키를 발신자에게 배포하세요
  • ✅ PEM 개인 키는 암호화된 저장소 또는 HSM에 보관하세요
  • ✅ 순방향 비밀성이 내장됨 — 각 메시지는 새로운 임시 키 쌍을 사용합니다
  • ❌ 발신자를 포함한 누구와도 개인 키를 공유하지 마세요
권장: 대용량 데이터의 하이브리드 암호화

ECIES는 대용량 파일에 대해 하이브리드 암호화 패턴으로 사용됩니다: ECIES를 사용하여 AES-256-GCM 대칭 키를 안전하게 전송하고, 그 키로 실제 대용량 파일을 암호화합니다. TLS, PGP 및 대부분의 실제 암호화 프로토콜이 이런 방식으로 작동합니다. X25519를 키 교환으로 사용하는 표준화된 하이브리드 암호화 패턴은 HPKE(RFC 9180)를 참조하세요.

Recommended Configuration:
  • ✅ 대칭 데이터 암호화 키(DEK)를 래핑/전송하는 데 ECIES를 사용하세요
  • ✅ 실제 파일 내용에는 AES-256-GCM 또는 ChaCha20-Poly1305를 사용하세요
  • ✅ ECIES로 래핑된 키를 암호화된 파일과 함께 저장하세요
  • ❌ 몇 KB를 초과하는 파일을 ECIES로 직접 암호화하지 마세요
권장: RSA-OAEP 대체

현재 RSA-OAEP를 비대칭 암호화에 사용하는 새로운 시스템에는 P-256 ECIES가 권장되는 현대적 대안입니다. 훨씬 작은 키와 순방향 비밀성이라는 추가 이점을 가진 동등하거나 더 나은 보안을 제공합니다.

Recommended Configuration:
  • ✅ 새로운 비대칭 암호화에는 RSA-OAEP보다 ECIES를 선호하세요
  • ✅ P-256 (ECIES) 키는 RSA-2048 키보다 8배 작습니다
  • ✅ ECIES는 RSA-OAEP가 제공할 수 없는 순방향 비밀성을 추가합니다
  • ❌ 레거시 호환성이 필요하지 않으면 새 시스템에 RSA-OAEP를 유지하지 마세요
권장: API 민감 데이터 안전한 전송

ECIES는 API 요청의 민감한 데이터를 보호할 수 있습니다 — 예를 들어 전송 전에 서버의 공개 키로 사용자의 신용 카드 번호나 개인 데이터를 암호화하는 것입니다. 이는 전송 보안을 넘어선 심층 방어를 제공합니다.

Recommended Configuration:
  • ✅ API 클라이언트에 서버의 PEM 공개 키를 공개하세요
  • ✅ 전송 전에 민감한 필드(PII, 결제 정보)를 암호화하세요
  • ✅ 심층 방어를 위해 TLS와 결합하세요
  • 💡 각 요청은 자동으로 새로운 임시 키를 사용 — 요청별 키 순환 불필요
비권장: 대용량 파일 직접 암호화

ECIES는 짧은 메시지와 키 래핑을 위해 설계되었습니다 — 대용량 파일을 직접 암호화하기 위한 것이 아닙니다. 올바른 패턴은 하이브리드 암호화입니다: 랜덤하게 생성된 AES-256-GCM 키(32바이트)를 ECIES로 암호화하고, 그 AES 키로 실제 파일을 암호화합니다.

Recommended Configuration:
  • ❌ 몇 KB를 초과하는 파일을 ECIES로 직접 암호화하지 마세요
  • ✅ 랜덤 AES-256-GCM 데이터 암호화 키(DEK)를 암호화하는 데 ECIES를 사용하세요
  • ✅ AES-256-GCM으로 파일 내용을 암호화하는 데 DEK를 사용하세요
  • 💡 저장: ECIES 암호화 DEK + AES 암호화 파일 내용을 함께

모범 사례 요약

  • ECC/ECIES는 암호화 알고리즘입니다 — 기밀성을 제공합니다. 서명 알고리즘이 아닙니다. 디지털 서명에는 ECDSA를 사용하세요.
  • 순방향 비밀성이 내장되어 있습니다: 각 암호화는 새로운 임시 키 쌍을 생성하므로 개인 키가 나중에 노출되더라도 과거 암호문은 안전합니다.
  • 대용량 데이터에는 하이브리드 암호화를 사용하세요: 키 래핑에 ECIES, 데이터 자체에는 AES-256-GCM 또는 ChaCha20-Poly1305.
  • 개인 키(PEM 형식)는 비밀로 유지해야 합니다. 공개 키(PEM 형식)는 암호화된 메시지를 보내야 하는 누구에게나 자유롭게 배포할 수 있습니다.

토론 및 피드백

0개의 댓글