해쉬 함수와 IPSec/ SSL VPN의 동작원리는 어떻게 되나요?
그럼 다음으로 해쉬 함수에 대해 알아보도록 하겠습니다. 앞에서 설명한 대칭, 비대칭키 방식은 암호화도 할 수 있고 복호화도 할 수 있는 양방향 암호방식이라면, 해쉬 방식은 암호화는 할 수 있지만 복호화가 되지 않는 단방향 암호방식입니다. 아래 <그림 1>과 같이 "Hello!"라는 단어를 해쉬 함수의 하나인 SHA256를 이용하여 암호화하게 되면 334~로 시작하는 특정하게 고정된 길이의 문자열이 생성됩니다.
이 문자열은 내용이 동일한 파일이면 언제든지 동일한 값이 생성됩니다. 그런데 여기에서 느낌표를 제거하고 "Hello"라고 변경한 이후에 SHA256으로 암호화하게 되면 185~로 시작하는 완전히 다른 문자열이 생성됩니다. 즉 문서에서 한 글자라도 변경되면 결괏값이 완전히 바뀌기 때문에 문서의 내용이 조작, 변경된 경우나 프로그램의 원본 파일에 악성코드나 백도어 등이 숨겨져 있는지 검증이 가능합니다.
이런 기능을 이용하여 데이터를 보낼 때 미리 보내는 파일을 해쉬 함수로 돌려서 결괏값을 같이 동봉하여 보내면, 받는 쪽에서 같은 해쉬 함수를 이용하여 결괏값을 생성하여, 동봉한 결괏값과 같으면 원본 파일에 문제가 없는 것이고, 같은 값이 아니면 데이터가 전송 중에 조작, 변경되었다는 것을 확인할 수 있습니다. 해쉬 함수로 생성한 결괏값을 이용하여 역으로 단어를 복원할 수는 없습니다. 대상 파일의 크기에 관계없이 동일한 크기로 결괏값이 생성되기 때문에, 한쪽 방향으로만 암호화할 수 있지 반대 방향으로 복호화가 불가능하기 때문에 단 뱡향 암호방식이라고 불립니다.
그럼 위해서 설명한 대칭키, 비대칭키, 해쉬 함수를 이용하여 VPN이 어떻게 작동하는지 알아보도록 하겠습니다. 아래 <그림 2>과 같이 서울 방송국과 부산방송국의 VPN 장비 간 트래픽을 전송하기 전에 터널을 생성하여야 합니다. 크게 2단계를 거쳐서 전송 준비단계가 완료되게 되는데 1단계(Phase 1)에서는 비대칭키 방식과 디피-헬먼 키 교환(Diffie-Hellman key exchange) 방식을 이용하여 양쪽 장비에 안전하게 대칭키를 생성시킵니다. 2단계(Phase 2)에서 1단계에서 생성한 대칭키를 이용하여 최종적으로 트래픽을 암 복호화할 때 사용할 대칭키(IPSec Key)를 한번 더 생성하여 데이터를 안전하게 전송할 준비를 마치게 됩니다.
VPN 장비 간에 터널을 생성한다는 말은 결국 암복호화에 사용할 대칭키를 양쪽 장비 간에 안전하게 공유하고 수신한 데이터를 검증하기 위해 어떤 해쉬 함수를 사용할지, 대칭키가 유효한 기간을 어떤 단위로 결정할지 등을 합의한다는 것을 의미하며, 터널 생성에 대략 1~3초 정도가 소요됩니다. 이렇게 생성한 대칭키를 계속 사용하게 되면 보안성이 떨어지기 때문에 트래픽 양이나 사용한 시간에 따라 갱신하게 되어 있습니다.
예를 들면, 양쪽 장비에서 주고받은 데이터양이 10 Gbyte 단위로 혹은 사용한 시간이 1시간 단위로 새로운 대칭키를 생성하여 사용하기 때문에 키값이 유출되더라도 안전한 통신을 유지할 수 있는 장점이 있습니다.
최초로 출시된 VPN 장비는 VPN 기능만 작동하는 장비였습니다. 그런데 VPN의 위치가 외부 네트워크와 연결되는 게이트웨이 위치에 설치되다 보니, 방화벽 장비와 같은 위치에 설치되는 경우가 많았습니다. 이러다 보니, 방화벽과 VPN 장비를 통합해서 나오는 추세가 많아져서, 현재 공급되는 방화벽은 기본적으로 VPN 기능이 같이 포함되어 있는 제품이 대부분입니다.
VPN의 기능이 대칭키를 이용하여 트래픽을 암 복호화하는 것이기 때문에, 장비의 CPU 성능에 따라 트래픽 처리 성능이 다양한 여러 가지 모델로 공급되고 있습니다. 통상 서울에 있는 전산센터를 중심으로 해서 여러 곳의 지방 방송국과 VPN을 연결하기 때문에 서울전산센터에 있는 VPN 장비는 처리 성능이 높은 모델을 배치하고 지방 방송국은 규모에 따라 중소형 장비를 설치하게 됩니다.
최근 코로나 19 사태로 재택근무를 하는 사례가 늘어나고 있습니다. 재택근무를 하게 되면 자택에서 회사 내의 전산 자원에 접속해서 다양한 업무 데이터나 문서를 주고받아야 하기 때문에 보안적인 대비책이 준비되어 있어야 합니다. 재택근무를 하기 위해서는 다양한 준비가 필요하지만 최우선으로 필요한 사항이 자택에서 회사 서버와 안전하게 업무를 볼 수 있는 통로를 마련하는 것입니다. 데이터를 안전하게 관리하기 위해서는 사내 네트워크에 접근할 때 허가된 회사 임직원이라는 것을 증명하는 것과 접속 후 자택의 단말과 사내 서버 간 데이터가 안전하게 전송되는 것이 필요합니다.
이러한 요구사항에 대응할 수 있는 장비가 바로 SSL VPN 장비입니다. 앞에서 설명드린 VPN은 IPSec 기반의 장비로 주로 지역 방송국과 같이 고정되어 있는 사용자를 위해서 사용되고 있습니다. IPSec VPN 장비가 설치되어 있는 사무실이라면 사용자가 별도의 접속을 할 필요 없이 접속을 원하는 전산실의 서버 IP주소로 접근이 가능합니다. VPN 장비 간에 자동으로 터널을 생성하고 있다가 접속을 원하는 IP주소가 터널을 이용해야 하는 것으로 확인되면 자동으로 터널을 통해 전산실 서버와 데이터를 주고받을 수 있게 동작합니다.
그에 비해 SSL VPN 장비는 지역 방송국과 같이 특정한 위치에 고정되어 있는 사용자가 아니라 출장이나 현장기자 혹은 재택근무자와 같이 위치가 유동적인 사용자의 VPN 연결을 지원하는 데 사용합니다. 우선 사용자는 단말이 인터넷 접속이 가능한 상태에서 웹브라우저를 통해 자사의 SSLVPN 장비에 접속 후, 아이디, 패스워드를 입력하여 접속이 허가된 사용자임을 인증받고 단말과 SSLVPN 장비 간에 암호화 방식과 대칭키, 사용할 해쉬 함수 등을 합의하여 터널을 생성하게 됩니다. 즉 IPSec 방식은 장비와 장비 간에 터널이 생성되는 것이고, SSL방식은 단말과 장비 간에 터널이 생성된다고 할 수 있습니다.
SSL방식은 VPN 장비와의 연결뿐만 아니라 웹 서버와 암호화 통신이 필요할 때도 이용되고 있습니다. 최근 대부분의 웹서비스는 HTTP에서 HTTPS방식으로 많이 넘어가고 있습니다. 바로 여기에 SSL 방식이 사용되고 있습니다. 아래 <그림 3 >와 같이 기존의 HTTP 방식에서 암호화 통신을 위해 SSL 기반의 암호화 기술을 이용하면 HTTPS방식으로 변경되는 것입니다.
SSL방식에서 터널을 만드는 절차도 기존 IPSec 방식과 대체적으로 비슷합니다. 아래 <그림 4>과 같이 클라이언트가 서버의 인증서를 받아서 검증기관을 통해 밑을 수 있는 서버인지 확인하고, 앞으로 사용할 암호화 종류를 협상해서 결정합니다. 그런 다음 서버의 인증서에 있는 공개키를 통해 클라이언트가 생성한 대칭키를 암호화해서 보내면, 서버는 자신의 개인키를 통해 복호화해서 클라이언트와 동일한 대칭키를 안전하게 획득하여 안전한 통로를 생성하게 됩니다. 이후에 데이터 전송은 이렇게 획득한 대칭키를 이용하여 암호화하고 복호화하며 인터넷상에서 안전하게 데이터를 주고받을 수 있게 됩니다.