그누보드 비밀번호 알고리즘 관련 질문

그누보드 비밀번호 알고리즘 관련 질문

QA

그누보드 비밀번호 알고리즘 관련 질문

본문

1. 별생각 없이 그누보드 회원 비밀번호는 md5 로 저장된다라고 알고 있었는데, 그게 아니라 mysql의 password() 함수로 저장된다고 하네요. password()는 sha-1 을 2번 돌리고 접두사(혹은접미사)에 *를 추가한 방식이라고 알고 있습니다.

만약에 맞다면 md5였던 적이 없었나요? 원래는 md5였고 언제부턴가 password()로 변경되었다면 그 시점이 언제일까요?

 

2. 어쨌든 무얼로 암호화를 하였던 간에 DB가 털리면 결국 rainbow table 이나 brute force 로 대다수 실제 비번이 유추할 수 있게 될텐데요. 왜 그누보드는 salt 방식인 bcrypt 등을 기본적으로 적용하고 있지 않을까요? 제가 판단하기로는 php 높은 버전을 요구한다는 점, 예전부터 써왔던 방식이라 쉽게 변경하기 어렵다는 점, bcypt는 로그인 속도가 느릴 수 있다는 점(이건 그냥 추측입니다.) 정도일텐데요. 실제로 왜그렇죠?

 

3. 그래서 저는 그누보드에 bcrypt 를 적용하려 합니다. 유사 경험이 있거나 주의할 점이 있다면 알려주세요. 특히 이미 회원이 있는 운영중인 사이트에서 적용하려면 어떤 팁이 있을지도 아시는 분 알려주시면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 1

아는 부분만 답변드리겠습니다.

1. 기존에는 old_password라는 함수가 있었습니다. 이 함수는 지금 있는 crack 프로그램으로도 충분히 뚫리는 함수입니다. (원리가 bruteforce 혹은 rainbow table인지, 직접 crack인지는 모르겠습니다.) 이 함수는 mysql 버전 업그레이드가 되면서 수정되었습니다. old_password 또는 지금의 password 함수가 md5를 사용했는지는 모르겠습니다. 

2. mysql password 함수는 mysql 인증 정보를 담기 위해서 사용됩니다. 일반 어플리케이션의 정보를 담기 위해서는 사용하는 것을 권장하지 않습니다. 그래서 그누보드에는 별도의 해시 함수를 만들어 사용할 수 있도록 설정을 제공하고 있습니다. (config.php에서 G5_STRING_ENCRYPT_FUNCTION 변수 수정) => 다만 운영중인 서비스에서 사용할 경우 기존 사용자에 대해서는 처리되지 않음.

3. 비슷한 경험을 한 적이 있었는데요. 두 가지 해시 함수를 다 사용하도록 했습니다. 기존 유저가 접속한 경우 sql password 함수로 인증한 후, 새로 만든 new_password 함수로 해시값을 만들어 새로운 필드(mb_password_new)에 저장하고 기존 mb_password를 없앱니다. mb_password에 값이 없는 유저가 접속한 경우 이미 전 과정이 이루어진 경우이므로 new_password 함수로 인증합니다. 즉, 신규 유저들은 모두 new_password로 인증하고 기존 유저는 최초 접속시에만 기존 sql password로 인증한 후 new_password로 해시값을 다시 만들어줍니다.

또는 워드프레스의 sql password 해시값을 bcrypt로 바꿔주는 플러그인이 있다고 합니다. (http://godwithus.tistory.com/229)

답변을 작성하시기 전에 로그인 해주세요.
전체 160
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT