Prologue
그리스 내 교통시스템 프로젝트를 진행하면서 AMKA, Passport 등 민감한 개인정보를 입력받아 전송해야 하는 기능이 필요
초기에는 RSA와 ECC 중 고민했으나, 보다 가벼운 ECC를 사용하기로 결정함.
보안 요구사항 (하이브리드 암호화)
- 서버에서 비대칭 키쌍(공개키/개인키) 생성
- 공개키를 API로 클라이언트에 전달
- 클라이언트는 대칭키(AES 등)를 생성해 폼 데이터 암호화
- 대칭키를 공개키로 암호화
- 암호화된 데이터 + 암호화된 대칭키를 서버로 전송
- 서버는 개인키로 대칭키 복호화, 이후 데이터 복호화 및 처리
👉 ECC 기반 암호화 방식 중 ECIES(Integrated Encryption Scheme) 를 이용하기로 결정.
처음에는 ECIES 자체가 하이브리드 암호화 방식인지 몰랐음… 의사소통을 원활히 하기 위해 기본적인 정의를 우선 학습함.
ECC 기반 암호화 유형
- ECDSA (Elliptic Curve Digital Signature Algorithm)
- 설명: 디지털 서명 생성 및 검증에 사용 → 데이터 무결성과 인증 보장
- 특징: RSA보다 짧은 키 길이로 동일 보안 수준 제공
- 용도: 블록체인(비트코인, 이더리움), 소프트웨어 서명, 인증서
- ECDH (Elliptic Curve Diffie-Hellman)
- 설명: 두 당사자 간 안전한 키 교환 프로토콜
- 특징: 비밀키를 직접 교환하지 않고 안전하게 공유 가능
- 용도: TLS/SSL, VPN, 암호화 통신