정보보안 - 비대칭키 암호
비대칭키 암호
- 키 배송 문제
- 개요
- 대칭키 암호를 사용하려면 키 배송 문제(key distribution problem) 발생
- 암호화 키와 복호화 키가 동일
- 키 배송 중 도청 가능성
- 해결방안
- 키의 사전 공유에 의한 해결
- 키배포 센터에 의한 해결
- Diffie-Hellman 키 교환에 의한 해결
- 공개키 암호에 의한 해결
- 대칭키 암호를 사용하려면 키 배송 문제(key distribution problem) 발생
- 키의 사전 공유에 의한 해결
- 안전한 키를 사전에 공유함
- 안전한 통로를 이용함
- 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는 e와 d 두 지수를 사용
- 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(메시지) 를 추출
- 하이브리드 시스템 암호문 => C1 과 C2 를 분리
- 암호화
- 하이브리드 암호 시스템의 예
- 공개키 암호의 처리 속도가 느린 것을 대칭키 암호로 해결, 대칭키 암호의 키 배송 문제를 공개키 암호로 해결
- 유명한 암호 소프트웨어인 PGP 와 Web의 암호통신에 사용되고 있는 SSL/TLS 에서도 하이브리드 암호시스템 사용
- PGP의 처리에서는 하이브리드 암호시스템에 디지털서명, 디지털서명의 검증, 개인키의 관리도 추가하여 사용됨.
- 대칭키 암호와 공개키 암호
댓글남기기