21세기 초, 보안 해시 알고리즘(SHA)은 해커와의 싸움에서 가장 핵심적인 도구 중 하나였습니다. 적은 노력으로 데이터를 암호화하면서도 이를 해독하려면 막대한 하드웨어 자원이 필요했기 때문에, 지난 수십 년간 우리의 계정과 데이터를 안전하게 지켜왔습니다. 그런데 놀랍게도 모든 주요 브라우저 개발사들이 SHA-1을 완전히 버리고 더 강력한 후속 격인 SHA-2로 전환해야 한다는 데 의견을 모으고 있습니다. 왜 갑자기 2017년까지 SHA-1을 단계적으로 폐지하려는 것일까요? 그리고 두 알고리즘이 공존할 수 없는 이유는 무엇일까요?
해싱(Hashing)이란 무엇인가?
SHA를 제대로 이해하려면 먼저 해싱이라는 작업의 과정과 목적을 살펴봐야 합니다. 해시(hash)는 특정 데이터를 대표하는 문자열이지만, 그 데이터 자체를 대체하지는 않습니다. 쉽게 말해 대부분의 암호화 알고리즘과 달리, 문장을 해싱할 수는 있지만 '역해싱(un-hash)'할 수는 없다는 뜻입니다.
이것이 유용한 이유는 목적지 서버가 데이터의 내용까지 알 필요가 없기 때문입니다. 서버는 사용자가 입력한 값의 해시를 데이터베이스에 저장된 해시와 비교하고, 두 값이 일치하면 인증을 통과시키면 됩니다. 바로 이런 이유 때문에 계정 비밀번호를 저장할 때 해시가 매우 유용합니다. 서버는 실제 비밀번호를 몰라도 사용자를 인증할 수 있기 때문입니다.
그렇다면 왜 SHA-1을 폐지하는가?

해시를 실제 데이터로 되돌리는 것이 그렇게 어렵다면, 왜 모두가 이렇게 급하게 폐지하려는 것일까요? 그 답은 모두 하드웨어에 있습니다.
해시는 누군가 서버에 저장된 값과 일치하는 해시를 만들어내는 입력값을 찾아낼 수 있다면 '해킹'당할 수 있습니다. 예를 들어 여러분의 계정 비밀번호 해시가 b27263b7466a56b1467822108f5487422d054bbb라면, 해커는 그 정확한 조합을 만들어내는 또 다른 텍스트(반드시 원래 비밀번호일 필요는 없습니다)만 찾으면 됩니다. 과거에는 이런 작업을 현실적인 시간 안에 수행할 수 있는 하드웨어를 확보하는 데 막대한 비용이 들었습니다. 그러나 2015년에는 GPU 클러스터만으로도 이 모든 것이 가능해졌습니다. 하드웨어가 점점 더 강력하고 저렴해지면서 SHA-1을 해독하는 비용이 크게 낮아졌고, 이제는 소규모 해커나 취미 애호가들도 충분히 시도할 수 있는 수준에 이르렀습니다.
SHA-2의 등장

SHA-1이 겪고 있는 문제들을 해결하기 위해, SHA-2는 실력 있는 해커들에게 극도로 어려운 환경을 만드는 것을 목표로 하는 암호화 알고리즘군으로 탄생했습니다. 브라우저와 호스팅 업체들이 SHA-1 인증서 사용을 중단하면, 앞서 언급한 방식으로 계정을 해킹하는 비용은 천문학적으로 치솟을 것입니다.
SHA-2는 최대 512비트의 출력을 사용합니다. 덕분에 문자열을 해독하고 재현하려는 어떤 시도라도 비현실적인 시간이 걸리도록 보장할 충분한 공간을 확보합니다. 물론 이 알고리즘 역시 언젠가는 깨질 것이며, 결국 그 뒤를 이어 방어의 역할을 이어갈 새로운 알고리즘으로 대체될 것입니다.
하지만 당분간, 가시적인 미래에는 SHA-2가 인터넷 보안의 챔피언으로 군림할 것입니다.
여러분은 SHA-2가 몇 년 더 링 위에 남아 있을 거라고 생각하시나요? 브라우저 개발사들이 구세대 알고리즘을 폐지하기로 한 결정이 옳았다고 보시나요? 여러분의 생각을 댓글로 알려주세요!