소금도 함부로 치면 안 된다
salt 기법이란 것이 있다. 보안분야에서 쓰이는 전문용어로 농담 삼아 "소금 치기"라고 말하기도 한다. 비밀번호 등을 암호화하는데 쓰이는 일방향 암호화 기술인 해쉬(Hash) 기법에 적용되는 기술이다. 암호화 대상인 원문에 무작위로 생성된 문자(및 숫자)를 더해(이것을 소금 친다고 한다) 암호화함으로써 암호를 좀 더 복잡하게 만들어 혹시 모를 유출사고에 따른 복원시도를 방지하는 목적으로 사용되는 기법이다.
최근 특정 기업에서 발생한 정보보안 관련 사태와 관련되어 갑자기 salt 기법이 화제의 중심으로 떠오르고 있다. 대체로 언급되는 내용들의 골자는 해당 기업이 salt 기법을 적용하지 않아서 암호화가 취약하므로 일반인도 복원이 가능하다는 식이다.
하지만 이는 상당히 과장된 표현으로 해쉬 기법을 통해 암호화된 내용을 일반인이 복원하는 것은 거의 불가능하다. 보안분야 전문가들이라도 장비와 꼼꼼한 사전준비 작업, 상당한 시간을 투자해야 복원 시도가 가능하며, 이마저도 100% 성공은 보장할 수 없는 것이 현실이다. 물론 salt 기법이 추가된 경우라면 복원이 한층 어려워지는 것은 부정할 수 없는 사실이다. 어떻게 소금을 쳤는가에 따라 복원이 사실상 불가능할 수도 있기 때문이다.
정작 고민이 되는 것은 갑작스럽게 부각된 salt 기법이 이 사태를 계기로 마치 기업들이 필수로 적용해야 하는 기술처럼 전파되는 경우이다. 그냥 적용하면 되지라고 쉽게 생각할 수 있으나 실제 현실은 그리 녹록지 않다. 처음 개발 시에 salt 기법까지 감안하여 개발했다면 아무런 고민 없는 최고의 경우이다. 그러나 salt 기법 없이 해쉬 기법만 적용해 이미 운영하고 있던 기업이 salt 기법의 적용을 고민하고 있다면 다음의 몇 가지 사안들에 대해 잘 검토해야 한다.
첫째, 적절한 salt 기법 선정
salt 기법을 적용해도 그 보안의 수준은 기업마다 천차만별이다. 무작위로 도출된 문자(및 숫자)를 어떻게 원문에 적용하는가에 따라 암호화의 수준은 달라진다. 장비들의 성능은 점점 향상되고 양자기술 등 암호기술을 위협하는 기술 역시 속속 등장하는 요즘이다. 이왕 salt 기법을 적용하기로 했다면 "어떻게" 적용할 것인가에 대해 신중할 필요가 있다.
둘째, 제대로 된 변경 설계
이미 고객들이 비밀번호를 등록해서 이용하고 있는 상태에서 암호기술의 변경은 자칫 실수하면 논리적 오류로 인해 고객들의 상당한 불편을 초래할 수 있는 중대한 변화에 해당한다. 따라서 기존의 암호화된 값과 새로 생성되는 암호화된 값이 공존할 수 있도록 안전하게 설계되어야 한다. 그렇지 않으면 정상적으로 로그인을 했음에도 로그인이 실패하는 등의 문제가 발생할 수 있다.
셋째, 언제 끝날지 모르는 이전
새로운 기술로의 이전 작업이 끝날 때까지 무작정 기다려야만 한다. 고객에게 공지도 하고 문자도 보내는 등 다방면으로 재촉하고 노력한다고 해도 고객들이 기다렸다는 듯 한날한시에 인터넷을 통해 접속해 새로운 암호값으로의 이전작업을 도와줄리는 만무하다. 어쩌면 한 달 어쩌면 일 년 어쩌면 수년이 걸릴 수도 있는 작업이다. 그저 기다릴 수밖에 없다.
4. 오직 유출에만 효과
가장 중요한 점은 salt 기법의 적용은 정보의 유출 시를 대비한 대책이라는 것이다. "유출된 정보가 해쉬기술로 암호화되어 복원이 어려운데 salt 기법까지 적용되어 복원이 불가능하다"가 목적하는 효과이다. 따라서 최근 급증하는 보안위협 대세인 암호대입공격(Credential Stuffing Attack) 에는 효과가 없다. 이미 과거에 무수히 유출된 비밀번호들을 이용한 공격이기 때문이다.
암호화 대상인 고객들의 비밀번호가 변경되는 것이 아니라 비밀번호를 암호화하는 기술이 변경되는 것임을 정확히 인지할 필요가 있다.
간혹 보안을 하는 사람들도 "그런 게 있어"라며 낯설어 생소해하던 salt 기법이 화제가 되며 수면 위로 부상했다. 이를 계기로 더 많은 사람들이 salt 기법에 대해 듣게 될 것이고, 잘 모르던 보안담당자들도 salt 기법이 무엇인지 알게 되는 계기가 될 것이다. 이왕이면 알기만 할게 아니라 그 특징과 장단점, 기업의 고려사항까지 되새기는 기회가 되었으면 한다.