본문 바로가기

와사비크래커 IT Tip/보안

[보안] 비대칭키(Asymmetric key) 암호화

728x90
반응형

1     비대칭키(Asymmetric key) 암호화

1.1     비대칭키 암호의 개념

-      비대칭키 암호 시스템은 공개키 암호 시스템이라고도 하며 개별적 비밀에 기반을 두고 있다.

-      대칭키 암호 시스템은 기호를 대체하거나 치환하는 것이지만, 비대칭키 암호 시스템은 숫자를 다른 숫자로 변경하는 것이다.

-      송신자는 수신자의 공개키로 평문을 암호화하고, 수신자는 자신의 개인키로 암호문을 복호화한다.

1.2     비대칭키 암호 원리

1.2.1     비대칭키 암호 구조의 요소

-      평문 (Plaintext)

사람이 읽을 수 있는 메시지나 데이터로서 알고리즘의 입력으로 사용된다.

-      암호 알고리즘 (Encryption algorithm)

암호 알고리즘은 평문을 여러 가지 형태로 변환시킨다.

-      공개키와 개인키 (Public and private key)

한 쌍의 키로 이루어져 있다. 한 개는 암호화에 사용되고, 다른 하나는 복호화에 사용된다. 암호 알고리즘에 의한 변환은 입력으로 사용되는 공개키나 개인키를 이용해서 이루어진다.

-      암호문 (Ciphertext)

출력으로 나오는 스크램블된 메시지로 평문과 키에 의해서 생성된다.

-      복호 알고리즘 (Decryption algorithm)

평문을 암호화할 때 사용하는 키에 대응하는 키를 이용하여 암호문을 원래의 평문으로 변환하는 알고리즘이다.

비대칭키 암호 시스템

Figure  SEQ Figure \* ARABIC 41

1.3     비대칭키 암호 알고리즘

1.3.1     RSA 암호

-      1978MITRivest, Shamir, Adleman에 의해 고안된 암호체계로서 가장 널리 쓰이는 공개키 암호체계이다.

-      공개키 암호 알고리즘의 하나로서 공개키 암호와 디지털 서명에서 이용할 수 있다.

-      소인수분해의 어려움에 기반을 둔다.

1.3.1.1      RSA의 암호화

-      RSA에서는 평문, , 암호문 모두 숫자이다.

-      RSA암호화

s   RSA 암호문은 평문을 나타내는 수를 E 제곱해서 mod N을 취한 것이다.

암호문 = (평문)E mod N

s   (E, N)은 공개키이다.

s   EN은 어떤 수라도 되는 것은 아닌, 면밀한 계산에 의해 만들어진 수이다.

공개키

E와 수 N

암호화

암호문 = (평문)E mod N

1.3.1.2      RSA의 복호화

-      RSA에 의한 복호화는 암호화와 마찬가지로 간단하다.

-      RSA 복호화

s   암호문을 나타내는 수를 D 제곱해서 mod N을 취하면 평문을 얻을 수 있다. , 암호문을 D회 곱해서 그 결과를 N으로 나눈 나머지를 구하면 평문을 얻을 수 있다.

평문 = (암호문)D mod N

s   (D, N)은 개인키이다. , DN 모두를 알고 있는 사람만이 암호문을 복호화할 수 있다.

s   D는 어떤 수라도 되는 것이 아니다. 복호화의 키인 수 D는 수 E와 깊은 수학적 연관이 있다.

공개키

D와 수 N

암호화

평문 = (암호문)D mod N

1.3.1.3      RSA에 대한 공격

-      전수 공격 (brute force)

s   D를 알면 암호문을 복호화 할 수 있다.

s   RSA에 대한 공격 방법으로서 D의 후보가 되는 수를 순서대로 시도해서 복호화하는 전수 공격을 생각할 수 있다.

s   전수 공격은 D의 비트 수가 크면 클수록 시도해 보아야 할 수도 많아지기 때문에 계산이 복잡해지므로 시간이 오래 걸리며 어려워진다.

s   비트 수가 충분히 크면 전수 공격으로 수 D를 찾아내는 것이 불가능해진다.

-      중간자 공격 (man-in-the-middle)

s   RSA를 해독하는 것은 아니지만 기밀성에 대한 매우 유효한 공격 방법이다.

s   중간자 공격이란 적극적 공격자가 송신자와 수신자 사이에 들어가서 송신자에 대해서는 수신자처럼, 수신자에 대해서는 송신자처럼 행세하는 공격이다.

1.3.2     ElGamal 방식

-      Taher ElGamal에 의한 공개키 알고리즘이다.

-      RSA는 소인수분해가 곤란하다는 것을 이용했지만, ElGamal방식에서는 mod N으로 이산대수[1]를 구하는 것이 곤란하다는 것을 이용한다.

-      ElGamal방식에 의한 암호화에서는 암호문의 길이가 평문의 2배가 되어버린다는 결점이 있다.

-      암호 소프트웨어 GnuPG에 구현되어 있다.

1.3.3     Rabin 방식

-      Rabin방식은 mod N으로 평방근을 구하는 것이 곤란하다는 것을 이용하고 있다.

-      RSA는 큰 수 N의 소인수분해를 하지 않아도 해독할 수 있는 가능성이 있지만, Rabin방식에 의한 공개키 암호의 해독은 소인수분해를 행하는 것과 같은 정도로 어렵다는 것이 수학적으로 증명되어 있다.

1.3.4     타원 곡선 암호 (ECC: Elliptic Curve Cryptosystems)

-      최근 주목받고 있는 공개키 암호 알고리즘이다.

-      RSA에 비해 키의 비트 수를 적게 할 수 있는 것이 특징이다.

-      곡선을 정하고 그 곡선상에 있는 점에 대하여 특수한 연산을 정의하며, 이 연산의 역연산은 어렵다는 것을 이용한다.

1.3.5     Diffie-Hellman

-      두 사용자가 비밀키를 안전하게 교환해서 메시지를 암호화하는데 사용하는 것에 목적을 두고 있다.

-      Diffie-Hellman 알고리즘의 효율성은 이산대수 문제를 푸는 것이 어렵다는데 근거를 두고 있다.

-      공개키를 교환하여 상호 간에 사용할 비밀키를 생성한다

-      비밀키는 암호문의 생성과 평문의 복구를 위한 암호 및 복호키로 사용한다.

1.3.5.1      Diffie-Hellman 키 교환

-      송수신자가 어떠한 특정 정보를 서로 교환한다. 이 정보는 도청자가 읽어도 괜찮다.

-      교환한 정보를 가지고 동일한 키를 각각 만들어낼 수 있다. 이 때, 도청자는 같은 키를 만들 수 있다.

-      두 통신자 사이에 인증을 제공하지 못한다는 결점이 있다.

Diffie-Hellman  키 교환

1.4     대칭키 암호 시스템 vs 비대칭키 암호 시스템

-      대칭키 암호 시스템

s   기본 연산을 주로 이용하므로 계산이 빠르고 고속의 처리를 요구하는 IPSec에 사용된다.

s   암호키 관리: 네트워크에서 소요되는 전체 키의 개수가 많다.

s   암호키 분배: 사전에 비밀키가 안전하게 분배되어 있어야 한다.

-      비대칭키 암호 시스템

s   대칭키 암호 시스템의 단점인 암호키의 관리와 분배 문제를 해결하였다.

s   큰 정수와 연관된 멱승 연산이 포함되어 계산 시간이 많이 소요된다. 따라서 전자상거래 및 인터넷 뱅킹과 같은 응용에 사용된다.

1.5     비대칭키(공개키) 기반 구조

1.5.1     공개키 방식 메시지의 취약성

-      공격자는 위조된 A의 공개키를 사전에 B에게 배포한다.

-      공격자는 A의 문서를 가로채어 문서의 내용을 위조한다. 이 때, 위조된 A의 개인키로 전자서명을 생성하여 문서를 B에게 전송한다.

-      B는 공격자의 위조된 공개키로 수신한 문서를 인증하기 때문에 문서의 위조 사실을 확인하지 못한다.

1.5.2     공개키 방식에서 인증서의 필요성

-      사용자 A

s   공개키의 위조를 방지하기 위해서 자신의 공개키 및 개인 정보를 인증 기관에 인증서로 등록한다.

-      사용자 B

s   A의 공개키를 가져오기 위하여 A의 인증서를 인증기관에 요청한 후, 인증서에 포함된 A의 공개키로 수신한 문서를 인증한다. , 공격자가 위조한 서명인지를 확인한다.

1.5.3     공개키 기반 구조의 필요성

-      공개키 암호 시스템은 광범위한 응용이 가능하다.

s   인터넷 뱅킹 서비스

s   전자화폐 서비스

s   인터넷 쇼핑

s   각종 예약

s   전자우편의 송수신

-      공개키 암호 시스템의 광범위한 응용으로 공개키를 관리하고 분배하는 공개키 기반 구조(PKI: Public Key Infra-structure)가 요구된다.

1.5.4     공개키 기반 구조의 구성 요소

-      사용자

인증서를 발행받아 전자상거래나 인터넷 뱅킹 등을 사용한다

-      등록 기관 (Registration Authority)

인증서 신청자의 신원 확인 및 인증서 등록을 대행하는 기관이다.

-      인증 기관 (CA: Certificate Authority)

인증서의 생성, 배정, 관리 등의 작업을 수행하는 기관이다.

-      저장소

인증서나 인증서의 취소 목록을 저장하는 장소이다.

 

1.6     디지털 서명

1.6.1     전통적인 서명과 디지털 서명

-      포함 (Inclusion)

s   전통적인 서명은 문서에 포함되지만, 디지털 서명을 할 때에는 서명을 문서와 분리된 상태로 보낸다.

-      점검 방법 (Verification Method)

s   전통적인 서명의 경우 수신자가 문서를 받게 되면 수신자는 문서상의 서명을 파일상의 서명과 비교하여 문서 확인을 한다. 따라서 수신자는 비교를 하기 위해 해당 서명 파일을 가지고 있어야 한다.

s   디지털 서명의 경우 수신자는 메시지와 서명을 받게 되고 서명은 어느 곳에도 저장하지 않는다. 따라서 수신자는 점검 기술을 메시지와 서명에 적절히 적용하여 문서를 점검하고, 확실한지 아닌지를 알아낸다.

-      관계 (Relationship)

s   전통적인 서명의 경우 일반적으로 서명과 문서 사이에는 일--다수 관계가 성립된다. 한 사람이 많은 문서에 동일 서명을 할 수 있고, 서명과 메시지의 관계는 일--일 관계이다.

-      복제 (Duplicity)

s   전통적인 서명의 경우 서명된 문서의 복사본은 파일상의 원래 문서와 구별된다.

s   디지털 서명의 경우 문서에 타임스탬프[2] 같은 시간과 관련된 요소가 포함되어 있지만 않으면 구별이 불가능하다.

1.6.2     디지털 서명 과정

-      디지털 서명에서는 공개키 시스템이 필요하다. 따라서 서명자는 자신의 개인키로 서명을 하고 검증자는 서명자의 공개키로 서명을 검증한다.

-      디지털 서명 과정

1)     송신자는 서명 알고리즘(signing algorithm)을 이용해서 메시지에 서명을 한다.

2)     메시지와 서명은 수신자에게 전송된다.

3)     수신자는 메시지와 서명을 받고 이들에 검증 알고리즘을 적용한다.

4)     그 결과가 참이라면 메시지는 올바른 것으로 받아들여지지만 그렇지 않으면 그 문서는 거절된다

디지털 서명 과정

1.6.3     디지털 서명 서비스

-      메시지 인증

s   안전한 전통적인 서명처럼 안전한 디지털 서명 구조는 메시지 인증을 보장한다.

-      메시지 무결성

s   메시지 무결성은 전체 메시지에 서명을 할 경우에도 보장된다. 그 이유는 메시지가 변경되면 서명이 달라지기 때문이다.

s   현재 사용되는 디지털 서명 시스템은 해쉬 함수를 사용하여 서명과 검증 알고리즘을 만드는데, 이 알고리즘은 메시지의 무결성을 보장한다.

-      부인봉쇄

s   신뢰받는 제3자를 이용하면 부인 봉쇄를 할 수 있다.

-      기밀성

s   디지털 서명은 프라이버시를 보장해주지 못한다. 따라서 프라이버시가 필요하다면 암호화 및 복호화를 할 수 있는 또 다른 수단이 적용되어야만 한다.

 


[1] 이산대수: gx y mod m일 때, x를 모듈러 m에 대한 g의 이산대수라고 한다.

[2] 타임스탬프: 어느 시점에 데이터가 존재했다는 사실을 증명하기 위하여 특정 위치에 표시하는 시각이다. 공통적으로 참고하는 시각에 대해 시간의 기점을 표시하는 시간 변위 매개 변수이다.

반응형