**타원곡선기반 동형암호 시스템(Elliptic Curve Homomorphic Cryptosystem, ECHC)**은 포체인스 R&D센터에서 진행되었던 연구 주제인 ‘타원곡선기반의 동형구조 연구를 통한 암호 스키마 개발’ 을 통해 개발된 국내 기술로 개발된 암호 원천기술로서, 타원곡선이 가지는 동형구조 혹은 대응 관계를 통하여 기존의 동형암호를 대체할 차세대 암호이다.

역사
--

포체인스 대표(이정훈)는 ‘페르마 마지막 정리’ 관련 연구를 진행하였고,‘페르마 마지막 정리페르마 마지막 정리’의 핵심 주제인 타원곡선의 수학적 구조에 대한 연구를 진행했다. 타원곡선의 암호체계를 새로운 수학적 구조에 옮겨 그 관계를 이용한 새로운 암호 스키마를 구현하는 것에 관심을 가지고 암호에 관련 연구를 시작하게 되었다고 한다. 기존의 암호 연구의 한계점인 알고리즘 변형을 통한 개선이 적용되는 동형암호의 연구가 고질적으로 문제가 있다고 판단했고, 기존의 동형암호가 실질적인 데이터 분석을 진행하기에 부족한 속도 측면의 한계점을 가진다는 점을 토대로 이를 개선하기 위하여 알고리즘 측면의 연구가 아닌 동형암호에 적합한 대수적 공간에 대한 연구와 그를 적용한 차세대 암호 스키마의 개발을 목표로 관련 연구를 진행했다.

포체인스 암호 스키마 종류
--------------

**모듈라 형식 암호 (Modular Form Cryptosystem, MFC)**

* 모듈라 형식(Mordular Form)와 타원곡선의 대응구조를 활용하여 연구, 개발된 암호 스키마이다.
* 페르마 마지막 정리의 증명에 대한 핵심 연구였던 타니야마-시무라 추측(Taniyama–Shimura conjecture)를 기반으로 모듈라 형식 암호에 대한 연구를 진행하였다.

**타원곡선 동형암호 (Elliptic Curve Homomorphic Cryptosystem, ECHC)**

* 타원곡선과 모델 정리(Mordell’s Theorem)를 기반으로 연구, 개발된 암호 스키마이다.
* 타원곡선과 그 동형인 수학적 구조를 통하여 타원곡선의 경량성과 동형구조를 가지는 새로운 유사 동형암호를 개발하였다.

**유사 동형암호 (Pseudo Homomorphic cryptosystem, PHC)**

* MFC와 ECHC를 융합하여 만든 완성형 암호 스키마이다.
* Pseudo라는 말과 같이 기존 동형암호와는 다른 암호 시스템이고 강력한 보안력을 특징으로 가지고 있다.

ECHC 암호스키마 장점
-------------

* Elliptic Curve 위에 동형암호 구조를 적용한 암호 스키마
* ECC의 경량성을 동형암호 구조에 접목하여 기존 **동형암호의 속도 측면을 개선**
* 기존 암호의 장점을 융합한 새로운 암호를 통한 보안 이슈 해결책으로서 **강한 보안성 및 빠른 처리속도 그리고 인공지능 기법을 통한 공격 보호가 가능한 암호**

관련 수학 배경지식
----------

* **(1) 타원곡선 (Elliptic Curve)의 정의**

{\displaystyle \Bbbk }를 임의의 체(field)라고 하고 타원곡선 {\displaystyle \mathbb {E} }은 다음 방정식을 만족하는 점들의 집합이라고 하자.  

{\displaystyle {\begin{alignedat}{2}y^{2}&=x^{3}+Ax+B\\\end{alignedat}}} 여기서 {\displaystyle \ A,B\in \Bbbk } 임이 성립한다. 이 때 이 방정식을 타원곡선에 대한 **바이어슈트라스 방정식(Weierstrass equation)**라고 한다. 또한, 타원곡선은 **``무한점(point at infinity)''**을 포함하고 있고, {\displaystyle \infty }로 표기한다. 이 점은 쉽게 {\displaystyle y}-좌표의 맨 위에 있을 때임을 알 수 있다. 하지만 {\displaystyle y}-축의 맨 아래도 맨 위로 간주할 경우를 말하는 것이다. {\displaystyle {\overline {\Bbbk }}}는 {\displaystyle \Bbbk }의 대수적 폐포(algebraic closure)라 하며 {\displaystyle \Bbbk }위에서의 타원곡선은 {\displaystyle \mathbb {E} ({\overline {\Bbbk }})}로 표기하고 다음과 같이 정의한다.  

{\displaystyle \mathbb {E} ({\overline {K}})=\left\{\infty \right\}\cup \left\{(x,y)\in {\overline {\Bbbk }}\times {\overline {\Bbbk }}\mid y^{2}=x^{3}+Ax+B\right\}}  

  

{\displaystyle p}를 소수, {\displaystyle a,b}를 법 {\displaystyle p}에 대해서 0이 아닌 정수라고 하자. 이제, 다음을 만족하는 정수 {\displaystyle k}가 존재함을 고려하자.  

  

{\displaystyle a^{k}\equiv b{\pmod {p}}} 위 식에서 {\displaystyle k}를 찾는 것을 **이산 로그 문제(discrete logarithm problem)**라고 한다. {\displaystyle k+(p-1)} 또한 해이므로, 답 {\displaystyle k}는 법 {\displaystyle p-1}에서 정의되고 있음을, 혹은 만약 {\displaystyle a^{d}\equiv 1{\pmod {p}}}를 만족한다면 {\displaystyle p-1}의 약수 {\displaystyle d}임을 고려하자. 이러한 문제를 타원곡선에 대한 이산 로그 문제로 바라볼 수 있다. 타원곡선 위의 점 {\displaystyle A,B}에 대하여 적당한 정수 {\displaystyle k}가 존재해서 {\displaystyle B=kA(=A+A+\cdots +A)}이 성립한다고 하자. 우리는 {\displaystyle k}를 찾기 원하고 일반적으로 이 타원곡선에 대한 이산 로그 문제의 좋은 공격은 존재하지 않는다. 소수 {\displaystyle p}에 대하여 {\displaystyle \mathbb {E} }를 법 {\displaystyle p}에 대한 타원곡선이라고 하고, {\displaystyle n}을 {\displaystyle nA=\infty }를 만족하는 최소의 양의 정수라고 하자. 만약 {\displaystyle n}이 작은 소인수를 가진다고 하면 그것은 {\displaystyle n}을 나누는 소수의 거듭제곱을 법으로 하는 이산 로그 {\displaystyle k}를 계산하는 것이 가능하다. 그러면 중국인 나머지정리(Chinese remainder theorem)를 적용하여 {\displaystyle k}를 찾을 수 있다.
  

  

* **(2) 유리수체 {\displaystyle \mathbb {Q} }위에서 타원곡선의 군(Group) 구조**

유리수체 {\displaystyle \mathbb {Q} }위에서 정의된 타원곡선 {\displaystyle \mathbb {E} }을 고려하자. 이 타원곡선 {\displaystyle \mathbb {E} }위의 두 점 {\displaystyle P\_{1}=(x\_{1},y\_{1})}, {\displaystyle P\_{2}=(x\_{2},y\_{2})}를 고려하고 타원곡선 {\displaystyle \mathbb {E} }의 방정식은 {\displaystyle y^{2}=x^{3}+Ax+B}로 주어졌다고 하자. 이 때, {\displaystyle P\_{1},P\_{2}\neq \infty }이라 하자. 우리는 다음 각 상황에 대한 {\displaystyle \mathbb {E} }위의 점 {\displaystyle P\_{3}}를 구할 수 있다. 첫번째 경우는 {\displaystyle P\_{1}}와 {\displaystyle P\_{2}}를 지나는 직선을 그린다. (만약 {\displaystyle P\_{1}=P\_{2}}인 경우는 선 {\displaystyle L}은 점 {\displaystyle P\_{1}}에서의 접선(tangent line)이다.) 선 {\displaystyle L}과 타원곡선 {\displaystyle \mathbb {E} }의 교점 {\displaystyle P\_{3}^{'}}를 얻을 수 있다. {\displaystyle P\_{3}^{'}}를 {\displaystyle x}-축에 반사시켜서 얻은 점을 {\displaystyle P\_{3}=(x\_{3},y\_{3})}라 하자. 마지막으로 우리는 군 법칙을 다음과 같이 정의할 수 있다.  

  

{\displaystyle P\_{1}+P\_{2}=P\_{3}}

* 1. 만약 {\displaystyle x\_{1}\neq x\_{2}}이면 {\displaystyle m={\frac {y\_{2}-y\_{1}}{x\_{2}-x\_{1}}}}일 때 {\displaystyle x\_{3}=m^{2}-x\_{1}-x\_{2},\;y\_{3}=m(x\_{1}-x\_{3})-y\_{1}}이다.
	2. 만약 {\displaystyle x\_{1}=x\_{2}} 이지만 {\displaystyle y\_{1}\neq y\_{2}}이면 {\displaystyle P\_{1}+P\_{2}=\infty }이다.
	3. 만약 {\displaystyle P\_{1}=P\_{2}} 이고 {\displaystyle y\_{1}\neq 0}이면 {\displaystyle m={\frac {3x\_{1}^{2}+A}{2y\_{1}}}}일 때 {\displaystyle x\_{3}=m^{2}-2x\_{1},y\_{3}=m(x\_{1}-x\_{3})-y\_{1}}이다.
	4. 만약 {\displaystyle P\_{1}=P\_{2}} 이고 {\displaystyle y\_{1}=0}이면 {\displaystyle P\_{1}+P\_{2}=\infty }이다.   
	더욱이 {\displaystyle \infty }와 {\displaystyle P}를 지나는 선은 {\displaystyle x}-축과 수직이다. 이 선은 타원곡선 {\displaystyle \mathbb {E} }의 {\displaystyle P=(x,y)}와 {\displaystyle (x,-y)}를 지난다. 점 {\displaystyle P}를 {\displaystyle x}-축에 반사시키면 점 {\displaystyle (x,-y)}를 얻는다. 그러므로 {\displaystyle P+\infty =P}임을 알 수 있다. 또한, {\displaystyle (x,y)}와 {\displaystyle (x,-y)}를 지나는 선은 수직이므로 타원곡선 {\displaystyle \mathbb {E} }와의 교점은 {\displaystyle \infty }이다. 결과적으로 {\displaystyle (x,y)+(x,-y)=\infty }임을 얻는다. 이 때, {\displaystyle \infty }는 {\displaystyle \mathbb {E} }에서 항등원의 역할을 하기 때문에 {\displaystyle -(x,y)=(x,-y)}라고 정의하여야 하고, 이 사실은 {\displaystyle (x,-y)}는 {\displaystyle (x,y)}의 역원임을 의미한다.

  

* **(3) 유한체 {\displaystyle \mathbb {F} \_{p}} 위의 타원곡선의 군(Group) 구조**

{\displaystyle \mathbb {F} \_{p}}위에서 정의된 타원곡선을 고려하자. 여기서 {\displaystyle p}는 홀수 소수이고 {\displaystyle \mathbb {F} \_{p}}는 유한 소체이다. 그리고 {\displaystyle a,b\in \mathbb {F} \_{p}}는 {\displaystyle 4A^{3}+27B^{2}\not \equiv 0{\pmod {p}}}를 만족한다고 하면 매개변수 {\displaystyle A,B\in \mathbb {F} \_{p}}를 가지는 유한체 {\displaystyle \mathbb {F} \_{p}} 위에서 정의된 타원곡선 {\displaystyle \mathbb {E} (\mathbb {F} \_{p})}은 다음 방정식의 해 혹은 점 {\displaystyle P=(x,y)}으로 구성된다.  

  

{\displaystyle y^{2}\equiv x^{3}+Ax+B{\pmod {p}}} 이외의 점 {\displaystyle {\mathcal {O}}}은 무한점을 의미한다. 방정식 {\displaystyle y^{2}\equiv x^{3}+Ax+B{\pmod {p}}}은 {\displaystyle \mathbb {E} (\mathbb {F} \_{p})}을 정의하는 방정식으로 불린다. 주어진 점 {\displaystyle P=(x\_{p},y\_{p})}에 대해서, {\displaystyle x\_{p}}는 {\displaystyle P}의 {\displaystyle x}-좌표, 그리고 {\displaystyle y\_{p}}는 {\displaystyle P}의 {\displaystyle y}-좌표라고 불린다. {\displaystyle \mathbb {E} (\mathbb {F} \_{p})}에서 원소의 개수는 {\displaystyle \#\mathbb {E} (\mathbb {F} \_{p})}라고 표현한다. **`하세 정리'(Hasse Theorem)**는 다음과 같이 {\displaystyle \#\mathbb {E} (\mathbb {F} \_{p})}를 계산하는 방법을 소개한다. 만약 {\displaystyle \mathbb {E} (\mathbb {F} \_{p})}는 유한체 {\displaystyle \mathbb {F} \_{p}}에서의 타원곡선이면,  

  

{\displaystyle p+1-2{\sqrt {p}}\leq \#\mathbb {E} (\mathbb {F} \_{p})\leq p+1+2{\sqrt {p}}}  

  

{\displaystyle \mathbb {E} (\mathbb {F} \_{p})}에서의 군 법칙은 다음과 같다.

* 1. 무한점끼리 합하는 규칙:     {\displaystyle {\mathcal {O}}+{\mathcal {O}}={\mathcal {O}}} 2. 무한점과 어떤 다른 점을 합하는 규칙:     모든 {\displaystyle \;(x,y)\in \mathbb {E} (\mathbb {F} \_{p})}에 대해서,{\displaystyle \;(x,y)+{\mathcal {O}}={\mathcal {O}}+(x,y)=(x,y)} 3. 점들이 각각 구별되거나, {\displaystyle y}-좌표가 0일 때, {\displaystyle x}-좌표가 같은 두 점을 합하는 규칙:     모든 {\displaystyle \;(x,y)\in \mathbb {E} (\mathbb {F} \_{p})}에 대해서, {\displaystyle \;(x,y)+(x,-y)={\mathcal {O}}} 4. {\displaystyle x}-좌표가 다른 두 점을 합하는 규칙 : {\displaystyle (x\_{1},y\_{1})\in \mathbb {E} (\mathbb {F} \_{p})}과 {\displaystyle (x\_{2},y\_{2})\in \mathbb {E} (\mathbb {F} \_{p})}를 {\displaystyle x\_{1}\neq x\_{2}}를 만족하는 점이라고 하자. 그러면

  

{\displaystyle (x\_{1},y\_{1})+(x\_{2},y\_{2})=(x\_{3},y\_{3})}이고, 다음과 같다:     {\displaystyle x\_{3}\equiv \lambda ^{2}-x\_{1}-x\_{2},\;y\_{3}\equiv \lambda (x\_{1}-x\_{3})-y\_{1},} 그리고 {\displaystyle \lambda \equiv {\frac {y\_{2}-y\_{1}}{x\_{2}-x\_{1}}}{\pmod {p}}} 5. 동일한 점끼리 합하는 규칙(double a point): {\displaystyle (x\_{1},y\_{1})\in \mathbb {E} (\mathbb {F} \_{p})}을 {\displaystyle y\_{1}\neq 0}을 만족하는 점이라고 하자.     {\displaystyle x\_{3}\equiv \lambda ^{2}-2x\_{2},\;y\_{3}\equiv \lambda (x\_{1}-x\_{3})-y\_{1},} 그리고 {\displaystyle \lambda \equiv {\frac {3x\_{1}^{2}+A}{2y\_{1}}}{\pmod {p}}}  

  

{\displaystyle \mathbb {E} (\mathbb {F} \_{p})} 위에서의 점들의 집합은 더하기 연산을 가지는 군 형태이며 그 군은 가환군(abelian group)이다.(모든 점 {\displaystyle P\_{1},P\_{2}\in \mathbb {E} (\mathbb {F} \_{p})}에 대해서, {\displaystyle P\_{1}+P\_{2}=P\_{2}+P\_{1}}을 만족하는 것을 의미한다.) 주어진 정수 {\displaystyle k}와 점 {\displaystyle P\in \mathbb {E} (\mathbb {F} \_{p})}에 대해서, 스칼라 곱은 점 {\displaystyle P}를 {\displaystyle k}번 더하는 과정과 같다. 이 스칼라 곱의 결과는 {\displaystyle kP}로 표현된다.
  

  

* **(4) 모델의 정리(Mordell's Theorem)**

{\displaystyle \mathbb {E} }를 표수가 0인 체(field) {\displaystyle \Bbbk }위에서 정의된 타원곡선(Elliptic Curve)라고 {\displaystyle N}을 양의 정수라고 하면 다음이 성립한다.

  

{\displaystyle \epsilon [N]} {\displaystyle \cong (\mathbb {Z} /N\mathbb {Z} )^{2}}

  

단, {\displaystyle \epsilon [N]}{\displaystyle =\{P\in \mathbb {E} :[N]P={\mathcal {O}}\}}
{\displaystyle =\{P\in \mathbb {E} :[N]P={\mathcal {O}}\}}이다.