[네트워크] 암호화
1. 대칭키 암호화 (Symmetric-key Cryptography)
암호화와 복호화가 동일한 키로 이루어지며, 이 때 사용되는 키를 대칭키 라고 한다.
송신자가 대칭키를 사용해 평문을 암호화하여 암호문으로 만든 후 전송하면, 수신자는 동일한 대칭키를 사용해 암호문을 평문으로 복호화하는 단순한 구조이다. 즉, 송신자와 수신자가 동일한 대칭키를 공유해야 한다. 그렇다면 수신자와 송신자 중 한명이 대칭키를 생성하여 상대방에게 전송해야 하는데, 여기서 보안적인 문제가 발생한다. 또한, 사용자 수에 비례하여 각각 대칭키가 필요하기 때문에 키 관리가 복잡하고 어렵다.
하지만 단순한 만큼 비대칭키 알고리즘에 비하여 키의 크기가 작고 암호화 알고리즘이 단순하여 속도가 매우 빠르다는 장점이 있다.
대표적인 대칭키 암호 알고리즘으로는 AES, DES, 3DES, IDEA, SEED 등이 있다.
2. 비대칭키 암호화 (Asymmetric-key Cryptography)
대칭키 교환의 보안상 문제를 해결하기 위해 등장하였다. 암호화와 복호화에 다른 키가 사용된다.
암호화에는 공개키가 사용된다. 말 그대로 누구나 접근할 수 있는 키이다.
복호화에는 개인키가 사용된다. 수신자는 저마다 개인키를 가지고 있어 자신의 공개키로 암호화된 암호문을 해독할 수 있다. 다시 말하자면, 누구나 공개키로 암호화를 할 순 있지만 해당 키에 대응되는 개인키의 소유자만이 복호화할 수 있다.
비대칭키 암호화는 개인키만 관리하면 되기 때문에 키의 분배 및 관리가 용이하고 부인 방지 기능을 제공한다. 하지만 대칭키 알고리즘에 비해 키의 크기가 크고 암호화 알고리즘이 복잡하여 속도가 느리다.
1) RSA 암호화 알고리즘
현재 사용되는 비대칭키 암호화 알고리즘으로는 RSA 가 있다. “주어진 큰 숫자가 소수인지를 결정하는 빠른 알고리즘은 있지만, 주어진 큰 비소수의 소수 인자를 찾아내는 빠른 알고리즘은 없다.” 라는 것을 전제로 고안된 알고리즘이다.
전체적은 흐름은 다음과 같다. A가 B에게 데이터를 암호화하여 보내려는 상황을 가정해보자.
1) B는 공개키와 개인키를 생성하여 A에게 공개키를 전송한다.
2) A는 공개키를 사용하여 데이터를 암호화하고 B에게 전송한다.
3) B는 개인키를 사용해 데이터를 복호화한다.
공개키와 개인키를 생성하는 세부 과정은 다음과 같다.
1) 서로 다른 두개의 큰 소수 p, q를 선택한다. p와 q의 자리수가 클 수록 암호화의 안정성은 높아진다.
2) n=p*q 를 계산한다.
3) 오일러파이 φ(n)=(p-1)*(q-1) 를 구하고, φ(n)에 대해 상대적 소수이면서 φ(n)보다 작은 수 e를 선택한다.
이 때, (n, e) 는 공개키가 된다.
4) d*e = 1 mod φ(n) 를 계산하여 d를 구한다. 이 때, (n, d)가 개인키가 된다.
5) 평문 P로부터 암호문 C = P^e mod n 을 계산한다.
6) 암호문 C로부터 평문 P = C^d mod n 을 계산한다.
2) 전자서명
비대칭키 알고리즘을 이용해 사용자가 데이터에 자신임을 인증하는 전자서명을 입력해 자신임을 인증한다.
이때는 공개키가 복호화를 위해 사용되며, 개인키는 서명을 하는데 사용된다 (암호화라고는 할 수 없다).
전체적은 흐름은 다음과 같다
1) A는 공개키와 개인키를 생성한다.
2) A는 개인키를 사용해 데이터를 암호화(전자서명)을 한다.
3) B는 A의 개인키에 맞는 공개키로 복호화하여 A가 보낸 데이터임을 확인할 수 있다.
이러한 전자서명이 대표적으로 쓰이는 것이 공인인증서이다. 공인인증서는 CA (Certificate Authority) 라는 공인인증기관이 발급한다. CA도 공개키와 개인키가 있으며, 개인이 요청하면 개인키와 CA의 개인키로 서명된 공개키를 준다. 이 때 발급되는 공개키를 공인인증서 라고 한다.
어떤 사용자가 자신의 공인인증서를 은행에 등록하는 상황을 생각해보자. 사용자는 CA로부터 발급받은 공인인증서를 은행에 제출한다. 은행 입장에서는 이 공인인증서가 정말 CA가 발급한 것인지 모른다. 이를 CA의 공개키를 이용해 복호화하여 확인하고, CA가 발급한 것이 맞다면 등록된다. 이제 사용자는 로그인할 때 위와 같은 과정을 거쳐 자신임을 증명할 수 있다.
3. 하이브리드 암호화
대칭키 암호화는 속도가 빠르지만 키 관리가 힘들고 키 교환 과정에서 보안상의 위험이 있다.
비대칭키 암호화는 키 관리가 비교적 용이하지만 속도가 느리다.
하이브리드 암호화는 대칭키와 비대칭키 암호화의 장점만을 뽑아낸다. 전체적인 흐름은 다음과 같다.
1) A는 대칭키를 생성하고, B는 개인키와 공개키를 생성한다.
2) A는 대칭키를 사용해 데이터를 암호화하고 공개키를 사용해 사용된 대칭키를 암호화하여 전송한다.
3) B는 개인키를 사용해 복호화하여 대칭키를 얻고, 이 대칭키로 다시 복호화하여 데이터를 얻는다.
데이터는 대칭키를 이용하여 빠르게 암호화하고, 이 대칭키를 비대칭키 암호화를 사용하여 안전하게 전송하는 방식이다.
댓글남기기