해싱은 암호학 및 정보 보안의 핵심 개념입니다. 본 가이드에서는 해싱의 원리를 탐구하며, 암호학적 해시 함수의 작동 방식과 민감한 데이터 보호에서의 중요성을 설명합니다.
다양한 해시 함수의 유형, 특성, 그리고 비밀번호 저장, 데이터 무결성 검증, 디지털 서명과 같은 일반적인 응용 분야에 대해 알아보세요. 특정 사용 사례에 적합한 해시 함수를 선택하고 조직 내에서 안전한 해싱 관행을 구현하는 방법을 알아보세요.
 해싱 알고리즘이란 무엇인가?
해시는 MD5(Message Digest 5)나 SHA(Secure Hash Algorithm) 같은 해싱 알고리즘의 출력물입니다. 이러한 알고리즘은 본질적으로 고유하고 고정된 길이의 문자열, 즉 해시 값 또는 –8220;메시지 다이제스트”을 생성하는 것을 목표로 합니다. 컴퓨터상의 모든 파일은 궁극적으로 이진 형태로 표현될 수 있는 단순한 데이터이므로, 해싱 알고리즘은 해당 데이터를 받아 복잡한 계산을 수행한 후 계산 결과로 고정 길이의 문자열을 출력합니다. 이 결과가 바로 파일의 해시 값 또는 메시지 다이제스트입니다.
 Windows 10에서 파일 해시를 계산하려면 PowerShell의 내장 Get-FileHash cmdlet을 사용하고 해시 값을 생성하려는 파일의 경로를 입력하세요. 기본적으로 SHA-2 256 알고리즘을 사용합니다.
  파일 경로 뒤에 -Algorithm 스위치를 지정하여 다른 알고리즘으로 변경할 수 있습니다. 결과를 Format-List에 전달하면 더 읽기 쉬운 출력을 얻을 수 있습니다:
  Mac 및 Linux 사용자의 경우 명령줄 도구 shasum 및 md5가 동일한 목적을 수행합니다. 잠시 후 살펴보겠지만, Windows, Mac 또는 Linux를 사용하든 상관없이 특정 파일과 해싱 알고리즘에 대해 해시 값은 동일합니다.
해시가 어떻게 신원을 확인하는가
& 해시는 역산이 불가능하므로, 해싱 알고리즘으로 계산된 파일의 해시 결과만으로는 해당 파일의 내용을 재구성할 수 없습니다. 그러나 이로 인해 파일 내용을 전혀 알지 못하더라도 두 파일이 동일한지 여부를 판단할 수 있습니다.
이러한 이유로 결과의 유일성은 해시 개념 전체의 근간을 이룹니다. 서로 다른 두 파일이 동일한 다이제스트를 생성한다면 이는 "충돌(collision)"을 의미하며, 해당 파일의 신뢰할 수 있는 식별자로 해시를 사용할 수 없게 됩니다.
충돌 발생 가능성은 희박하지만 완전히 불가능한 것은 아니며, 이 때문에 SHA-1과 MD5를 대체한 SHA-2와 같은 더 안전한 알고리즘이 등장했습니다. 예를 들어, 다음 두 파일의 내용인 ship.jpg와 plane.jpg의 내용은 단순한 시각적 검사로도 분명히 다르므로 서로 다른 메시지 다이제스트를 생성해야 합니다.
  그러나 MD5로 값을 계산하면 충돌이 발생하여 파일들이 동일하다고 잘못 표시됩니다. 여기서는 macOS의 터미널 앱을 사용한 명령줄 출력 결과이지만, ship.jpg 해시 값이 앞서 PowerShell에서 얻은 값과 동일함을 확인할 수 있습니다:
 SHA-2 256으로 해시 값을 계산해 보겠습니다. 이제 예상대로 파일이 실제로 다르다는 것을 나타내는 더 정확한 결과를 얻습니다:
 해싱은 무엇에 사용되나요?
파일의 고유 식별자가 주어지면, 이 정보를 여러 가지 방식으로 활용할 수 있습니다. 일부 구형 안티바이러스 솔루션은 파일의 내용이나 동작을 검사하지 않고 해시 값만으로 파일이 악성인지 여부를 판단합니다. 이를 위해 내부 데이터베이스 시스템을 스캔할 때, AV 엔진은 사용자 컴퓨터의 각 실행 파일에 대해 해시 값을 계산하고 데이터베이스에 일치하는 항목이 있는지 확인합니다.
이는 사이버 보안의 초기 시절에는 깔끔한 해결책으로 보였겠지만, 후견지명(後見之明)으로 보면 해시 값에 의존하는 방식의 결함을 알아차리기 어렵지 않습니다.
 첫째, 악성코드 샘플 수가 폭발적으로 증가함에 따라 시그니처 데이터베이스를 유지하는 작업은 단순히 확장성이 없는 과제가 되었습니다. 매일 50만 개 이상의 고유한 악성코드 샘플이 등장하는 것으로 추정됩니다. 이는 해시에 의존하는 안티바이러스 엔진을 속여 샘플을 쉽게 인식하지 못하게 할 수 있다는 점을 악성코드 제작자들이 깨달았기 때문일 가능성이 매우 큽니다. 공격자는 파일 끝에 바이트 하나만 추가해도 다른 해시를 생성할 수 있습니다.   이 과정은 너무나 간단해서 악성코드 제작자들은  프로세스를 자동화할 수 있어 동일한 URL이 몇 초마다 다른 해시를 가진 동일한 악성코드를 피해자에게 전달할 수 있습니다.  둘째, 기존 안티바이러스의 결함은 항상 위협에 대한 사전 지식이 탐지에 필요하다는 점입니다. 따라서 알려진 해시 값 데이터베이스에 의존하는 안티멀웨어 솔루션은 설계상 다음 공격에 항상 한 발 늦을 수밖에 없습니다.   물론 그 해답은 행동 기반 AI 다층 방어 접근법을 취하는 보안 솔루션입니다.  그러나 해시 값이 전혀 가치가 없다는 뜻은 아닙니다! 오히려 파일을 고유하게 식별할 수 있다는 점은 여전히 중요한 이점을 제공합니다. 코드 서명이나 SSL과 같은 다양한 상황에서 디지털 서명 및 인증서에 해시 값이 제공되어 파일, 웹사이트 또는 다운로드의 진위 여부를 확인하는 데 도움을 줍니다.   해시 값은 보안 연구원, SOC 팀, 악성코드 추적자 및 리버스 엔지니어에게도 큰 도움이 됩니다. SentinelOne 및 기타 여러 기술 보고서에서 볼 수 있는 해시의 가장 일반적인 용도 중 하나는 해시 값을 사용하면 연구원들은 악성코드 샘플을 참조하고 침해 지표(Indicators of Compromise)를 공유하는 것입니다. 해시 값을 사용하면 연구원들은 악성코드 샘플을 참조하고 VirusTotal와 같은 악성코드 저장소를 통해 다른 사람들과 공유할 수 있습니다. VirusBay, Malpedia 및 MalShare.   위협 헌팅 또한 해시 값 덕분에 더 쉬워졌습니다. SentinelOne 관리 콘솔에서 IT 관리자가 해시 값을 사용하여 전체 시스템에서 위협을 검색하는 방법을 예시로 살펴보겠습니다. 해시는 한 대의 컴퓨터에서 위협을 식별하고 전체 네트워크에서 해당 파일의 존재 여부를 쿼리할 때 정말 유용합니다. SentinelOne 관리 콘솔에서 가시성 아이콘을 클릭하고 새 쿼리를 시작하세요. 이 경우 파일의 SHA1 해시값을 사용하여 지난 3개월 동안 해당 파일의 존재 여부를 확인해 보겠습니다.   좋습니다. 몇 가지 사례가 있는 것을 볼 수 있지만, 그 마법은 여기서 그치지 않습니다. 해시 검색을 통해 TrueContext ID를 확인했으며, 이를 통해 토끼굴 깊숙이 파고들어 이 파일이 정확히 무엇을 했는지 확인할 수 있습니다: 생성한 프로세스, 수정된 파일, 접속한 URL 등. 간단히 말해, 파일 해시에서 몇 번의 클릭만으로 전체 공격 시나리오를 재구성할 수 있습니다.   해시는 충돌을 피하는 안전한 해싱 알고리즘을 사용하는 한 두 파일이 동일한지 신뢰할 수 있게 알려주기 때문에 컴퓨터 보안의 기본 도구입니다. 그럼에도 위에서 살펴본 바와 같이, 두 파일이 동일한 해시를 가지지 않더라도 동일한 동작과 기능을 가질 수 있으므로, AV 탐지를 위해 해시 동일성에 의존하는 것은 결함이 있는 접근법입니다.&  그럼에도 해시는 IOC 공유나 위협 탐색 같은 보안 분석 작업에 여전히 유용하며, 컴퓨터 및 네트워크 보안 분야에서 일한다면 매일 접하게 될 것입니다.  이 글이 마음에 드셨나요? LinkedIn, 트위터, YouTube 또는 Facebook에서 저희가 게시하는 콘텐츠를 확인하실 수 있습니다.
 
 
 위협 헌팅에서 해시의 장점
 
 
 결론
 
 사이버 보안에 대해 더 알아보기
 "
해싱 FAQ
해싱은 데이터를 고정 길이의 문자열로 변환하는 일방향 암호화 기술입니다. 이 과정을 역으로 진행해 원래 데이터를 되찾을 수는 없습니다. 이는 디지털 지문과 유사하게 작동합니다 — 동일한 입력은 항상 동일한 해시를 생성하지만, 서로 다른 입력은 완전히 다른 출력을 생성합니다. 해싱은 비밀번호를 보호하고, 파일 무결성을 검증하며, 데이터가 변조되지 않았음을 보장합니다. 블록체인 기술과 디지털 서명에 필수적입니다.
"일반적인 예로는 "hello"라는 단어를 SHA-256 해싱하여 "2cf24dba4f21d4288094c30e2ede82c380cac19544bb5c4ab02f5b2db38500d3”을 생성하는 것입니다. 단 한 글자만 "Hello"로 변경해도 완전히 다른 해시 값이 생성됩니다. 암호 시스템은 해싱을 사용합니다. 암호를 생성하면 해싱 처리되어 저장됩니다. 로그인 시 입력한 암호는 해싱 처리되어 저장된 해시와 비교됩니다. 파일 무결성 검사도 변경 사항을 감지하기 위해 해싱을 사용합니다.
해싱은 무단 변경을 탐지하여 데이터 무결성을 보장합니다. 데이터베이스가 침해되더라도 비밀번호를 읽을 수 없게 만들어 보호합니다. 파일 다운로드가 손상되거나 악성코드에 감염되지 않았는지 확인할 수 있습니다. 해싱은 디지털 서명과 안전한 통신 프로토콜을 가능하게 합니다. 블록체인 기술과 암호화폐 보안의 핵심입니다. 해싱 없이는 전송 또는 저장 중 데이터가 변경되지 않았다고 신뢰할 수 없습니다.
"주요 해싱 계열은 MD(메시지 다이제스트), SHA(보안 해시 알고리즘), RIPEMD입니다. MD5는 128비트 해시를 생성하지만 현재는 안전하지 않은 것으로 간주됩니다. SHA-256은 현재 가장 널리 사용되며 256비트 해시를 생성합니다. SHA-3은 기존 알고리즘을 대체하기 위해 설계된 최신 표준입니다. 각 유형은 보안 강도, 해시 길이 및 계산 요구 사항이 다릅니다. 현대 시스템은 보안이 중요한 애플리케이션에 SHA-256 또는 SHA-3을 선호합니다.
"해싱은 일방향이며 되돌릴 수 없는 반면, 암호화는 양방향이며 되돌릴 수 있습니다. 해싱은 입력 크기 관계없이 항상 고정 길이의 출력을 생성합니다. 암호화 출력 길이는 입력 데이터에 따라 달라집니다. 해싱은 데이터 무결성을 검증하는 반면, 암호화는 데이터 기밀성을 보호합니다. 올바른 키로 암호화된 데이터를 복호화할 수 있지만, 해싱된 데이터를 원본으로 되돌릴 수는 없습니다. 둘은 서로 다른 보안 목적을 수행하며 종종 함께 사용됩니다.
"해싱은 원본 정보를 역추적하는 것을 불가능하게 함으로써 데이터를 안전하게 보호합니다. 공격자가 해시된 비밀번호를 훔쳐도 실제 비밀번호를 쉽게 알아낼 수 없습니다. 원본 데이터의 변경은 완전히 다른 해시를 생성하므로 변조가 탐지됩니다. 해싱은 암호화 키가 필요하지 않아 유출될 키가 없습니다. 실제 내용을 노출하지 않고 데이터 무결성 검증을 제공합니다. 이로 인해 비밀번호 저장 및 파일 검증에 이상적입니다.
"해싱은 빠른 데이터 검색 및 검증을 제공합니다. 원본 콘텐츠를 노출하지 않으면서 데이터 무결성을 보장합니다. 적절한 해싱 기법을 사용하면 비밀번호 보안이 크게 향상됩니다. 파일 무결성 검사가 간단하고 신뢰할 수 있게 됩니다. 해싱은 블록체인 기술과 안전한 거래를 가능하게 합니다. 계산 효율적이며 키 관리가 필요하지 않습니다. 디지털 서명 및 인증 시스템은 보안을 위해 해싱에 의존합니다. 데이터 중복 제거 및 효율적인 저장소 관리도 해싱의 혜택을 받습니다.
"
