포럼
MD5 를 다른 알고리즘으로 개선하는데 찬성합니다.
2012.01.15 06:03
크게 두가지 이유가 있습니다.
1. MD5 는 Brute force attack 에 상대적으로 더 많이 취약합니다.
http://www.cryptopp.com/benchmarks-amd64.html
를 보시면
MD5 가 초당
MD5 | 335 | 6.3 |
---|
335MiB/sec 씩 연산이 되는걸 확인해볼수 있습니다. 저건 CPU 라서 게다가 느린편이지요.
CUDA 등의 GPU 연산 기술을 사용하면 MD5 연산 속도는 더욱 올라갑니다.
http://www.win.tue.nl/cccc/sha-1-challenge.html
해당 데이터는 sha1 으로 이루어진것이지만, 위의 데이터에서 sha1 이 md5 의 절반속도가 나왔던걸 생각하면
md5 는 더욱 빠를수 있다는걸 충분히 유추하실수 있을꺼라고 생각합니다
tesla: | 690822188 hashes/second: | 4 GT200 GPUs in a S1070 (two buses) |
690822188 hashes/second 니, 이 얼마나 무식한 속도입니까 [..]
제가 대안으로 주장하는것은
http://www.openwall.com/phpass/
PHPass 입니다.
이녀석은 bcrypt 암호화 방법을 사용했는데, ( http://en.wikipedia.org/wiki/Bcrypt )
패스워드 생성에 걸리는 시간이 매우 느립니다.
md5 가 밀리세컨드 단위라면
이것은 그 수백배 ~ 수천배쯤 되지요.
즉 패스워드 하나를 크래킹 하기 위해서 지불해야하는, 비용이 높아진다는 뜻입니다.
물론 이렇게 한다 하더라도, 단순히 1234 등의 암호를 사용하는 경우는 보안이 어렵지만
보통 자주 쓰이는 10자 이내의 영문 암호
(예를들면 ehdgus86 (동현86)등의 쉽게 쓰이는 암호등의 안정성이 매우 크게 향상됩니다.)
PHPass 는 Drupal 에도 적용되어있습니다. 7.10에 기본 탑재되어 있지요.
2. MD5 는 인상이 너무 좋지 않습니다.
보안에 대한 관심이 일어난것은 애석하게도 최근에 들어서야입니다. (근 몇년 이내)
굵직굵직한 사이트에 해킹사건이 터지면서 개인정보 보안에 대한 관심이 일어났다는건 부정할수 없는 사실이니까요.
게다가 최근의 네이트 해킹등에서 MD5 가 이슈가 되다보니,
보통의 일반 유저들에게 MD5 는 매우 부정적인 이미지를 가지고 있습니다.
MD5 에 대해서 부정적인 이미지를 가지고 있는 사람에게
XE 의 패스워드 해싱 알고리즘이 MD5 다. 라는것에 불안을 가지는것은 당연한 수순이라고 생각합니다.
아 물론, 사용자가 복잡한 패스워드를 써야하고, MD5 가 아닌 다른 알고리즘을 써도 어차피 무차별 대입공격엔 이길수 없다. 라고
이야기 하는것은 개발자 입장에서는 당연한 이야기일지도 모릅니다만,
MD5 가 아닌 설사 SHA 를 쓴다고 하더라도,
MD5 가 아닌것만으로도 충분히 가치가 있다고 생각합니다.
물론, 저는 brcypt 암호화 방법을 사용하는것이 해결책이라고 생각하지만 말이죠.
--
물론, XE 암호화 방식을 다른것으로 치환하는것은 호환성 이슈나, 여러 문제를 야기시킬수 있습니다.
그런데, 그러한 문제점때문에 이슈가 되고있는 부분을 방치하는것도 그리 좋은 선택은 아니라고 봅니다.
또한 오픈소스 프로젝트를 지향한다면 XE 의 암호화에 대한 방향을,
어느공간이든 공개적인 부분에서 토론을 해야하는게 맞다고 봅니다.
개발팀이 XE 암호화는 MD5 에서 바꾸지 않겠습니다. 라고 일방통행으로 전하는게 아니라 말이죠.
호환성 부분에 대한 문제는 많은 사람이 고민해서 결정해야하는 문제라고 생각합니다.