디지털 공간을 오가는 수많은 데이터는 우리 눈에 보이지 않지만, 그 대부분은 다양한 형태로 변환되거나 코드화되어 있습니다. 모든 컴퓨팅 기기에서 핵심적인 역할을 하는 두 가지 암호학적 작업이 바로 해싱(hashing)과 암호화(encryption)입니다.
그렇다면 이 두 작업은 각각 어떻게 동작할까요? 그리고 해싱과 암호화는 서로 어떤 점에서 다를까요?
해싱(Hashing)이란 무엇인가?
해싱은 주어진 키 또는 문자열을 전혀 다른 값으로 변환하는 일방향(one-way) 암호학적 과정입니다.
해싱이 사용되는 이유는 여러 가지가 있는데, 첫 번째는 다양한 데이터 입력의 진위 여부를 검증하기 위해서입니다. 또한 인증 시스템 내부에서 활용되어, 민감한 데이터가 평문(plaintext) 형태로 기기에 저장되지 않도록 보호하는 역할도 합니다.
해싱 과정이 작동하려면 반드시 해시 함수(hash function)가 필요합니다. 해시 함수는 여러 형태로 존재하지만, 일반적으로 임의 크기의 데이터를 고정된 값으로 매핑(mapping)하는 데 사용됩니다. 즉, 해싱이 이루어지기 위해 필요한 수학적 알고리즘이며, 이를 통해 아무렇게나 들어온 데이터 조각들을 정해진 테이블이나 유사한 데이터 구조 안에 맞춰 넣게 됩니다.
해싱의 결과물을 '해시(hash)'라고 부릅니다. 해시는 보통 원본 데이터보다 짧은 길이의 문자열로 구성되며, 그 형태는 대체로 사용된 해시 함수에 의해 결정됩니다.
해싱은 일방향 방식이기 때문에 완전히 되돌릴 수 없다는 특징이 있습니다. 따라서 해싱이 한 번 진행되면 데이터를 원래 형태로 복원할 수 없습니다. 이런 이유로 해싱은 비밀번호 같은 데이터를 저장하는 용도로는 적합하지 않으며, 변환 후에는 해당 정보가 영구적으로 판독 불가능한 상태가 되기 때문입니다. 오히려 문서나 파일의 무결성을 검증하는 용도에 훨씬 더 잘 어울립니다.
한편, 블록체인에서도 보안 목적으로 해싱이 활용됩니다. 블록체인 위에서 해시가 생성되면 공격자가 네트워크에 침입하여 피해를 일으키는 것이 사실상 불가능해집니다.
그렇다면 암호화도 해싱과 똑같이 설명할 수 있을까요? 아니면 근본적으로 다른 방식일까요?
암호화(Encryption)란 무엇인가?
암호화라는 용어는 VPN 업체들이 인터넷 트래픽 처리 방식을 설명할 때 자주 사용하므로 한 번쯤 들어보셨을 겁니다. 하지만 암호화는 VPN을 넘어 훨씬 폭넓은 분야에서 활용되며, 민감한 정보가 어떻게 다뤄지는지 이해하려면 그 작동 원리를 알아두는 것이 중요합니다.
사실 우리는 이미 암호화를 사용하고 있습니다. 본인도 인식하지 못한 채 말이죠.
암호화는 데이터를 뒤섞어(scramble) 허가된 당사자 외에는 아무도 알아볼 수 없게 만드는 양방향(two-way) 암호학적 과정입니다. 데이터는 평문에서 암호문(ciphertext)으로 변환되어 악의적인 사용으로부터 보호받습니다.
개인도 자신의 데이터를 직접 암호화하여 안전하게 지킬 수 있습니다.
암호화는 되돌릴 수 있기 때문에, 암호화된 데이터에 접근 권한이 있는 당사자는 암호화 키, 즉 이진 키(binary key, 수학적 알고리즘)를 사용해 데이터를 다시 평문으로 복호화할 수 있습니다.
해싱과 마찬가지로 암호화 역시 처음에 데이터를 뒤섞기 위한 알고리즘이 필요합니다. 암호화 강도는 여러 단계로 나뉘며, 각 단계마다 비트(bit) 크기가 다릅니다. 해커들의 기술이 날로 정교해짐에 따라, 해독을 더욱 어렵게 만들기 위해 더 높은 비트 수가 요구되고 있습니다.
과거 암호화는 40비트 수준에 머물렀지만, 현재는 대부분의 표준 과정에서 128비트 암호화가 사용되고, 정부 기관들은 256비트 암호화를 활용하는 경향이 있습니다. 또한 상황에 따라 하이브리드(hybrid), 대칭(symmetric), 공개 키(public-key) 암호화 등 다양한 종류의 암호화 방식을 선택할 수 있습니다.
예를 들어 공개 키 암호화는 하나의 암호화 키는 개인적으로 보관하고, 다른 하나는 공개하는 방식입니다. 이는 비대칭 암호화(asymmetric encryption)라고도 알려져 있습니다. 공개 키로 암호화된 데이터는 오직 개인 키로만, 개인 키로 암호화된 데이터는 오직 공개 키로만 복호화할 수 있습니다.
이러한 암호화 방식은 HTTPS(Hypertext Transfer Protocol Secure)에 적용되어 온라인 웹 브라우징의 보안 수준을 높이는 데 기여하고 있습니다.
해싱과 암호화, 컴퓨팅의 두 축
해싱과 암호화는 여러 면에서 서로 다르지만, 두 기술 모두 우리가 매일 사용하는 기기와 시스템이 작동하는 데 없어서는 안 될 필수 요소입니다. 비밀번호를 보호해야 할 때든, 네트워크를 안전하게 유지해야 할 때든, 해싱과 암호화는 지난 수십 년간 디지털 보안의 든든한 기둥 역할을 해온 놀라운 프로토콜입니다.