본문 바로가기
공부/KISA

솔트 없이 일방향 해쉬함수 사용 - KISA 소프트웨어 개발 보안 가이드

by Skogkatt의 개인 블로그 2020. 7. 21.
반응형

https://www.kisa.or.kr/public/laws/laws3.jsp

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥

www.kisa.or.kr

구현 단계 시큐어코딩 가이드 - 보안 기능 - 솔트 없이 일방향 해쉬함수 사용

가. 개요

  • 패스워드를 저장 시 일방향 해쉬함수의 성질을 이용하여 패스워드의 해쉬값을 저장한다. 만약 패스 워드를 솔트(Salt) 없이 해쉬 하여 저장한다면, 공격자는 레인보우 테이블과 같이 해시값을 미리 계산하여 패스워드를 찾을 수 있게 된다.

나. 보안대책

  • 패스워드를 저장 시 패스워드와 솔트를 해쉬함수의 입력으로 하여 얻은 해쉬값을 저장한다.

다. 코드예제

JAVA
더보기

다음의 예제는 패스워드 저장 시 솔트 없이 패스워드에 대한 해쉬값을 얻는 과정을 보여준다

패스워드만을 해쉬 함수의 입력으로 사용하기에 레인보우 테이블을 이용한 사전 공격이 가능하며, 이를 방지하기 위해 패스워드와 솔트를 함께 해쉬함수에 적용하여 사용한다.

 

C#
더보기

다음의 예제는 패스워드 저장 시 솔트 없이 패스워드에 대한 해쉬값을 얻는 과정을 보여준다.

패스워드만을 해쉬함수의 입력으로 사용하기에 레인보우 테이블을 이용한 사전 공격이 가능하며, 이를 방지하기 위해 패스워드와 솔트를 함께 해쉬함수에 적용하여 사용한다. 

 

C
더보기

솔트 값 없이 해쉬를 생성하는 C 코드의 예제이다.

솔트 값을 인자로 넘겨줘야 한다.


참고자료

반응형

댓글