정보보안 - 비대칭키 암호

비대칭키 암호

  • 키 배송 문제
    • 개요
      • 대칭키 암호를 사용하려면 키 배송 문제(key distribution problem) 발생
        • 암호화 키와 복호화 키가 동일
        • 키 배송 중 도청 가능성
      • 해결방안
        • 키의 사전 공유에 의한 해결
        • 키배포 센터에 의한 해결
        • Diffie-Hellman 키 교환에 의한 해결
        • 공개키 암호에 의한 해결
    • 키의 사전 공유에 의한 해결
      • 안전한 키를 사전에 공유함
        • 안전한 통로를 이용함
          • Trusted Authority (TA : 키관리기관)
      • 인원이 많아지면 키가 많아져서 문제
      • n명의 사원이 자신 외의 사람과 통신시 키는 n(n-1)/2 이다.
    • 키배포 센터에 의한 해결
      • KDC (Key Distribution Center : 온라인 키 분배 - 일종의 TA)
      • 암호 통신이 필요해질 때마다 통신용 키를 키배포 센터라는 신뢰받은 3자에 의해 공유
      • 과정
        • 1 : A 가 KDC에 B와 통신을 하겠다고 요청
        • 2 : KDC는 DB에서 A의 키와 B의 키를 추출(비밀키)
        • 3 : KDC는 A의 키, B의 키를 이용해 세션키를 생성, 각각 비밀키로 암호화함
        • 4 : A 에게 A의 키를 이용해 암호화한 세션키를 전달
        • 5 : B 에게 B의 키를 이용해 암호화한 세션키를 전달
        • 6 : A 는 자신의 개인키를 이용해 세션키를 복호화
        • 7 : A 는 세션키를 이용해 전송할 메시지를 암호화하여 B에게 전송
        • 8 : B 는 자신의 개인키를 이용해 세션키를 복호화
        • 9 : B 는 세션키를 이용해 A에게 전송받은 메시지를 복호화
        • 10 : 통신 종료 후 세션키는 폐기
    • Diffie-Hellman 키 교환에 의한 해결
      • 개요
        • 1976년 공개키 암호방식을 최초로 제안한 휘트필드 디피와 마틴 헬먼이 발명한 알고리즘
        • 공개키 암호방식의 개념을 이용하여 두 사용자 간에 공통의 암호화키를 안전하게 공유할 수 있는 방법 제시 (최초의 비밀키 교환 프로토콜)
        • Diffie-Hellman 프로토콜 방법에서는 양쪽 통신 주체가 KDC 없이 대칭 세션키를 생성, 대칭키를 만들기 전에 두 개의 수 p와 g를 선택해야 함. p는 매우 큰 소수로서 300자리가 넘는 십진수
        • 키 교환이라는 이름이 붙어있지만 키 교환이 아니라 공유할 키를 계산하여 만들어 내는 것, 때문에 키 합의(Diffie-Hellman key agreement)로 불리기도 함
        • 유한체상의 이산대수문제를 풀기 어렵다는 사실이 이를 뒷받침함
      • Diffie-Hellman의 안정성
        • 두 가지 공격에 약점을 보임, 이산대수공격, 중간자 공격
        • 이산대수공격
          • 키 교환의 안정성을 이산대수문제를 풀기 어렵다는데 기반을 둔다.
          • Eve가 R1과 R2를 가로챌 수 있으므로 대칭키 K를 계산할 수 있다.
            • A : R1 (공개값) = g^x mod p
            • B : R2 (공개값) = g^y mod p
            • A 는 R1을 B에 전송
            • B 는 R2을 A에 전송
            • A : K = R2^x mod p
            • B : K = R1^y mod p
              • K = g^xy mod p
            • Eve 가 R1, R2 를 가로채 x,y 를 추출하여 K를 생성할 수 있음
          • x, y값을 추출해내서 더 이상 비밀키가 비밀이 되지 않는다.
        • 중간자 공격(man in the middle attack)
          • 키 교환 프로토콜은 인증 단계가 없어서 이런 공격에 취약
          • 공격을 막기 위해 디지털서명과 공개키 인증서 등을 이용하면 됨
        • DoS 공격
          • Diffie-Hellman 은 지수함수에 기초하고 있어 계산이 복잡함
          • 동시에 통신 시 비밀키 생성 시 많은 부하가 걸림
          • 키 생성을 다수 요청하면 서버가 마비됨
    • 공개키 암호에 의한 해결
      • 개요
        • 대칭키 암호에서 암호화키와 복호화키는 같다. 공개키 암호에서는 이 두개가 다르다.
        • 수신자는 미리 암호화키 (공개키) 를 송신자에게 알려준다. Eve 에게 알려져도 괜찮다. 송신자는 암호화키 (공개키) 로 암호화하여 수신자에게 보낸다.
        • 복호화는 복호화키 (개인키) 를 가지고 있는 사람(수신자)만 가능하다. 이러면 복호화키를 전달할 필요가 없다.
  • 공개키 암호 (public-key cryptography)
    • 개요
      • 대칭키 암호는 평문을 복잡한 형태로 변환해서 기밀성을 유지
      • 공개키 암호는 수학적으로 해결하기 곤란한 문제 (소인수분해, 이산대수…) 를 토대로 해서 기밀성을 유지
      • 전자문서의 무결성, 전자서명(부인방지) 구현에 활용
      • 다양한 암호 프로토콜에 사용
      • 공개키 암호에서는 암호화키와 복호화키가 분리되어 있음.
    • 수학적으로 해결하기 곤란한 문제
      • 소인수분해 문제
        • RSA
        • Rabin
      • 이산대수 문제
        • ElGamal
        • DSA (DSS)
        • ECC (타원곡선)
          • ECDSA
          • KCDSA
    • 과정
      • 1 : A가 세션키를 B의 공개키로 암호화
      • 2 : A가 암호화된 세션키를 B에 전송
      • 3 : B가 B의 개인키로 암호화된 세션키를 복호화
        • B의 공개키 / 개인키는 수학적으로 밀접한 관계가 있음
      • 4 : A 와 B의 키 교환 완료
  • RSA 암호시스템
    • 개요
      • 기본 개념
        • RSA 는 공개키 암호 알고리즘 중 하나
        • 세계적으로 사실상 표준
        • Rivest-Shamir-Adelman 의 첫 글자를 따서 붙여짐
        • 인수분해 문제해결의 높은 난이도를 이용한 가장 대표적인 공개키 암호 알고리즘
        • 디지털 서명의 용도로도 사용됨
        • SSL 프로토콜을 가진 웹 브라우저, PGP, 공개키 암호시스템을 사용하는 정부 시스템 등에서 사용
      • 암호화와 복호화
        • RSA는 e와 d 두 지수를 사용
          • A (송신자) : C = P^e mod n
          • B (수신자) : P = C^d mod n
            • e : 공개하는 값
            • d : 비밀로 유지하는 값
            • P : 평문
            • C : 암호문
            • n : 매우 큰 수
      • RSA 에 대한 공격
        • 소인수분해 공격
          • RSA 는 모듈러 값이 매우 커서 이 값을 적절한 시간 내에 소인수분해 하는 것이 불가능
          • B (수신자) 은 p와 q 를 선택하고 n = p * q 를 계산
            • n은 공개되지만 p와 q 는 비밀임
            • Eve가 n을 소인수분해하여 p와 q를 구할 수 있다면 Pi(N) 을 구할 수 있음
          • 소인수분해 알고리즘 (Factoring Attack) 이 개발되지 않는다면 RSA는 안전하다고 할 수 있음
        • 중간자 공격
          • 중간자 공격은 기밀성에 매우 유효한 공격 방법
          • 적극적 공격자 멜로리가 송신자와 수신자 사이에 들어가서 송신자에 대해서는 수신자처럼, 수신자에 대해서는 송신자처럼 행세하는 공격
          • 중간자 공격을 막기 위해서는 입수한 공개키가 밥의 것이라는 것을 확인할 수단인 인증이 필요하다.
  • Rabin 암호시스템
    • 개요
      • M.Rabin 이 고안, RSA 암호시스템의 변형
      • RSA는 지수 합동, Rabin은 2차 합동에 근거
    • 암호화와 복호화
      • Rabin 암호시스템에서 암호화는 매우 간단, 한 번의 곱셈으로 이루어짐
      • 성능이 낮은 플랫폼에서 잘 활용됨 (스마트 카드 등)
    • Rabin 시스템의 보안
      • p와 q 가 충분히 크기만 하면 안전 (mod N을 구하는 것이 어려움)
      • RSA 만큼 안전
  • ElGamal 방식
    • 개요
      • Taher ElGamal 이 발명
      • 이산대수 문제에 근거해서 만든 시스템 (오픈 소스를 기초, 키 분배 방식 및 공개키 암호 방식 실현)
      • 디지털 서명, 암호화, 키교환
      • Diffie-Hellman 암호화 기능의 확장, 속도가 느림
    • 암호화와 복호화
      • Bob의 공개키를 이용해 누구든 Bob에게 메시지를 보낼 수 있음
      • 고속 지수 알고리즘을 사용하면 다항식 정도의 복잡도를 가지는 시간 내에 수행 가능
      • 암호화에서는 암호문의 길이가 평문의 2배가 되어 버린다는 결점
    • 응용
      • RSA 를 활용할 수 있는 곳에는 어디에서나 사용 가능
      • 키 교환, 인증, 짧은 메시지의 암호화와 복호화에 사용
      • 암호 소프트웨어 GnuPG에 구현되어 있음
  • 타원곡선 암호 (ECC, elliptic curve cryptosystem)
    • 등장배경
      • RSA 와 ElGamal 이 안전한 비대칭키 암호시스템이기는 하지만 보안을 위해서 키의 길이가 매우 커야한다는 단점이 있음
      • 따라서 키의 길이가 짧아도 되는 암호시스템을 연구 -> ECC
      • 타원곡선 이론에 근거
    • 특징
      • 유한체 위에서 정의된 타원곡선 군에서의 이산대수 문제에 기초한 공개키 알고리즘
      • RSA 암호방식에 이어 전자상거래의 핵심 기술로 주목
      • 1985년 코블리치(N.Koblitz) 와 밀러(V.S.Miller)가 RSA 암호방식의 대안으로 처음 제안
      • RSA보다 키의 비트 수를 적게 하면서도 동일한 성능을 제공하는 것이 특징
        • 160비트 ECC는 1024비트 RSA 키와 동일한 보안수준
      • 다양한 암호방식 설계가 용이
        • H/W 와 S/W 로 구현하기 용이
        • 스마트카드나 무선통신단말기 등과 같이 메모리 처리능력이 제한된 응용 분야에 특히 효율적
        • 전자상거래의 핵심
      • ECC 는 RSA 보다 상대적으로 지명도가 부족, 배경이론이 복잡하며 해당 분야의 전문가가 적다는 단점이 있음
      • 빠른 속도로 구현이 가능
    • ECC 와 RSA 방식 비교

      항목 ECC 방식 RSA 방식
      기반구조 WPKI(무선) PKI(유선)
      속도 우수 느림
      키 크기 상대적으로 작은 키 ECC에 비해 큰 키
      적용 소형 Mobile환경 인프라가 다소 구현된 환경
  • 하이브리드 암호시스템
    • 대칭키 암호와 공개키 암호
      • 대칭키 암호 특징
        • 장점 : 대칭키 암호를 사용하면 기밀성을 유지한 통신이 가능
        • 단점(a) : 키 배송 문제가 발생
      • 공개키 암호 특징
        • 장점 : 키를 배송할 필요가 없음
        • 단점(a) : 대칭키 암호에 비해 처리속도가 느림
        • 단점(b) : 중간자 공격에 약함
      • 하이브리드 암호 시스템은 이 중 (a)의 문제를 해결하기 위한 방법
      • (b)를 해결하려면 인증이 필요
    • 개요
      • 대칭키 암호와 공개키 암호의 장점을 살릴 수 있도록 조합한 방법
      • 메시지를 고속의 대칭키 암호로 암호화함
      • 대칭키 암호의 키 기밀성을 위해 공개키 암호를 사용
        • 메시지 암호화에 사용한 대칭키 암호키를 공개키 암호로 암호화
    • 과정
      • 암호화
        • PRNG(의사난수 생성기)를 이용해 K(세션키) 생성
        • K 를 수신자의 Kpub(공개키)를 이용해 C1(암호문) 생성
        • P(평문) 는 K(세션키) 를 이용해 암호화(C2)
        • C1 과 C2를 결합 => 하이브리드 시스템 암호문
      • 복호화
        • 하이브리드 시스템 암호문 => C1 과 C2 를 분리
          • C1 : 세션키 암호
          • C2 : 메시지 암호
        • C1 은 수신자의 Kpri(개인키)를 이용해 평문 K(세션키) 를 추출
        • C2 은 K(세션키) 를 이용해 평문 P(메시지) 를 추출
    • 하이브리드 암호 시스템의 예
      • 공개키 암호의 처리 속도가 느린 것을 대칭키 암호로 해결, 대칭키 암호의 키 배송 문제를 공개키 암호로 해결
      • 유명한 암호 소프트웨어인 PGP 와 Web의 암호통신에 사용되고 있는 SSL/TLS 에서도 하이브리드 암호시스템 사용
      • PGP의 처리에서는 하이브리드 암호시스템에 디지털서명, 디지털서명의 검증, 개인키의 관리도 추가하여 사용됨.

댓글남기기