검수요청.png검수요청.png

타원곡선암호

해시넷
218.146.11.129 (토론)님의 2019년 8월 5일 (월) 13:32 판 (ECC의 안정성)
이동: 둘러보기, 검색

타원곡선암호(ECC; Elliptic Curve Cryptography)는 타원곡선을 기반으로 한 암호방식으로, 대표적인 공개키 방식 중 하나이다.[1] 타원곡선암호 기술은 기존 RSA 암호방식에 대한 대안으로 1985년도에 제안된 방식이다. 비트코인이 타원곡선암호 기술 방식에 속하는 ECDSA(Elliptic Curve Digital Signature Algorithm) 암호 알고리즘을 사용하고 있다.[2]

개요

타원 곡선의 그래프

타원곡선암호는 타원곡선 군의 연산에서 정의되는 이산대수 문제의 어려움의 이용을 기초로 하는 공개키 암호 알고리즘 시스템으로서 RSA/DSA와 같은 공개키 암호보다 짧은 키 길이와 빠른 연산속도를 가지면서 동일한 수준의 보안 강도를 제공하는 암호 알고리즘이다.[3] 보안을 강화하기 위해서 암호키의 길이는 늘리는 방법이 있지만 그에 따라 암호 연산 속도가 느려진다는 문제가 있다. 그래서 사람들은 RSA방식을 사용하여 암호키 길이를 늘리는 대신 타원곡선암호 기술을 선택하는 경우가 많다. 타원곡선암호는 유한체상의 타원곡선의 수학적 성질을 이용한 암호 기술을 이야기 한다. 유한체(Finite Field)는 집합에 속해 있는 원소의 수가 한정되어 있으며, 덧셈,곱셈 연산에 대하여 닫혀 있는 집합을 의미한다. 유한체를 사용하는 이유는 암호 연산은 정수를 기반으로 계산해야 하기 때문이다.[2] 타원 곡선의 방정식은 y^2=x^3+ax+b로 표현할 수 있으며 이러한 타원 곡선 암호화로 10^77 정도의 경우의 수를 얻을 수 있다.[4]

특징

타원곡선암호를 쓰기 유용할 때

  • 계산 능력이 제한적일 때 (무선 장치, PC 카드)
  • 집적 회로 공간이 제한될 때 (무선 장치, PC 카드)
  • 빠른 속도를 필요로 할 때
  • 서명, 검증 또는 인증이 필요할 때
  • 서명 된 메시지를 저장하거나 전송 할 때 (특히 짧은 메시지의 경우)
  • 대역폭이 제한될 때 (무선 통신 및 일부 컴퓨터 네트워크[5]

공개키 알고리즘

공개키 암호 알고리즘(public key cryptosystem) 또는 비대칭키 암호 알고리즘이란 개인이 비밀통신을 할 경우엔 대칭키 암호를 사용할 수 있지만, 다수가 통신을 할 때에는 키의 개수가 급증하게 되어 큰 어려움이 따른다. 이런 어려움을 극복하기 위해 나타난 것이 공개키 암호이다. 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있다는 장점을 갖는다.

공개키 알고리즘은 서로 다른 키를 가지고 있으며 키의 이름은 공개키(Public Key)와 비밀키(Private Key)이다. 이 공개키와 비밀키를 만드는 알고리즘인 공개키 알고리즘은 두 가지 방식으로 분류할 수 있다. 소인수분해 문제를 이용해서 만드는 방법과 이산 로그 문제를 이용해서 만드는 방법이 있다. RSA는 소인수분해 문제를 선택하고 있다면 타원곡선 암호는 이산 로그 문제를 사용하고 있다.[6]

난수 생성기의 중요성

RSA에 비교한 타원곡선암호의 약점은 사용되는 프라이빗 키의 비트(bit)수가 적다는 것이다. 프라이빗 키는 난수 생성기를 통해서 만들어지기 때문에 난이도가 낮다면 공격자에 의해 프라이빗 키가 예측될 위험이 존재한다. 타원곡선을 이용한 전자서명 알고리즘인 ECDSA 암호 알고리즘의 보안성은 사용되는 개인키의 보안성에 의해 좌우 된다. 그렇기 때문에 예측할 수 없는 난수를 가진 개인 키를 생성해야 한다.[2]

장점

타원곡선 이론은 대수기하의 한 분야로서 자연스러운 군연산과 그 연산을 수행해주는 효율적인 알고리즘을 가지고 있어 암호학적 응용이 가능하다. 다른 공개키 암호시스템과 비교하여 타원곡선 이론의 장점은 다음과 같다.

1. 주어진 유한체상에서 정의된 다양한 타원곡선을 선택할 수 있다. 주어진 소수 중에서 유한체의 부분군을 이용하는 것과 대조적인 모습을 통해 풍부한 타원곡선군을 활용할 수 있는 장점을 가진다.

2. 초특이곡선같은 특별한 유형의 타원곡선을 제외하고는 알려진 이산대수 문제를 푸는 가장 효율적인 지수계산 알고리즘을 적용할 수 없어 안전한 암호시스템의 설계가 용이하다.

3. 타원곡선암호는 다른 암호시스템과 비교하여 짧은 키 길이를 보유하고 있지만 대등한 안정성을 제공하여 높은 효율성을 보여준다.

4. 타원곡선상의 연산은 유한체의 연산을 포함하고 있으므로 H/W와 S/W로 구현하기가 용이하다. 모든 사용자가 동일한 유한체와 유한체 연산을 수행하는 같은 H/W를 사용하더라도 서로 다른 타원곡선을 선택하여 사용할 수 있으며 추가 보안을 위해 주기적으로 타원곡선을 바꿀 수 있다.[7]

국제표준화 동향

각종 국제표준들에서 ECC에 대한 표준화가 활발히 진행되고 있고 실제로 다양한 응용분야에서 ECC를 지원하고 있다. 표준화는 여러 가지의 다른 H/W와 S/W와의 상호운용성(interoperability)을 보장하고, 암호학적 관점에서 시스템의 안전도를 면밀하게 재검토할 수 있으며, 다양하고 폭 넓은 환경에서 시스템을 구현하는 설계자들에게 암호시스템을 설계할 수 있도록 도와주는 역할을 한다. 현재의 표준화는 ECC의 구현을 위한 많은 표준의 차이로 인해 서로 다르게 구현된 응용사이에서의 호환성 문제가 대두됨에 따라 상호운용적인 보안솔루션의 개발 및 적용시 사용자가 직면하는 문제점을 해결하기 위한 표준제정이라는 추세를 보이고 있다. 캐나다의 Certicom사가 설립한 SECG(Standards for Efficient Cryptography Group)는 다양한 암호솔루션간에 발생하는 상호운용성의 해결, 각 솔루션에 ECC의 효과적인 편입, 스마트카드나 PDA 같은 제한적인 환경에서 뿐만 아니라 일반적인 공개키 기반구조에 ECC가 널리 적용되도록 하기위한 표준화 정보제공 등을 목표로, SEC 1에서는 ECDSA(Elliptic Curve Digital Signature Algorithm: 미국연방표준 전자서명 알고리즘 DSA를 타원곡선을 이용하여 변형한 전자서명), ECDH(Elliptic Curve Diffie-Hellman: 타원곡선을 이용한 키 합의 프로토콜) 등을 포함하고, 선택사항에 대해서는 제약을 두어 여러 표준들 사이에 호환성을 높이고 있으며 SEC 2에서는 유한체의 크기마다 널리 쓰이는 권장 타원곡선 도메인 변수들의 선정기준을 제시하고 있다.[8]

ECC의 안정성

타원곡선 이산로그에서는 인수분해나 유한체의 이산로그와는 달리 현재까지 알려진 적용가능한 준지수시간 알고리즘이 존재하지 않고 Pollard-rho algorithm을 병렬화시킨 방법이 타원곡선 이산대수 문제를 푸는 가장 효율적인 알고리즘으로 알려져 있다. 이러한 알고리즘들을 피해 ECC를 안전하게 사용하기 위해서는 약 160비트 이상의 유한체에서 정의된 타원곡선을 사용해야 하며 취약성이 알려진 초특이곡선과 비정규곡선 및 트레이스가 2인 곡선은 반드시 피해야만 한다. 아래 표는 Certicom사가 제시한 자료로서 RSA/DSA와 타원곡선에 대한 도메인 변수의 크기를 비교한 것이다. 이 표는 ECC의 안전도가 키 길이의 증가에 따라 거의 지수 함수적으로 증가하고 있고, 기존의 공개키 암호시스템에 비해 장기적인 기술의 발전에 따른 키 길이의 증가 비율면에서도 대단한 장점을 가지고 있음을 확인할 수 있게 해 준다.[8]

  • 표. 동일한 안전도를 갖는 도메인 변수들의 크기 비교
Time to break in MIPS(Million Instrucion Per Second) year RSA/DSA (bits) ECC (bits) RSA vs. ECC key size ratio
10^4 512 106 5:1
10^8 768 132 6:1
10^11 1024 160 7:1
10^20 20148 210 10:1
10^78 21000 600 35:1

한계점

타원곡선 암호화 기법은 다른 암호화 기법에 비해 높은 효율을 보여주지만 한계점도 분명 존재한다. 그 한계는 구현의 어려움이다. 실제로 비트코인에서 사용된 타원곡선 암호화 기술도 오랫동안 OpenSSL에 기반한 모듈을 사용하다가 최근들어 자체적인 알고리즘으로 바뀌기도 했다. 현재 IoT 기기들의 가장 큰 문제점이 무거운 공개키 기반 구조를 적용하기 어렵다는 부분인데, 타원곡선암호가 이에 대한 해결책으로 언급되지만 이 역시 구현의 어려움으로 지체되고 있다.[9]


각주

  1. ilovemylif, 〈타원곡선암호, Elliptic Curve Cryptography (1)〉, 《네이버 블로그》, 2018-01-17
  2. 2.0 2.1 2.2 AEP코리아네트, 〈비트코인에서 사용하는 타원곡선암호기술(ECC)〉, 《네이버 블로그》, 2018-01-05
  3. 밤공기후하후하, 〈암호학 - ECC, 타원곡선암호란 무엇인가〉, 《네이버 블로그》, 2018-08-23
  4. 타원 곡선 암호화〉, 《토큰 포스트》
  5. 크로커스, 〈타원 곡선 암호학(Elliptic Curve Cryptography)〉, 《크로커스》
  6. 그래비티Grabity, 〈타원곡선 암호과 이더리움 전자서명 ( feat. 우주를 줄게 )〉, 《네이버 블로그》, 2019-03-26
  7. giaysm, 〈타원곡선 암호시스템 급부상〉, 《네이버 블로그》, 2014-12-09
  8. 8.0 8.1 심경아, 〈(정보보호) 타원곡선 암호시스템 급부상〉, 《한국정보통신기술협회》
  9. 안경잡이개발자, 〈타원곡선암호화 기법(Elliptic Curve Cryptographt)〉, 《네이버 블로그》, 2018-04-28

참고자료

같이 보기


  검수요청.png검수요청.png 이 타원곡선암호 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.