요즘 네이트온 해킹으로 말이 많습니다.
그때문에 제가 운영하는 싸이트도 다시 한번 생각해 보게 되었는데요.
현재 password로 암호화해서 보관을 합니다.
이게 얼마나 안전할까요?
다른 암호화 방식을 도입해야 할지 아니면 그대로 유지해도 별문제가 없을지 고민 입니다.
조언부탁드립니다.
MySQL의 password()는 복호화 불가능인것 아시죠
그렇지만 해당 데이터가 유출 되어
단순대입식으로 암호를 유추해 가면...끝
즉 사용자가 암호를 얼마나 복합적으로 넣었느냐가 문제가 되고
서버를 해킹에 대비해 얼마나 잘 관리하는 냐가 관건인 거죠
MySQL의 PASSWORD/OLD_PASSWORD를 사용해 패스워드를 해싱해서 보관한다고 해도, rainbow 테이블 한 번 돌리면 간단한 패스워드들은 대번에 나옵니다. 그래서 그냥 해싱하지 않고, salt 를 추가한 후에 해싱하는 것이 일반적입니다. django 프레임워크의 경우는, 사용자마다 랜덤한 salt 값을 추가해 이를 패스워드에 덧붙여 해싱해, 일반적인 brute-force 공격으로부터 보호하고 있습니다.
만약, 운영하고 계신 사이트에서 salt 없이 바로 PASSWORD 함수를 사용하신다면, salt 추가를 강력하게 권고해드립니다.