Cryptography

ECIES

geunyeong 2021. 8. 24. 20:11

Table of Contents

    Abstract

    ECIES(Elliptic Curve Integrated Encryption Scheme)는 Hybrid Encryption Scheme 중에 하나다. Encryption Scheme이란 쉽게 말해서 데이터를 암호화 해 전송하기 위한 모든 과정을 나타낸 것이다. 예를 들어 임의의 대칭키를 생성하고, 상대의 공개키로 암호화 해 전송한 후, 이를 복호화 해 키 교환 단계를 거치고 서로 합의한 대칭키 암호화 알고리즘을 사용해 데이터를 암호화 해 전송한다. 수신한 데이터의 무결성과 상대에 대한 인증을 위해 해시나 MAC을 곁들일 수도 있다. 이처럼 다양한 암호화 기능을 언제 어떻게 적용할 것인가를 규정한 것이 Encryption Scheme이다.

    ECIES

    ECIES는 ECC 기반의 비대칭키 암호화와 다양한 대칭키 암호 알고리즘, KDF(Key Derivation Function), MAC을 곁들인다. 이들의 결합 개요도는 아래 그림과 같다.

    대략적으로 설명해보면

    1. Ephemeral 비대칭 키 페어를 생성한다.
    2. 메시지를 주고받을 상대방과 키 합의(KA, Key Agreement)를 수행한다.
    3. 상대의 공개키와 내 비밀키를 KDF의 입력 값으로 사용해 암호키와 MAC 키를 생성한다.
    4. Plaintext m을 대칭키 암호화 알고리즘으로 암호화 한다. 이 때 키는 3에서 만든 암호키다.
    5. 암호화된 Encrypted message c를 MAC의 입력 값으로 사용해 MAC Tag를 생성한다. 이 때 키는 3에서 만든 MAC키다.
    6. ECIES를 통해 공개키와 MAC Tag, 암호문이 출력값으로 만들어진다.

    ECIES는 프레임워크다. 즉 ECIES의 각 과정에 사용되는 암호화 알고리즘은 고정되어있지 않다. 플러그인처럼 다른 암호화 알고리즘을 적용할 수 있다. 유일하게 고정되는 것은 타원 곡선(EC, Elliptic Curve) 암호화 알고리즘을 사용한다는 것 뿐인 듯 하다. 공개키를 만드는데 secp256k1이나 P-521을 사용해도 되고, KDF로 PBKDF2나 Scrypt, 대칭키 암호화 알고리즘으로 AES-CTR, AES-GCM을 사용해도 되고, MAC Tag를 만드는데 HMAC-SHA512 등을 사용할 수도 있다.

    Close

    ECIES에 대한 한글 자료가 많지 않아 간단하게라도 정리해보고자 글을 작성하게 되었다. 그리 어렵지 않은 개념이라 많지 않은 건가 싶기도 하다. 사실상 여기 내용을 간단하게 번역한 수준밖에 안되는 게 아쉽다. 틀린 내용이나 보충할 내용은 차차 추가하도록 하겠다.