password 관련 수정해 보았습니다. (암호화) > 그누3 팁자료실

그누3 팁자료실

password 관련 수정해 보았습니다. (암호화) 정보

그누호환 password 관련 수정해 보았습니다. (암호화)

첨부파일

gnu3 password.txt (3.0K) 72회 다운로드 2004-07-06 18:23:56
md5.js (6.8K) 46회 다운로드 2004-07-06 18:23:56

본문

그누보드로 삽질좀 조금 해보았습니다.

 1. 로그인시 비밀번호가 network 상에서 plain text 로 날아다니는 것을 방지하고,
 2. 차후, MySQL 4.1 또는 그 이상 버전에서 현재 그누보드가 사용하고 있는
    mysql password() 함수가 변경되는 부분 때문에, password 함수를
    md5() 로 대체하는 것을 목적으로 합니다.

  ^^; 관련 링크입니다.
  (1) http://www.phpschool.com/bbs2/inc_view.html?id=8115&code=tnt2
  (2) http://dev.mysql.com/doc/mysql/en/Password_hashing.html

 처음에는, outlogin skin 만 변경해서 원하는 것을 얻고자 했으나,
 그누보드 코어부분도 부득이 수정하지 않을 수 없었습니다.

 쫌 길어서. text 로 첨부합니다.

 ps. 흠.. 지우고 다시 적었습니다. -_-;
      md5.js 추가했고요.. ^^;
추천
0

댓글 전체

제가 사용하는 패스워드 암호화 처리 방법은....
예전에 PHPSCHOOL에 어떤분이 올리셨던 팁을 조금더 복잡하게 수정해서 사용합니다.
submit 이전에 암호화 하지는 않고.. 쿼리가 발생하는 페이지에서 처리합니다..
기본적인 방법은..
패스워드를 Byte단위로 나눈 다음..
나만이 알수있는 특정 키를 MD5 처리후, 중간 중간에 끼워넣기 하여..
다시 base64로 인코딩합니다.
특정키만 노출이 안된다면, 그나마 안심하고 사용할수 있지만..
처음에 클리어 패스워드가 넷웍상으로 노출되기 때문에 크래커가 중간에 캐치한다면 문제가 발생할수도 있습니다.
그래서 대안은 SSL로 처리합니다.
데몬님 //
BSD 데몬인것 같은데 맞으신지요. 흐흐.

사용하고 있는 Hashing 알고리듬인, md5 는 공개되어 있습니다.
하지만, 한글 문서는 저도.. -_-; 모르겠습니다. 죄송

1. hashing key 을 되돌리는 것은 불가능합니다. 역함수가 존재하지 않으므로 크래커는
  무식한 방법으로, -_-; 깨야 하고요..
  그냥 쉽게 생각해서 해슁키가 [0-9]{32} 라고 가정하면, (실재로는, [a-z0-9]{32})
  99,999,999,999,999,999,999,999,999,999,999 라는 해슁키가 존재합니다. ^^;
  그래서 원 비밀번호를 짧은 시간 내에 알아내는 것은 불가능합니다.
  (이게 가능하다면, 상대적으로 짧은 MySQL 의 password 함수를 가지고 고민할 일이 없겠죠)

2. 전통적인 부르스트 포스 방식의 패스워드 크랙 + 사전 참조 크랙이라 하더라도,
  전송되는 해슁키는, md5(password) 가 아닌,
  md5(id|md5(password)|random(seed))  이므로,
  비밀번호가 1234 이고 이것에 대한 md5('1234') = '81dc9bdb52d04dc20036dbd8313ed055' 라는 것을
  우리가 설령 알고 있다고 해도,
  실재로 전송되는 암호는 위의 '81dc9bdb52d04dc20036dbd8313ed055' 이 아닌 임의의 해슁 값입니다.
  또한, 매번 변하고요.. (페이지 요청시마다 변하는 것이 좋긴 하지만, 로직이 복잡해져서 접속당 한번
  이긴 하지만 변합니다.)

  따라서, 스니핑에 노출되어도 안전하다고 말 할 수 있겠죠. ^^;

3. 마지막으로, 최초 패스워드 등록시, 또는 변경시에는 패스워드의 md5() 값이 노출됩니다.
  이것으로 크래커가 사이트 진입을 성공시킬 수 있겠습니다만. -_-;
  원문 패스워드가 무엇인지는 여전히 알아내기 어렵습니다.
  (그러나, 이번 수정사항에는 사용자 등록, 정보변경시에는 md5() 값이 아닌 평문 비번이 전송됩니다.
  -_-; 개을러서뤼..)

^^*
submit 전에 암호화 한다.... 정말 좋은 팁이네요..
기존 패스워드를 이전할 방법이 없다... 문제네요..
현재.. MySQL password 함수로 암호된 스트링을 되돌리는 프로그램들도 있긴한데..
일일히 디코딩하는 시간도 문제가 되겠네요..

유림님.. 한가지 궁금한점이 있습니다...
그누보드에 위의 코어가 적용되고.. 위의 코어를 알고있는 사람이 있다면...
넷웍상에서 하이젝킹하여, 암호화된 스트링을 디코딩할수 있지 않나요..
어차피 128비트로 암호화되었다고 해도...
암호화되는 방법을 안다면, 원비밀번호를 알아내는 것은 시간문제일꺼 같은데요..

그리고.. rfc한글 문서 볼수있는 곳 소개해주세요...
그누 코어에 반영되었으면 하는 바램. (password() 대체)이 있습니다만,
문제는 기존 패스워드를 이전할 방법이 없다는 것이 문제입니다. (이미 해쉬되 결과라서)

머.. ^^; 언젠가는 등떠밀려서라두 진행되야 할 작업이긴 하겠지만요.

그누보드 만쉐~ 잇힝~
전체 1,026
그누3 팁자료실 내용 검색

회원로그인

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