2016년 2월 25일 목요일

Section.04 비대칭키 암호

1.비대칭키 암호

(1)키 배송 문제

1)개요

  • 대칭키 암호를 사용하려고 하면 키 배송 문제가 발생한다.
  • 키를 보내지 않으면 수신자는 복호화할 수 없다. 키를 보내면 도청자도 복호화할 수 있다. 키를 보내지 않으면 되는데 키를 보내서도 안된다. -> 대칭키 암호의 키 배송 문제 
  • 키 배송 문제를 해셜하기 위한 방법에는 몇 가지가 있다.
    • 키의 사전공유
    • 키 배포 센터
    • Diffie-Hellman 교환
    • 공개키 암호

2)키의 사전 공유에 의한 해결

  • 키 배송 문제를 해결하기 위한 가장 간단한 방법은 안전한 방법으로 키를 사전에 건내주는 것.
  • 이 방법의 한계는 인원이 많아지면 통신을 위한 키의 수가 방대해지는 것.
  • n명의 사원이 자신 외의 사람과 통신하고 싶을 경우 키의 수는 n(n-1)/2

3)키 배포 센터에 의한 해결

①개요
  • 암호 통신이 필요해 질 때마다 통신용 키를 키 배포 센터(Key Distribution Center)라는 신뢰받는 제 3자에 의뢰해서 개인과 키 배포 센터 사이에서만 키를 사전에 공유하는것.
  • 회사 안에 키 배포 센터의 역할을 하는 컴퓨터를 지정해 둔다. 이 컴퓨터에는 데이터 베이스가 있고, n명의 사원이 있다면 n개의 키가 그 안에 있다.
②단계별 순서 
③세션키
  • KDC는 각 구성원을 위해 비밀키를 생성한다. 이 비밀키는 구성원과 KDC사이에서만 사용될 수 있고 구성원끼리의 통신에서는 사용할 수 없다.
  • alice가 bob과 기밀성을 유지하면서 통신을 하고자 한다면 alice는 bob과 자신 사이에 비밀키가 한 개 필요하다. KDC는 이들 두 사람과 센터 사이의 비밀키들을 이용해 alice와 bob사이에 필요한 세션키를 생성할 수 있다.
  • 두 통신자 사이의 세션 대칭키는 오직 한 번만 사용한다.

4)Diffie-Hellman키 교환에 의한 해결

①개요
  • 공개키 암호방식의 개념을 이용해 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 수 있는 방법을 제시하였으며, 많은 키 분배 방식에 관한 연구의 기본이 되었다.(최초의 비밀키 교환 프로토콜)
  • Diffie-Hellman 프로토콜 방법에서는 양쪽 통신주체가 KDC없이 대칭 세션키를 생성한다. 대칭키를 만들기 전에양쪽은 두 개의 수 p와g를 선택해야 한다. 여기서 p는 매우 큰 소수로서 300자리가 넘는 십진수(1024비트).
  • 유한체상의 이산대수문제를 풀기 어렵다는 사실이 Diffie-Hellman키 교환을 뒷받침하고있다.(이산대수문제: G^A mod P로부터 수 A를 구하는 문제)
②절차
  • Alice는 임의의 큰 수 x를 0<= x <=p-1안에서 택하고 R1 = g^x mod p를 계산한다.
  • bob는 다른 임의의 큰 수 y를 0<= y <=p-1안에서 택하고 R2 = g^y mod p를 계산한다.
  • alice는 R1을 bob에게 보낸다. 여기서 alice는 오직 R1만을 보낸다.
  • bob은 마찬가지로 R2만 보냄.
  • alice는 K = (R2)^x mod p 를 계산한다.
  • bob은 K = (R2)^y mod p 를 계산함.
  • 이렇게 구한 값 K는 아래와 같고 세션에 사용될 대칭키이다.
  • K = (g^x mod p)^y mod p = (g^y mod p)^x mod p = g^xy mod p
③Diffie-Hellman의 안전성
  • Diffie-Hellman키 교환은 두 가지 공격에 약점을 보인다.  이산대수공격, 중간자공격.
    • 이산대수공격
      • 키 교환의 안전성은 이산대수문제를 퓰기 어렵가는데 기반을 두고 있다.
      • eve가 R1과 R2를 가로챌 수 있을 것이다. 만약 eve가 R1 = g^x mod 로부터 x를 구하고 R2 = g^y mod 로부터 y를 구할 수 있다면, eve는 대칭키 K를 계산할 수 있게된다. 
    • 중간자공격
      • 키 교환 프로토콜은 이런 공격에 취약한데 그 이유는 인증단계가 없기 때문이다. 이런 공격을 막기 위해서는 디지털서명과 공개키 인증서 등을 이용한다.

5)공개키 암호에 의한 해결 

  • 대칭키 암호에서 암호화키와 복호화키는 같지만 공개키암호는 서로 다름.
  • 수신자는 미리 암호화키를 송신자에게 알려준다. 이는 도청자에게 알려져도 좋다. 송신자는 암호화키를 써서 암호화하여 수신자에게 보낸다.
  • 복호화할 수 있는 것은 복호화키를 가지고 있는 사람(수신자)뿐이다. 이렇게하면 복호화키를 수신자에게 배송할 필요가 없어진다.

(2)공개키 암호 (public-key cryptography)

1)개요

  • 대칭키 암호는 평문을 복잡한 형태로 변환해서 기밀성을 유지한다. 공개키 암호는 수학적으로 해결하기 곤란한 문제를 토대로 해서 기밀성을 유지한다.
  • 공개키 암호방식의 중요한 장점은 전자 문서의 무결성과 부인방지 기능을 갖고 있는 전자서명을 구현하는데 활용될 수 있으며 다양한 암호 프로토콜에 사용될 수 있다는 점이다. 
  • 공개키 암호에서는 암호/복호화키가 분리되어있다. 송신자는 암호화키를 써서 메시지를 암호화하고 수신자는 복호화키를 써서 암호문을 복호화한다.

2)공개키 암호의 역사

  • ㅇㅅaㅇ

3)일반적인 아이디어 

①개요 
  • 일반적으로 대칭키 암호 시스템의 비밀키는 기호열(비트열 등)이지만, 비대칭키 암호시스템의 개인키는 하나의 숫자이거나 그 이상의 숫자들로이루어진다.
  • 이 그림에서 중요한점
    • 암호 시스템의 비대칭성 강조.
    • 보안성을 제공하는 책임이 대부분 수신자에게있음.(여기는 bob)
    • bob는 개인키와 공개키로 된 두 개의 키를 만들어야 한다.

4)공개키 암호의 취약점 

  • 이 방법에 의해 키 배송문제는 해결함. 그러나 입수한 공개키가 정말 바른 공개키인지 판단할 필요가 생김(공개키 신뢰성 문제)
  • 공개키 인증에 관한 문제로 인증과정이 없을 시 중간가 공격에 취약하다.
  • 수학이론적으로 풀기 어려운 문제를 이용하기 때문에 관용 암호시스템과 비교할 때 암호화 시간이 훨씬 오래 걸린다는 단점을 갖는다.

(3)RSA암호 시스템

1)개요

①기본개념
  • RSA는 공개키 암호 알고리즘 중 하나이며 사실상 표준임.
  • 인수분해 문제해결의 높은 난이도를 이용한 가장 대표적인 공개키 암호 알고리즘으로 암호화뿐 아니라 디지털서명의 용도로도 많이 사용된다.
  • SSL프로토콜을 가진 많은 웹브라우저, PGP그리고 공개키 암호시스템을 사용하는 정부시스템 등이 RSA를 사용.
②암호화의 복호화
  • RSA에서는 두 개의 지수 e와d를 사용함. e는 공개하지 않는값, d는 비밀로 유지하는 값. 
  • Alice는 C=P^e mod n을 이용해 평문 P에서 암호문 C를 생성한다. bob은 암호문 C에서 P=C^d mod n을 구해 alice가 보낸 평문을 얻는다. 모듈러 n은 매우 큰 수이고 키 생성 프로세스를 통해 얻는다.
③키 생성
  • 알고리즘
  • 안전을 위해 권장되는 각 소수 p와 q의 크기틑 512비트이다. 이 크기는 10진수로 약 154자리수이다. 이런 소수를 사용하면 모듈러로 사용할 n은 1024비트로 십진수 309자리가 된다.

2)RSA알고리즘 예

3)RSA에 대한 공격

①소인수분해 공격
  • RSA는 모듈러 값이 매우 커서 이 값을 적절한 시간 내에 소인수분해 하는 것이 불가능하다는 아이디어에 근거해 안전성을 보장한다.
  • bob는 p와 q를 선택하고 n = pq를 계산한다. 비록 n이 공개되는 값이지만 p와 q는 비밀로 유지한다. 만일 eve가 n을 소인수분해하여 p와q를 구할 수 있다면 eve는 ...을 계산할 수 있게 된다. 
  • 현실적인 시간 내에 소인수분해를 마칠 수 있는 효율적인 소인수분해 알고리즘이 개발되지 않는 이상 RSA는 안전함.
②중간자공격
  • 중간자공격은 기밀성에 대해 매우 유효한 공격 방법이다.
  • 이 공격은 적극적 공격자 멜로리가 송신자와 수신자 사이에 들어가서 송신자에 대해서는 수신자처럼, 수신자에대해서는 송신자처럼 행세하는 공격이다. 
  • 이 공격은 어떤 공개키 암호에도 사용가능.
  • 이 공격을 막기 위해서는 입수한 공개키가 진짜인지 인증이 필요해진다. 이때 사용되는 것이 공개키 인증이다. 

4)권장사항 

5)최적 비대칭키 암호 패딩(OAEP)

①개요
  • RSA에서 짧은 메시지 공격에 의해 암호문을 위험에 빠뜨리게 된다.
  • 단순히 의미없는 데이터(패딩)를 메시지에 붙여서 eve의 공격 작업을 어렵게 만들 수 있다. 하지만 eve가 추가적인 노력을 하면 암호문을 충분히 공격할 수 있다.
  • RSA그룹과 생산판매를 하는 몇명의 업자들이 제안한 해결책은 최적 비대칭키 암호화패딩(OAEP:Optional Asymmetric Encryption Padding)이라는 절차를 적용하는것.

(4)Rabin 암호 시스템 

1)개요 

  • RSA암호 시스템의 변형. RSA는 지수합동에 근거하고, Rabin은 2차 합동에 근거한다.

2)암호화와 복호화

  • Rabin암호시스템에서 암호화는 한번의 곱셈으로 매우 빠르고 간단함.
  • 성능 낮은 플렛폼에서 잘 활용. 

3)Rabin 시스템 보안

  • Rabin 의 p,q가 충분히 크다면 안전.
  • Rabin의 복잡도는 큰 수 n을 두 개의 소수 곱으로 소인수분해하는 수준의 복잡도와 동일함. 따라서 Rabin 은 RSA만큼 안전함.

(5)ELGamal

1)개요

  • 이산대수 문제에 근거해 만든 시스템
  • 오픈소스를 기초로 키 분배 방식 및 공개키 암호 방식 실현.

2)암호화와 복호화

  • bob의 공개키를 이용해 누구든지 bob에게 메시지를 보낼 수 있다. 만약 고속 지수 알고리즘을 사용한다면, ELGamal암호 시스템의 암호화는 다항식정도의 복잡도를 갖는 시간 내에 수행할 수 있다.
  • ELGamal 방식에 의한 암호화애서는 암호문의 길이가 평문의 2배가 된다는 단점.

3)응용

  • ELGamal은 RSA를 활용할 수 있는 곳에는 어디에나 사용할수 있다. 키 교환, 인증, 짧은 메시지의 암호화와 복호화에 사용할 수 있다.
  • 암호 SW인 GnuPG에 구현되어있음 

(6)타원곡선 암호(elliptic curve cryptosystem;ECC)

  • ECC는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호 알고리즘. RSA암호방식에 이어 전자상거래의 핵심 기술.
  • RSA보다 키의 비트수를 적게 하면서도 동일한 성능을 제공하는 것이 가장 큰 특징.(160비트 ECC는 1024비트 RSA와 성능 동일.)
  • 다양한 암호방식설계 가능. HW,SW로 구현 쉬움. 스마트카드, 무선통신 단말기등 메모리, 처리능력이 제한된 응용분야에 효율적.
  • ECC는 RSA보다 상대적으로 지명도가 부족하며 배경이론이 복잡하고 해당 분야에서의 전문가가 적다는 단점이 있지만 , 최근 높은 속도로 구현이 가능하여 발전가능성이 큰 암호화 방식.

(7)대칭키 방식과 비대칭키 방식의 비교

2.하이브리드 암호시스템

1)대칭키 암호와 공개키 암호 

  • 대칭키 암호를 사용하면 기밀성을 유지한 통신이 가능하다. 그러나 대칭키 암호를 실제로 운영하기 위해서는 키 배송 문제를 해결할 필요가 있다.
  • 공개키 암호를 사용하면 복호화에 사용할 키를 배송할 필요가 없어지기 때문에 대칭키 암호가 근본적으로 가지고 있는 키 배송문제를 해결할 수 있다.
  • 공개키 암호의 문제점
    • 대칭키 암호에 비해 처리가 느림
    • 중간자 공격에 취약
  • 하이브리드 암호 시스템은 이 중 첫째를 해결하는 방법임. 두번째 문제는 공개키에 대한 인증으로 해결.

2)하이브리드 암호 시스템(Hybrid Cryotosystem)

  • 하이브리드암호 시스템은 대칭키 암호화 공개키 암호의 장점을 살릴 수 있도록 조합한 방법. 
  • 메시지를 일단 고속의 대칭키 암호로 암호화한다. 그러면 메시지가 암호문으로 변환되기 때문에 메시지의 기밀성을 지킬 수 있게된다. 
  • 다음에 대칭키 암호의 키 키밀성을 지키기 위해 이 부분에 공개키 암호를 사용한다. 즉, 메시지를 암호화할 때 사용한 대칭키 암호키를 공개키 암호로 암호화 한다.

3)하이브리드 암호시스템의 암호화

①메시지의 암호화
  • PRNG(pseudo random number generator):의사난수 생성기
  • 오른쪽 반은매시지의 암호화를 행하는 부분(대칭키암호), 왼쪽반은 세션키의 암호화를 행하는 부분(공개키암호).
  • 메시지를 암호화(C1=E(K,P))하는 것은 대칭키암호를 이용해 암호화하는것과 동일하다.
②세션키의 암호화
  • 왼쪽 부분에서는 세션키의 작성과 세션키의 암호화를 수행한다.
  • 세션키는 한번의 통신을 위해 일시적으로 만들어지는 키로, 의사난수 생성기로 생성하는것이 보통이다.
  • 세션키는 오른쪽 반의 대칭키 암호로 건네져서 대칭키 암호의 비밀키로 사용된다.
  • 세션키는 수신자의 공개키로 암호화한다. 공개키 암호의 암호화에 사용하는 키는 수신자의 공개키 이다. 
  • 세션키는 대칭키 암호에 있어서는 키이지만, 공개키 암호의 입장에서는 하나의 평문이다. 라는 개념이 핵심. 
  • 세션키가 대칭키 암호와 공개키 암호라는 2개의 암호를 서로 이어주는 중요한 역할을 하고있다.
③결합
  • 오른쪽 반에서 대칭키로 암호화된 암호문을 얻고, 왼쪽 반에서 수신자의 공개키로 암호화된 세션키를 얻는다. 그리고 이 2개를 결합한다. 
  • 결합이라는것은 단지 순서대로 붙여 놓은것. 
  • 이렇게 결합한 것이 하이브리드 암호 시스템 전체에 있어 암호문이 된다.

4)하이브리드 암호시스템의 복호화

①분할
  • 하이브리드 암호시스템의 암호문은 수신자의 공개키 암호로 암호화된 세션키와 대칭키로 암호화된 암호문을 결합한 것이다. 먼저 이 양자를 분할한다.
  • 암호문이 어떠한 구조를 하고 있는지 송신자와 수신자사이에 정해두면 분할하는것은 쉽다.
②세션키의 복호화 
  • 세션키는 공개키 암호를 사용해서 복호화한다. 그러기위해서는 복호화하기, 즉 수신자의 개인키가 필요하다.
  • 수신자의 개인키로 복호화된 세션키는 메시지 복호화키로 이용된다.
③메시지 복호화
  • 메시지는 대칭키 암호를 써서 복호화한다.
  • 복호화키로 조금 전에 공개키 복호 알고리즘으로 복호화한 세션키를 사용한다.

5)하이브리드 암호 시스템의 구체적인 예

  • 공개키 암호의 처리속도가 느린점을 대칭키 암호로 해결하고 대칭키 암호의 키 배송문제를 공개키 암호로 해결. 
  • PGP, SSL/TSL에서도 사용
  • PGP의 처리에서는 하이브리드 암호 시스템에 디지털서명, 디지털서명의 검증, 개인키의 관리도 추가해 연관되게 된다.

댓글 없음:

댓글 쓰기