540 likes | 879 Views
타원암호와 구현상에서 발생할 수 있는 취약점. PLUS 최종민. 발표자 소개. 최종민 POSTECH-PLUS 회장. Elliptical Curve Cryptography ?. 타원 암호 (ECC: elliptical curve cryptography ) 는 공개키 암호 의 일종으로써 (public-key cryptography) 로 타원 곡선 을 이용한 암호이다. Cryptography. Cryptography. Cryptography. 내용의 유출을 방지 내용의 변조를 방지
E N D
타원암호와 구현상에서 발생할 수 있는 취약점 PLUS 최종민
발표자 소개 최종민 POSTECH-PLUS 회장
Elliptical Curve Cryptography? 타원 암호(ECC: elliptical curve cryptography)는 공개키 암호의 일종으로써(public-key cryptography)로 타원 곡선을 이용한 암호이다.
Cryptography • 내용의 유출을 방지 • 내용의 변조를 방지 • 보낸 사람에 대한 검증
Public key RSA -> ECC
RSA (단, k와 n은 서로소은 약수의 개수)
타원 곡선에서 더하기, 곱하기 • 타원 곡선에서는 점과 점 사이의 더하기와 점과 상수 사이의 곱하기가 가능함.
PLUS R’ Q P R
PLUS O P Q
PLUS 2P’ P 2P
inverse Q P -Q R
associative R Q U P S
associative R Q U P T
multiply P 3P 4P=O 2P
곱하기 • 17G = 2*2*2*2*G+G • 곱하기의 계산 시간은 log time
간단하게 말해.. • 일종의 더하기 곱하기 빼기가 가능하고 나누기가 불가능 한상황으로 생각
Curve Point G Pa=s*G Secret s G Secret r Pb=r*G Pc=r*Pa Pc’=s*Pb
What is elliptic curve? • 두 사람이 각각 비밀값r,s를 가지고 적당히 데이터를 잘 주고 받으면! • 둘 만 아는 값 r*s*G를 가지게 된다!
What is elliptic curve? • 2종류의 표현이 있음 • 소수를 이용한 • 2의 지수를 이용한 • 우리가 이야기 할 것은
What is elliptic curve? • 에서 m 이 소수가 아닌 것. (Weil descent attacks)
Encryption and Decryption way with only ECC • F. Amounas and E.H. El Kinani, ECC Encryption and Decryption with a data Sequence , Applied Mathematical Sciences. Vol 6. 2012, no. 101. 5039 – 5047에 있는 방법 및 보편적으로 하는 방법 • Demo를 위한 구성은 위 논문의 방법을 구현함.
Curve Point G Pa=s*G Secret s G Secret r Plaintext m Pb=r*G Pm’=Pc-s*Pb m에 해당하는 점 Pm Pc=r*Pa+Pm Pm’에 해당하는 원문
Pm’= Pc – s*Pb = r*Pa+Pm-s*r*G =r*s*G-s*r*G+Pm=Pm r*s*G
What is elliptic curve? • 논문에서는 위와 같은 방식으로 public key가 있으면, 통신 시작 시랜덤 값 r을 설정하여 r을 이용하여 data를 encryption 한다.
What is elliptic curve? • 수학적으로는 안전하다. (우리가 의도하지 않은 정보는 전혀 들어나지 않는 다면) • 그러나 현실은 그렇지 않다. • 만약 우리가 하나의 plain text를 완벽히 알 수 있다면 어떻게 될까? • 이는 충분히 가능한 일이다. • ex) 어떤 application이 최초에는 항상 안녕~ 이라는 메시지를 보낸다는 식의 패턴 바탕으로 추측가능.
Curve Point G Pa=s*G Secret s G Secret r Plaintext m Plaintext m’ Pm을 알고 있는 3자 m에 해당하는 점 Pm’ m에 해당하는 점 Pm Pb=r*G Pb=r*G Pc’=r*Pa+Pm’ Pc=r*Pa+Pm r*s*G Pm’=Pc’-r*s*G r*s*G=Pc-Pm
What is elliptic curve? • r*s*G를 알았으므로 이제 secret key r과 secret key s로 암호화 되는 모든 부분들이 해석가능! Pc’=r*s*G+Pm
What is elliptic curve? • 원문하나를 알았다고 다른 원문을알아 낼 수 있는 방법이 없음.. • Decode를 위해 중요한 key 값이 d 인데하나의 암호문, 원문 쌍을 안다고 하여 d를 구할 수 없다.
What is elliptic curve? • Demo 환경은 자료에 주어진 환경과 동일하게 구성함. (실제로 쓰는 스펙 보다도 단순한 스펙nist curve가 아닌 간단한 curve를 사용) • Curve
ECC • Jecc.sourceforge.net -> java ECC crypto open source project. • 의 소스코드를 수정하여 만듬. • JAVA 는 library 로 ecc를 지원해주어 ecc관련 프로그램을 작성시 쉽게 짤 수 있음.
코드 Pc 알려진 부분의 암호화된 정보를 curve위의 점으로 변환 Pm 알려진 부분의 문자 정보를 curve위의 점으로 변환 - Pm -r*s*G
실행 encrypt 특정 값을 알 때
어떻게 막을까 • Pm이 예측이 불가능 하도록 한다. • r*s*G의 값을 알아도 다음 번에 사용 불가능 하도록 한다.