업무 현장에서 궁금해 할 만한 개인정보 관련 법,제도,정책,사례 등을 개인정보보호위원회 전문가들이 골라서 설명해드립니다. 개인정보 관련 모니터링과 사전검토가 필요한 기업에는 가이드가 되고, 개인정보에 관심이 많은 분들께는 현안, 이슈를 두루 살펴볼 수 있는 유용한 창구가 되기를 기대합니다. 소재에 관한 제언이나 그 이외의 의견은 언제든지 환영합니다. pipcpr@korea.kr 로 연락주시기 바랍니다.
[9.23.(월). 발행]
해시처리한 개인정보는 개인식별이 불가능할까?
1부 - 해시의 의의와 안전성
정보보안 실무에서는 개인정보를 보호하기 위한 방법의 일환으로 개인정보를 그대로 저장하거나 전송하는 대신 해시처리를 통해 안전성을 강화하기도 합니다.
해시는 데이터 보호에 효과적인 방법 중 하나로 알려져 있지만, 해시처리된 개인정보에 대해서도 공격이 가능한 경우도 일부 있을 수 있습니다. 이번 글에서는 해시가 무엇이고 왜 사용하는지, 해시처리된 정보는 어떻게 처리하면 안전한지 대해 알아보도록 하겠습니다.
1. 해시(Hash)란 무엇인가?
해시(Hash)란 임의의 길이를 가진 데이터를 고정된 길이의 값으로 변환하는 알고리즘입니다. 예를 들어, “Cat”이라는 입력값을 해시처리하면 “fa3ebd6742c360b2d9652b7f78d9bd7d”과 같은 복잡한 값으로 변환됩니다. 해시를 사용하면 긴 문장이나 파일도 일정한 길이의 해시값으로 변환할 수 있습니다.
해시는 입력값에 아주 민감하여, 입력이 조금만 달라져도 해시값이 완전히 달라집니다.
(예시) “Hello, PIPC”와 “Hello, PIPC!”의 해시값 비교 (해시알고리즘 MD5 적용)
■ 입력값 1: “Hello, PIPC” → 출력값: “bb95963c55d1acc7002b5e022a4eb5f8” ■ 입력값 2: “Hello, PIPC!” → 출력값: “dd71adb92dafba5eda7e06cbb491673f” |
예를 들어, 입력값에 느낌표(!) 하나만 추가했음에도 전혀 다른 해시값이 나오는 것을 볼 수 있습니다. 이러한 특징 덕분에 해시는 데이터가 변조되지 않았는지를 검증하는 ‘무결성’ 검증에 유용하며, 실제 수사·재판에서 원본 파일이 변경되지 않았음을 증명하는 방법으로도 활용됩니다.
해시는 해시처리된 값을 다시 원래의 입력값으로 되돌릴 수 없다는 ‘비가역성’도 가지고 있습니다.
마치 과일을 믹서기로 갈아 만든 주스를 다시 원래의 과일로 되돌릴 수 없듯, 해시값도 한 번 생성되면 원본 데이터로 다시 복구할 수 없습니다(정확히는 원본 데이터로 복원할 수 있는 계산식(역함수)이 없음). 이러한 특성 덕분에 해시는 개인정보 보호에도 효과적입니다. 비밀번호를 해시처리하여 저장하면, 해커가 해시값을 탈취하더라도 이를 원래 비밀번호로 복원해내는 것은 매우 어렵습니다.
2. 해시와 암호화는 어떻게 다를까?
그렇다면 해시와 암호화는 같은 것일까요? 둘 다 데이터를 보호해주는 역할을 한다는 측면에서는 비슷하지만 그 목적과 동작하는 방식은 차이가 있습니다.
암호화는 데이터를 읽기 어려운 형태로 변환하여 보호하면서, 복호화 키를 사용하여 원본 데이터로 다시 복원할 수 있는 기술입니다. 예를 들어, 비밀번호를 암호화하면 올바른 키를 가진 사람만 그 비밀번호를 복호화하여 원래 상태로 되돌릴 수 있습니다. 이처럼 암호화는 데이터를 보호하지만, 필요할 때는 다시 되돌릴 수 있는 양방향성을 갖습니다.
해시는 데이터를 고정된 크기의 값으로 변환한 후 복원이 불가능하게 만드는데 초점이 있습니다. 해시의 주 목적은 데이터가 변조되지 않았는지 검증하는 데 있습니다. 예를 들어, 중요한 파일이 손상되지 않았는지를 확인할 때 그 파일의 해시값을 계산하여 저장한 후 나중에 동일한 값이 나오는지 비교하는 방식으로 무결성을 확인할 수 있습니다. 하지만 해시값으로는 원본 파일을 복원할 수 없기에 해시는 일방향성을 갖습니다.
비유하자면, 암호화는 파일을 잠금장치에 넣어두고 열쇠로 잠그는 방식입니다. 키를 가지고 있으면 언제든지 잠금을 해제해 파일을 꺼낼 수 있습니다. 반면 해시는 파일을 분쇄기에 넣고 잘게 부숴버리는 것과 같아, 한번 처리된 파일을 다시 원래 상태로 되돌릴 수 없습니다.
이처럼 암호화는 양방향으로 데이터를 복원할 수 있지만, 해시는 비가역적으로 데이터를 보호하고 무결성을 검증하는 데 사용됩니다.
3. 취약한 해시 알고리즘도 있다? : 해시 충돌의 위험성
모든 해시 알고리즘이 안전한 것은 아닙니다. 해시는 “다른 입력이 들어왔을 때 다른 해시값이 출력된다”는 성질이 유지되어야만 안전합니다. 그런데 출력 길이가 짧거나 보안성이 낮은 해시 알고리즘은 ‘해시 충돌’ 이라는 문제를 일으킬 수 있습니다.
해시 충돌이란 서로 다른 두 데이터가 동일한 해시값을 생성하는 현상을 말합니다. 마치 다른 과일을 믹서기에 넣었는데도 동일한 과일 주스가 나오는 것과 같습니다. 만약 믹서기에 수입산 과일을 넣든 국산 과일을 넣든 동일한 과일주스가 나온다면, 판매자는 수입산 과일을 넣고도 국산 과일을 넣었다고 속여 판매할 수 있을 것입니다. 마찬가지로 해커가 파일A와 파일B가 동일한 해시 값을 가진다는 것을 알아낸다면 시스템을 속여 파일A 대신 파일B를 승인받을 위험이 생기게 되는 것입니다.
실제로 MD5(Message Digest Algorithm 5)는 1990년대에 가장 널리 사용되었던 해시 알고리즘이었으나, 시간이 지나면서 해시 충돌이 쉽게 발생할 수 있다는 취약점이 발견되었습니다.
MD5는 128비트 길이의 해시값을 생성합니다. 비트는 0과 1로 이루어져 있기에 MD5의 결과물로 나올 수 있는 해시값은 총 2의 128제곱 가지의 경우의 수가 존재하나, 이는 컴퓨터가 처리할 수 있는 현대적인 계산 능력으로는 너무나 적은 값입니다.
입력 데이터의 수는 무한한 반면, MD5의 출력되는 해시값은 128비트로 제한되기 때문에 서로 다른 입력값인데도 같은 해시값을 가지는 충돌 가능성이 커지게 되는 것입니다. 현대의 고성능 컴퓨터로는 이러한 충돌을 쉽게 찾아낼 수 있게 되었고, MD5는 더 이상 보안 목적으로 권장되지 않게 되었습니다.
4. 더 강력한 해시 알고리즘 : SHA-256
이러한 문제를 해결하기 위해 개발된 것이 SHA-256(Secure Hash Algorithm 256-bit)입니다. SHA-256은 미국 국가안보국(NSA)이 설계하고 미국 NIST(국가표준기술연구소)가 표준화한 SHA-2 해시알고리즘 중 하나로, MD5와 같은 충돌 문제를 방지하기 위해 고안되었습니다.
SHA-256은 256비트의 출력값을 생성하므로 MD5와 비교하여 해시 값 조합(2의 256제곱)이 훨씬 많아 현재까지 충돌 공격이 실질적으로 성공한 사례가 없고, 복잡한 알고리즘 구조 덕분에 현재까지 매우 안전한 것으로 알려져 있습니다. 또한 SHA-256은 비트코인 같은 암호화폐에서 사용될 정도로 신뢰할 수 있는 알고리즘으로, 다양한 국제 표준기구와 국내외 보안기관에서도 널리 권고되고 있습니다.
(예시) “Hello, PIPC”와 “Hello, PIPC!”의 해시값 비교 (해시알고리즘 MD5, SHA-256 적용)
(MD5 : 출력값 128비트) ■ 입력값 1: “Hello, PIPC” → 출력값: “bb95963c55d1acc7002b5e022a4eb5f8” ■ 입력값 2: “Hello, PIPC!” → 출력값: “dd71adb92dafba5eda7e06cbb491673f”
(SHA-256 : 출력값 256비트) ■ 입력값 1: “Hello, PIPC” → 출력값: “fe047487207fc8809939b16f917626e8b70adda121df9440fc9148b067693590” ■ 입력값 2: “Hello, PIPC!” → 출력값: “4a0ad38bf01811a33398027fea01411dfb21471f61da5609f934211ad2b04ab8” |
그러나, 아무리 안전한 해시 알고리즘이라고 해도 입력값이 제한된 상황 등 특정 조건에서는 여전히 취약할 수 있습니다.
다음 편에서 해시처리된 개인정보임에도 불구하고 개인이 식별될 수 있는 상황과 해결방안에 대해서 살펴보도록 하겠습니다.
개인정보보호위원회 데이터안전정책과 주문호 사무관