1Password 쓰게 된 계기는 5년 전쯤 국내 모 대형 사이트가 개인정보를 해킹당하게 되면서였다. 나는 여러 사이트에서 거의 같은 암호 서너 개를 돌려가며 사용하고 있었고, 기껏해야 사이트마다 암호에 살짝의 변형을 주는 것이 전부였다. 가령 평소 사용하는 암호가 asdf
이고 가입하려는 사이트가 abc.com이면 대충 abc_asdf
같은 식으로 변형을 하는 정도였다. 그런데 그 사이트가 털렸단다.
그 사이트는 그때도, 그리고 사실 지금까지도 암호의 최대 길이나 사용할 수 있는 기호에 제한을 두고 있었다. 적절한 암호학적 해시를 하고 있다면 왜 구태여 그런 제한을 둔단 말인가? 그 사이트가 내 암호에 어떠한 종류의 암호학적 조치도 하지 않는다는 심증은 매우 강했다. 나는 프로그래머이면서도, 국내의 아주 많은 사이트에 가입할 때마다, 내 암호의 허용 범위에 대한 말도 안되는 안내 문구를 읽을 때마다, 그런 심증을 느껴왔으면서도 별 생각 없이 그렇게 살고 있었던 것이다. 그 사이트를 비롯해 매우 많은 웹 사이트는, 아마 그것을 구현하는 프로그래머의 배움에 대한 나태와 무지에 의해, 의도치 않게 대한민국 국민 대부분의 자주 쓰는 암호들을 평문으로 보존하고 있을 것이다. 그리고 보안 수준을 높이기 위한 명목으로 회원들에게 3개월마다 암호를 바꾸라고 강요하고 있는 것이다.
내가 5년 전에 자주 쓰던 서너 개의 암호 중 최소한 하나는 공개된 정보가 되어버렸을 것이다. 그래도 찝찝함을 덜겠다고 암호 앞에 사이트 이름을 붙여놨지만, 누가 보든 암호 앞에 붙은 사이트 이름을 떼고 나면 그게 내 즐겨 쓰는 암호 중 하나라는 것을 알 수 있을 것이다.
그날 바로 1Password를 구입하고 내가 기억하는 모든 로그인 암호를 무작위로 만들어서 바꿨다. 무작위 암호는 매번 그 사이트가 허용하는 최대 길이로 꽉꽉 채워서 생성했다. 더이상 사용하지 않는 서비스는, 우선 암호를 무작위로 변경하고 나서, 다시 탈퇴했다. 그들 사이트가 내가 탈퇴를 했다고 해서 내가 쓰던 암호를 평문으로 보존하는 것을 중단할 거라는 보장은 할 수 없었다. 이 작업은 하루아침에 끝나진 않았지만 꾸준히 하고 보니, 나는 내가 가입한 모든 서비스에서 서로 아주 다른 암호를 사용하게 되었다. 이제는 어느 사이트 하나가 크게 털려도, 나의 다른 계정까지 탈취하는 것은 막을 수 있게 되었다.
현실적인 이유에서, 적어도 대한민국의 웹 서비스들에서는 암호를 암호라고 인식해서는 안되게 됐다. 그 항목에 담겨야 할 것은 내가 직접 기억할 수 있는 암호가 아니라 나의 인증을 대리해주는 소프트웨어가 기계적으로 생성해주는 토큰 문자열이다. 현실적인 이유에서 그러해야 한다.