-
AES와 SHA 차이보안 & 보안 2016. 7. 21. 09:48
이것저것 알아보다 보니 SHA와 AES의 차이가 무엇인지 궁금해졌습니다.. 보통 평문이나 암호화를 해야하는 부분은 AES를 사용하고 서버에서 인증서의 암호화가 필요한 부분은 SHA를 사용해 이 개념을 확실히 하기 위해 조사를 했습니다.
Encryption(암호화)와 Hash(해쉬)의 차이
암호화는 암호화 알고리즘을 이용하고, 인증은 해쉬함수를 이용하여 Verification Data를 만들어 원문에 태그(Tag)를 붙여서 전송하므로 해쉬함수를 이용합니다. 암호화 알고리즘과 해쉬 함수의 동작 방식을 이해하면, 암호화와 인증의 차이를 이해할 수 있습니다.
위의 왼쪽 그림은 암호화 알고리즘의 동작방식을 설명한 것이며, 암호화는 기본적으로 양방향 통신을 전제로 하므로 암호화와 복호화가 가능해야 합니다. 복호화되지 않는 암호화는 의미가 없는 것입니다. 위의 오른쪽 그림은 헤쉬함수의 동작 방식을 설명한 것이며, 헤쉬는 메세지를 고정된 길의의 문자열로 변환합니다. 헤슁을 통해 생성된 Message Digest는 복호화될 필요가 없습니다. 헤쉬는 메세지마다 다른 내용의 Message Digest를 만들기 때문에 메세지의 지문(fingerprint)으로 볼 수 있습니다.
정리하면, 암호화는 복호화를 전제로 양방향 통신을 위한 것이며, 헤쉬는 고정된 길이의 문자열을 생성하고 복호화를 할 수 없습니다.
해쉬의 이해
해쉬는 가변길이의 데이타를 고정된 길이의 문자열로 변환하는 역할을 하며, 복화화가 되지 않으므로 원문을 알수 없습니다. 대표적인 해쉬 알고리즘은 MD5 (Message Digest)와 SHA (Secure Hash Algorism)가 있습니다.
아래그림의 왼쪽 그림은 일반적인 해쉬 과정입니다.
일반적으로 헤쉬는 보안상의 문제가 있습니다. 원문을 해싱하여 Verification Data를 붙여서 전송하는 것이 일반적인데 전송 과정에서 누군가가 원문을 변환한 후에 Verification Data를 붙여서 수신자에게 보낸다면 수신자는 메세지의 변경 여부를 알지 못합니다.
그래서, 위의 오른쪽 그림과 Secret Key를 추가하여 Verification Data를 생성하는 것입니다. 원문메세지에 보안키를 추가하여 Verification Data를 생성합니다. 이를 MAC (Message Authentication Code)라고 합니다. 전송과정에서 보안키를 모르는 제 삼자가 메세지를 변경하게되면 수신자는 이를 검출할 수 있습니다. MAC은 인증과 무결성을 동시에 제공할 수 있으며, 암호화에 비해 연산이 빠르다는 장점이 있습니다. MAC은 생성 방식에 따라 다양하게 나눌 수 있는 데 IP Telephony에서는 HMAC (Hash-based MAC)을 주로 사용합니다.
여기서 대표적인 해쉬 알고리즘인 MD5와 SHA-1에 대해 초 간단하게 살펴보겠습니다.
MD5(Message Digest)
Rivers가 개발한 메세지 요약 알고리즘으로 큰 메세지를 압축해야 하는 전자서명 응용프로그램을 위해 개발되었으며, 최대 128 bit의 고정길이로 요약 가능합니다. 이름에서 보듯이 MD 5는 다섯번째를 의미하며, MD2는 8bit 컴퓨터를 위해 MD4와 MD5는 32bit 컴퓨터용으로 개발되었습니다. MD5는 과거에 라우터의 IOS에서 패스워드를 헤슁할 때 많이 쓰던 방식입니다. 보안이 취약하여 이제는 거의 쓰지 않습니다.
SHA (Secure Hasj Algorism)
미국 국가 안전 보장국 (NSA)에서 개발하였습니다. 1993년에 최초 개발된 함수는 SHA-0로, 후에 SHA-0를 변형한 함수는 SHA-1으로, 그 후에 발표된 SHA-224, SHA-256, SHA-384, SHA-512를 묶어서 SHA-2 라고 합니다. SHA-1이 가장 많이 쓰이며, TLS 및 SSL, IPSec에서 사용합니다. SHA-0과 SHA-1는 최대 160bit의 고정길이로 요약하고, SHA-2는 사용 함수의 뒤 숫자 만큼 가능합니다. SHA는 MD5보다는 느리지만, 강화된 보안을 제공하므로 많이 사용합니다.
헤쉬된 Verification Data 또는 MAC은 복호화가 되지 않으므로 수신자는 원문을 같은 방법으로 헤쉬합니다. 그래서 헤쉬된 값을 비교하여 결과를 확인합니다.
암호화의 이해
암호화는 크게 암호화와 복호화에 같은 키를 사용하는 대칭 암호화 (Symmetirx Encryption)과 서로 다른 키를 사용하는 비대칭 암호화(Asymmetirc Encryption)로 나누어집니다. 대칭 암호화의 대표적인 알고리즘은 DES, 3DES, AES과 있으며, 비대칭 암호화의 대표적인 알고리즘은 RSA입니다.
대칭 암호화 알고리즘은 빠르다는 장점이 있지만, 송신자와 수신자가 같은 키를 사용해야만 하고, 기기마다 다른키를 가지고 있으며, 자주 키를 바꾸어야 하기 때문에 관리가 어렵다는 단점이 있습니다. 대칭 암호화 알고리즘은 Email,SRTP, HTTPS 등의 어플리케이션에서 많은 양의 데이타를 처리하기 위해 사용합니다. 대표적인 대칭 알고리즘인 DES와 AES에 대해 초 간단하게 살펴보겠습니다.
DES (Data Encryption Standard)
미국 NIST (미 표준 기술 연구소)에서 정한 암호이며, 키 길이가 56비트로 너무 짧고 특히나 슈퍼키가 존재할 수 있다는 의심을 받고 있습니다. 3 DES는 DES를 세번 반복하는 것입니다. DES는 이제 역사속으로 사라지는 암호화 알고리즘 입니다.
AES (Advanced Encryption Standard)
미국 NIST에서 정한 암호이며, 32배수의 키 길이를 사용하나 128bit의 키 길이가 대세입니다. AES는 특히 무료로 공개되었기에 대부분의 보안 장비에서 사용하고 있습니다. AES는 Secure IP Telephony에서 가장 중요한 알고리즘으로 SRTP 및 Signaling 등에서 사용합니다.
비대칭 암호화 알고리즘은 너무 느린다는 단점은 있지만, 매우 안전하며, 키 관리가 단순하다는 장점이 있습니다. 따라서 적은 양의 데이타를 처리하는 데 주로 사용됩니다. 대표적인 비대칭 암호화 알고리즘인 RSA에 대해 초간단하게 살펴보겠습니다.
RSA
RSA는 Rivest, Shamir, Adleman라는 세명이 과학자에 의해 개발되었으며, 세 사람의 앞글자를 따서 이름을 만들었습니다. RSA의 키길이는 1024 또는 2048bit를 이용합니다. RSA는 소인수 분해를 기초로 만들어 졌습니다. 소인수분해는 하나의 숫자를 작은 소수의 곱으로 나누는 것입니다. 소인수 분해가 획기적으로 빠르게 할 수 있는 양자컴퓨터가 반들어지기 전까지는 대세 프로토콜입니다.
일반적인 공개키(Public Key) 알고리즘은 송신자가 수신자의 공개키로 암호화하여 전송하고, 수신자는 자신의 개인키(Private Key)로 복호화하므로 개인키를 가진 한 사람만이 암호화된 내용을 확인할 수 있습니다. 그러나, RSA는 개인키로 암호화하여 공개키로 복호화할 수 있습니다.개인키로 암호화는 단 한명 만이 할 수 있고, 공개키를 가진 누구든지 볼 수 있으므로 전자서명에 활용됩니다.
단순하게 대칭 암호화 알고리즘인 AES는 대용량 데이타를 처리하기 위해 사용하고, 비대칭 암호화 알고리즘인 RSA는 소용량 데이타를 처리하기 위해 사용합니다.
출처: https://nexpert.tistory.com/353