비밀번호 암호화 생성과 관련된 질문입니다.

비밀번호 암호화 생성과 관련된 질문입니다.

QA

비밀번호 암호화 생성과 관련된 질문입니다.

답변 2

본문

비회원 글쓰기 해서 

저장한 비밀번호 'abcd'가  'sha256:12000:1iclHpgZ4qqsxUjlBviqo4+YlloGV/Dc:VFRzETIEo2UkxXzSTOIxlYcKchZ+CO45'

이렇게 db에 저장되었군요.

 

정식으로 회원가입해서

비밀번호로 저장한 'abcd'가

sha256:12000:zFwjJVqT2C/hukUroseuJH17vOPVY5aC:Lfpm8Rqk+Be2mpOZxv4S3kwjpBwrd1KG

이렇게 저장되었습니다.

 

똑같은 문자열

'abcd'인데 암호화된 값이 달라지네요.

 

무슨 원리인가요?
 

이 질문에 댓글 쓰기 :

답변 2

비밀번호를 암호화할 때, 일반적으로 salt라는 무작위 문자열이 추가됩니다. 이 salt는 비밀호와 함께 해시 함수에 전달되어, 같은 비밀호라도 다른 해시 값을 생성하게 됩니다. 이렇게 함으로써, 비밀호가 노출되더라도 해시 값이 다르기 때문에, 비밀번호의 안전성이 높아집니다.

예를 들어, 위에서 언급한 sha256:12000:1iclHpgZ4qqsxUjlBviqo4+YlloGV/Dc:VFRzETIEo2UkxXzSTOIxlYcKchZ+CO45sha256:12000:zFwjJVqT2C/hukUroseuJH17vOPVY5aC:Lfpm8Rqk+Be2mpOZxv4S3kwjpBwrd1KG 두 개의 해시 값은 sha256 알고리즘을 사용하고 있으며, 12000번 반복해서 해시를 적용했습니다. 그리고 1iclHpgZ4qqsxUjlBviqo4+YlloGV/DczFwjJVqT2C/hukUroseuJH17vOPVY5aC는 각각의 salt 값입니다. 이 salt 값이 다르기 때문에, 같은 비밀호인 abcd라도 다른 해시 값을 생성하게 됩니다.

비밀번호 검증을 할 때는, 저장된 해시 값에서 salt 값을 추출하여, 입력된 비밀번호와 함께 해시 함수에 전달하여 검증합니다. 이러한 방식으로, 비밀번호의 안전성을 높일 수 있습니다. 

암호화를 수행할때 salt (매번 다르게 생성되는 값)을 조합함으로써 가능해집니다.

 

글쓰기의 경우 사용되는 함수와 salt 값은 다음의 경로로 확인할수 있고

https://github.com/gnuboard/gnuboard5/blob/master/bbs/write_update.php#L241

>

https://github.com/gnuboard/gnuboard5/blob/master/lib/common.lib.php#L3478

>

https://github.com/gnuboard/gnuboard5/blob/master/config.php#L192

>

https://github.com/gnuboard/gnuboard5/blob/master/lib/pbkdf2.compat.php#L45

 

salt 값은

https://github.com/gnuboard/gnuboard5/blob/master/lib/pbkdf2.compat.php#L74

에 보이는것 처럼 :(colon) 을 구분자로 3번째 위치에 있고

생성된 암호화 문자열에서 각각의 salt 값은 다음과 같습니다.


// 첫번째 생성 (비회원)
sha256:12000:1iclHpgZ4qqsxUjlBviqo4+YlloGV/Dc:VFRzETIEo2UkxXzSTOIxlYcKchZ+CO45
sha256 : 12000 : 1iclHpgZ4qqsxUjlBviqo4+YlloGV/Dc : VFRzETIEo2UkxXzSTOIxlYcKchZ+CO45
// salt = 1iclHpgZ4qqsxUjlBviqo4+YlloGV/Dc
 
// 두번째 생성 (회원가입)
sha256:12000:zFwjJVqT2C/hukUroseuJH17vOPVY5aC:Lfpm8Rqk+Be2mpOZxv4S3kwjpBwrd1KG
sha256 : 12000 : zFwjJVqT2C/hukUroseuJH17vOPVY5aC : Lfpm8Rqk+Be2mpOZxv4S3kwjpBwrd1KG
// salt = zFwjJVqT2C/hukUroseuJH17vOPVY5aC
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 50
© SIRSOFT
현재 페이지 제일 처음으로