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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
비밀번호 암호화 생성과 관련된 질문입니다.

QA

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

본문

비회원 글쓰기 해서 

저장한 비밀번호 '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
답변을 작성하시기 전에 로그인 해주세요.
전체 73
QA 내용 검색

회원로그인

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