EdDSA (Ed25519) 암호화 & 복호화
무료 온라인 EdDSA (Ed25519) 암호화 & 복호화 도구. 100% 로컬 처리 — 데이터가 기기를 벗어나지 않습니다.
결과가 여기에 표시됩니다...
입력 → 암호화
Usage Guide
EdDSA (Ed25519) 소개
EdDSA(Edwards 곡선 디지털 서명 알고리즘)는 Curve25519를 사용하는 현대적인 고성능 디지털 서명 방식으로, RFC 8032에서 표준화되었습니다. SSH(OpenSSH 기본값)의 기본 서명 알고리즘이며, TLS 1.3 클라이언트 인증서, GPG 서브키, 암호화폐 지갑(Solana, Cardano), JWT 서명에 널리 사용됩니다. Ed25519는 놀랍도록 작은 키(각 32바이트)와 뛰어난 성능(초당 약 100,000회의 서명/검증 작업)으로 128비트 보안을 제공합니다.
사용 단계
이 도구는 Ed25519 키 쌍 생성, 메시지 서명, 서명 검증을 지원합니다:
키 형식
이 도구의 Ed25519 키는 간결한 16진수 형식을 사용합니다:
Ed25519 vs RSA
Ed25519와 RSA는 모두 디지털 서명에 사용되지만 특성이 매우 다릅니다:
FAQ
Q: EdDSA와 ECDSA의 차이점은 무엇인가요?
A: 둘 다 타원 곡선 서명 알고리즘이지만 중요한 점에서 다릅니다. ECDSA(NIST 곡선 P-256, P-384 사용)는 서명당 임의의 nonce(k)가 필요합니다 — nonce가 재사용되거나 약하면 개인 키를 완전히 복구할 수 있습니다. 2010년 Sony PlayStation 3 개인 키가 바로 이 방법으로 추출되었습니다. EdDSA는 개인 키와 메시지 해시에서 결정론적으로 도출된 nonce를 사용하여 수학적으로 nonce 재사용을 불가능하게 합니다. EdDSA는 또한 특정 사이드 채널 공격에 저항하도록 설계된 더 안전한 Twisted Edwards 곡선(Ed25519용 Curve25519)을 사용합니다. 새로운 구현에서는 EdDSA가 ECDSA보다 강력히 권장됩니다.
Q: 결정론적 서명이 왜 더 안전한가요?
A: ECDSA에서 각 서명의 보안은 신선하고 암호학적으로 무작위인 nonce에 의존합니다. 공격자가 동일한 nonce를 사용한 두 서명을 얻는다면(nonce 재사용), 또는 nonce의 엔트로피가 부족하다면(약한 무작위성), 간단한 방정식을 사용하여 개인 키를 대수적으로 복구할 수 있습니다. 이는 이론적인 것이 아닙니다 — 실제 시스템을 파괴했습니다(PS3, 비트코인 지갑). Ed25519의 결정론적 서명은 개인 키 시드와 메시지의 해시에서 nonce를 도출하므로 항상 고유하며 외부 무작위성 소스의 영향을 받을 수 없습니다. 서명 경로에 난수 생성기가 없습니다 — 취약점의 전체 범주를 제거합니다.
Q: EdDSA로 데이터를 암호화할 수 있나요?
A: 아니요. EdDSA(Ed25519)는 디지털 서명 알고리즘만입니다 — 데이터를 암호화하거나 복호화할 수 없습니다. 서명은 진위성을 증명합니다(누가 메시지를 만들었는지)하지만 기밀성을 제공하지 않습니다(누구든지 메시지를 읽을 수 있습니다). 데이터를 암호화하려면 ChaCha20-Poly1305 또는 AES-256-GCM 같은 대칭 암호를 사용하세요. 참고: X25519(Curve25519 기반의 관련되었지만 다른 알고리즘)는 키 교환(Diffie-Hellman)에 사용할 수 있지만 Ed25519와 동일하지 않으며 키가 호환되지 않습니다.
Q: Ed25519 SSH 키를 어떻게 생성하나요?
A: OpenSSH의 내장 키 생성 도구를 사용하세요:ssh-keygen -t ed25519 -C "your_email@example.com"
이렇게 하면 ~/.ssh/id_ed25519(개인 키)와 ~/.ssh/id_ed25519.pub(공개 키)가 생성됩니다. Ed25519는 OpenSSH 6.5(2014년) 이후 권장되는 SSH 키 유형이며 현재 대부분의 배포판에서 기본값입니다. OpenSSH에서 생성된 키는 이 도구의 16진수 형식과 다른 인코딩(PEM/OpenSSH 형식)을 사용하지만 동일한 암호화 알고리즘을 기반으로 합니다.
Q: 64바이트 Ed25519 서명에는 무엇이 들어 있나요?
A: Ed25519 서명은 두 개의 32바이트 값으로 구성됩니다: R(결정론적 nonce에서 도출된 압축 타원 곡선 포인트)과 S(nonce, 개인 키, 메시지 해시에서 계산된 스칼라 값). R과 S가 합쳐져 64바이트 서명을 형성합니다. 검증은 공개 키, 메시지, S를 사용하여 R을 재구성하고 서명의 R과 일치하는지 확인합니다. 전체 검증은 Curve25519에서의 빠른 체 산술만 포함합니다 — RSA처럼 모듈러 지수 연산이 없습니다.
Q: Ed25519는 양자 컴퓨터에 내성이 있나요?
A: 아니요 — 충분히 강력한 양자 컴퓨터에 대해서는 그렇지 않습니다. Shor 알고리즘을 실행하는 양자 컴퓨터는 타원 곡선에서 이산 로그 문제를 해결함으로써 Ed25519를 깰 수 있습니다. RSA와 ECDSA에도 동일한 위협이 적용됩니다. 그러나 128비트 타원 곡선 보안을 깰 수 있는 양자 컴퓨터는 매우 낮은 오류율을 가진 수천 개의 논리 큐비트가 필요합니다 — 현재 기술을 훨씬 넘어섭니다. 포스트 양자 서명을 위해 NIST는 ML-DSA(이전 CRYSTALS-Dilithium)와 SLH-DSA(SPHINCS+)를 표준화했습니다. Ed25519는 고전적 위협 모델에 대한 최선의 실용적 선택이며 오늘날 프로덕션 시스템에서 널리 배포되고 있습니다.
Use Cases
권장: SSH 인증 키
Ed25519는 OpenSSH 6.5 이후 권장되는 SSH 키 유형이며 현재 대부분의 Linux 배포판과 macOS에서 기본값입니다. RSA-2048에 비해 Ed25519 SSH 키는 훨씬 짧고(68자 vs 400+), 더 빠르게 생성되고, 더 빠르게 인증되며, 약한 무작위성 공격에 취약하지 않습니다. 모든 새 SSH 키에 ssh-keygen -t ed25519를 사용하세요. 서버의 ~/.ssh/authorized_keys에 공개 키를 추가하세요.
- ✅ 새 SSH 키에 ssh-keygen -t ed25519 사용
- ✅ 강력한 패스프레이즈로 개인 키 보호
- ✅ 서버에 공개 키 자유롭게 배포
- ❌ RSA-1024 사용 금지; RSA-2048보다 Ed25519 선호
권장: 코드 서명 및 소프트웨어 배포
Ed25519는 소프트웨어 릴리즈, 컨테이너 이미지, 펌웨어 업데이트에 서명하기에 이상적입니다. 결정론적 서명 속성은 동일한 버전이 항상 동일한 서명을 생성하도록 보장합니다 — 재현 가능한 빌드 검증을 신뢰할 수 있게 합니다. Sigstore, minisign, signify 같은 도구들이 Ed25519를 사용합니다. GPG는 Ed25519 서명 서브키를 지원합니다. 콤팩트한 64바이트 서명은 메타데이터나 매니페스트 파일에 쉽게 내장할 수 있습니다.
- ✅ Ed25519로 릴리즈 아티팩트와 체크섬에 서명
- ✅ 간단한 파일 서명에 minisign 또는 signify 사용
- ✅ 릴리즈 아티팩트와 함께 서명 파일 포함
- ❌ 암호화 서명 없이 소프트웨어 배포 금지
권장: JWT 서명 (EdDSA 알고리즘)
JSON Web Token(JWT)은 EdDSA 알고리즘 식별자(RFC 8037)를 통해 Ed25519를 지원합니다. JWT에 EdDSA를 사용하는 것은 HMAC-SHA256(비밀 키 공유 필요)보다 안전하고 RS256(RSA)보다 효율적입니다. 서버는 Ed25519 개인 키로 토큰에 서명하고, 클라이언트와 리소스 서버는 공개 키로 검증합니다. 이를 통해 상태 비저장, 확장 가능한 인증이 가능합니다 — 인증 서버와 리소스 서버 간에 공유 비밀이 필요하지 않습니다.
- ✅ 새 프로젝트의 JWT에 EdDSA(Ed25519) 사용
- ✅ /.well-known/jwks.json 엔드포인트에 공개 키 게시
- ✅ 서명 키 주기적으로 교체
- ❌ 여러 서비스가 검증해야 할 때 HS256(대칭) 사용 금지
권장: API 요청 인증
Ed25519는 요청 페이로드(메서드 + 경로 + 타임스탬프 + 본문 해시)에 개인 키로 서명하여 API 요청을 인증할 수 있습니다. API 서버는 클라이언트의 등록된 공개 키를 사용하여 서명을 검증합니다. 이는 개인 키가 클라이언트를 떠나지 않기 때문에 API 키(유출될 수 있는 비밀)보다 더 안전합니다. HMAC-SHA256 과 비교하여 서버가 비밀을 저장할 필요가 없습니다 — 서버가 침해되어도 모든 클라이언트가 영향을 받지 않습니다.
- ✅ 재생 공격 방지를 위해 타임스탬프 포함한 요청 페이로드 서명
- ✅ 서버 측에 클라이언트 공개 키 등록(비밀 공유 불필요)
- ✅ 서버가 클라이언트 비밀을 알아서는 안 될 때 HMAC보다 Ed25519 사용
- 💡 서명된 페이로드에 nonce 또는 타임스탬프 포함
허용 가능: 암호화폐 지갑 서명
Ed25519는 Solana, Cardano, Stellar, Near Protocol을 포함한 여러 암호화폐의 기본 서명 알고리즘입니다. 지갑 주소는 Ed25519 공개 키에서 파생됩니다. 트랜잭션은 해당 개인 키로 서명됩니다. 이것은 합법적이고 중요한 사용 사례이지만, 암호화폐 개인 키는 특별히 신중한 보관(하드웨어 지갑, 보안 엔클레이브)이 필요합니다 — 분실되거나 도난당한 개인 키는 자금의 영구적인 손실을 의미합니다.
- ✅ 고가치 키에는 하드웨어 지갑(Ledger, Trezor) 사용
- ✅ 시드 문구를 안전한 오프라인 스토리지에 백업
- ❌ 암호화폐 개인 키를 일반 텍스트 파일에 저장 금지
- ❌ 프로덕션 지갑 키에 이 브라우저 도구 사용 금지
권장하지 않음: 데이터 암호화
Ed25519는 데이터를 암호화할 수 없습니다 — 암호화에 사용하려는 시도는 알고리즘의 근본적인 오용입니다. Ed25519는 서명 알고리즘입니다: 메시지를 받아 진위성을 증명하는 서명을 생성합니다. 메시지를 암호문으로 변환하지 않습니다. 기밀 통신을 위해 ChaCha20-Poly1305 또는 AES-256-GCM 을 사용하세요. 비대칭 암호화가 필요한 경우 RSA 를 사용하세요.
- ❌ 데이터 암호화에 Ed25519 사용 금지
- ✅ 대칭 암호화에 AES-256-GCM 또는 ChaCha20-Poly1305 사용
- ✅ 비대칭 암호화에 RSA-OAEP 사용
- 💡 서명 ≠ 암호화 — 서로 다른 보안 목표를 위함
모범 사례 요약
- Ed25519는 서명 알고리즘입니다 — 진위성을 증명하지만 암호화하지 않습니다. 기밀성을 위해 AES-256-GCM 또는 ChaCha20-Poly1305를 사용하세요.
- 모든 새로운 서명 사용 사례에서 RSA와 ECDSA보다 Ed25519를 선호하세요: 더 작은 키, 더 빠른 작업, 결정론적 서명.
- 개인 키(64자리 16진수)는 비밀로 유지해야 합니다. 공개 키(64자리 16진수)는 자유롭게 배포할 수 있습니다.
- '메시지|서명_Base64' 입력 형식을 사용하여 서명을 검증하세요. 파이프 구분자가 필요합니다.
- SSH에는 ssh-keygen -t ed25519를 사용하세요. Ed25519는 OpenSSH, NIST, 주요 보안 지침이 권장하는 현대 표준입니다.