포럼
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 에서 바꾸지 않겠습니다. 라고 일방통행으로 전하는게 아니라 말이죠.
호환성 부분에 대한 문제는 많은 사람이 고민해서 결정해야하는 문제라고 생각합니다.
댓글 5
-
아이재희
2012.01.15 11:10
-
쏭바강
2012.01.15 11:51
일단 1.5 오류들부터 해결한 후에 천천히..
-
delphiXE2
2012.01.15 15:04
php ass! ..
장기적으로 바꾸는 것을 논의해볼 수 있겠죠..
-
Garon
2012.01.15 15:49
저도 지금 산제한 버그들 부터..^^....
장기적으로 바꾸는 것은 대 찬성입니다.
-
Garon
2012.01.15 15:51
아 그리고, 일단은 사용자가 패스워드에 특문 등을 강제로 삽입하게 할 수 있는 옵션을 주었으면 좋겠습니다. 몇자 길이도 조절할 수 있는 옵션으로 주고요.
확실히 외국포럼같은데 가보면 md5를 unsafe로 표현하는걸 가끔씩 봅니다. 저도 그래서 요즘 새로 개발하고 있는것은 md5가 아닌 PHPass를 고려중이긴 합니다. 하지만 저도 아직 md5가 얼만큼 안전하지 않은지는 체감이 잘 안됩니다. 그냥 요새 개발하면 md5를 잘안쓰는거 같아서 저도 그 흐름에 동참했는데요. 지금은 생각뿐이지만 addon같은것을 만들어 act값에 따라 후킹해서 새로운 알고리즘 적용해볼수도 있을거 같네요. phpass를 아직 정확히 알아보진 않아서 얼만큼의 바이트 수를 차지할지 모르지만 byte길이에 따라 password필드에 길이정도는 변경이 필요해보이네요. 이러한 일련의 작업들이 쉽사리 고치기엔 부담이 되는것은 사실입니다. 제가 XE로 만든 사이트에 대해서 비밀번호 보안패치가 있는데 아무런 개발지식이 없다면 쉽게 그 패치를 실행하기 무섭습니다 덜덜...