#대칭키와 공개키

Programming 2017. 10. 26. 17:06

 대칭키 암호 방식

대칭키(혹은 공통키) 암호 방식은 교환하려는 송신자와 수신자가 사전에 공통키를 침입자에게 노출되지 않게 나눠 가진 다음, 소잇ㄴ자는 공통키로 평문을 암호화하여 공중 통신로를 통해 수신자에게 전송하고, 수신자는 똑같은 공통키를 가지고 암호문으로부터 평문을 복호화하는 암호 방식이다.

대칭키 암호 방식은 오래 전부터 사용되어 왔기 때문에 여러 가지 알고리즘이 개발되어 있으며, 알고리즘 특성상 암호화와 복호화의 계산량이 적은 장점을 갖고 있다.

그러나, 통신을 하려는 상호 간에는 암호 통신을 하기 전에 제 삼자에게 도청되지 않게 키를 전송해야 하며, 모든 상대 통신자에 대하여 비밀키 하나씩을 준비해야 하므로 키 종류가 많다. 대표적인 방식으로는 DES(Data Encryption Standard)가 있다.

DES 알고리즘은 사용자가 제공하는 56bit의 키와 8bit의 parity bit을 사용하므로 키를 찾아내기 위해서는 의 가능한 조합공간을 갖게 되며, 한번에 64bit의 입력 블록과 키의 각 bit에 대한 연산을 수행하여 출력 비트를 만들어 내게 된다. 따라서, 모든 조합을 시도해 보는 것은 계산 이론상 불가능하다. 이 출력 비트들의 모임이 암호문이 되는데, 수신자 측에서 이 암호문과 동일한 키를 사용하여 복호화 하게 된다. 따라서 복호화 알고리즘은 암호화 알고리즘의 역함수이다.

그러나 DES 알고리즘은 너무 오래되어 취약점이 발견됨에 따라 AES 알고리즘으로 대체되었다. AES는 현재 가장 보편적으로 쓰이는 암호화 방식으로, 128~256bit 키를 적용할 수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구나 사용할 수 있다.


 공개키 암호 방식

공개키(또는 비대칭) 암호 방식은 암호 통신을 하려는 가입자 전체가 암호화 키와 복호화 키 한 쌍씩 생성시켜 암호화 키는 공개 파일에 등록하고 복호화 키는 비밀리에 보관하는 방식이다. 이 때, 암호화 키를 공개키, 복호화 키를 비밀키라고 하며 서로 다른 키를 사용한다. 즉, 대칭키와는 달리, 공개키 방식에서는 암호화 키와 복호화 키가 서로 다르고, 암호화 키는 공개되어 있으며, 수신자 모두의 키를 비밀리에 가지고 있을 필요가 없다.

공개키로 암호화한 암호문은 어차피 개인키를 가진 사람만이 풀어볼 수 있으므로 상호 간에 공개키만 교환하고 상대의 공개키로 암호화를 해서 데이터를 교환하면 상대는 자신의 개인키로 복호화를 한다. 따라서 키 배송 문제는 근본적으로 발생하지 않는다.

그러나 공개키 방식은 암/복호화가 대칭형 암호에 비해 현저하게 느리다. 따라서 현실적으로는 비대칭형 암호를 이용하여 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 식으로 상호보완적으로 이용하는 것이 일반적이다.

공개키 암호 시스템의 공통적인 특징은 송신자의 신원 확인이 어려우며, 따라서 별도의 방법을 통해 신원 확인을 해야한다는 것이다. 공개키 암호 시스템의 대표적인 예로는 RSA(Rivest Sharmir, Adleman)가 있다. 1978년 Rivest, Shamir와 Adleman에 의해 제안된 RSA는 수치해석 이론에 근거한 최초의 공개키 암호 시스템으로, 매우 큰 정수의 인수분해가 어렵다는 가정하에서 설계되었으며 부분적으로 모듈러 연산에 기초하고 있다.


참고 자료

엄영익·정태명 공저『컴퓨터 운영체제론』, 생능출판사

나무위키,『암호 알고리즘』

'Programming' 카테고리의 다른 글

#가변 할당 기반 교체 기법  (1) 2017.10.30
# 스토어드 프로그램 예외 발생 정리  (0) 2017.10.27
#쿠키와 세션의 차이  (0) 2017.10.25
#프로세스 스케줄링  (0) 2017.10.19
#페이지 교체 알고리즘  (0) 2017.10.18
admin