본문으로 바로가기

[기술] salt를 이용한 해쉬 암호

category 보안/기술 2020. 10. 7. 00:00
728x90
반응형

보안의 관점에 있어서 암호화 기법은 아주 중요합니다.

암호화 기법만 하더라도 수백, 수천가지가 존재합니다.

최근에 저는 웹 페이지를 개발하였고, 계정을 관리하게 되었습니다.

처음에는 간단하게 암호화 기법 중 많이 쓰는 해쉬함수를 사용하였습니다.

ID와 PW를 SHA-2로 암호화하여 DB에 저장하고, 로그인 할때마다 SHA-2 암호화를 수행하여 ID와 PW가 유효한지 검사하도록 하였습니다.

별 생각없이 한거라서 해쉬함수를 사용하였지만, 이 기법은 보안에 취약할 수 있습니다.

해쉬함수도 나름대로 괜찮은 암호화 방법이지만, 이번 글의 제목처럼 salt를 이용한 해쉬를 사용하게 되면 더욱더 강력하게 정보를 보호할 수 있습니다.

보통 해쉬의 경우 단방향성을 가지고 있습니다.

예를들어 abc를 sha256으로 암호화하면 BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD이 됩니다.

abd를 sha256으로 암호화화면 A52D159F262B2C6DDB724A61840BEFC36EB30C88877A4030B65CBE86298449C9이 됩니다.

이렇듯 해쉬는 한글자만 바뀌더라도 전혀 다른 해쉬값이 생성이 됩니다.

 

 

 

해쉬를 사용하는 계정 관리 흐름은 보통 아래와 같습니다.


==========================================================
1. 계정 생성
2. 해쉬암호화를 통하여 ID PW가 DB에 저장
->여기서 평문은 기록되지 않음
3. 사용자가 로그인을 하면 입력한 ID,PW를 해쉬암호화 수행
4. 해쉬암호화 수행한 값과 DB값을 비교
5. 해시값이 동일하면 성공, 다르면 실패
==========================================================


5번의 과정에서 실패했을때의 메시지는 특정적으로 ID가 틀렸다, PW가 틀렸다고 팝업을 띄우지 않습니다.

왜냐하면 위와 같이 할 경우, ID나 PW 한가지만 맞더라도 위와같은 메시지를 볼 수 있기 때문에 보안에 취약합니다.

해쉬를 사용했을 경우는 몇 가지 공격에 취약합니다.

1. 무차별 공격
-비밀번호를 여러가지로 예측하여 입력하는 것입니다.

2. 레인보우 테이블 공격
-레인보우 테이블이란 해쉬로 만들수 있는 대량의 값들을 저장한 테이블입니다. 
룩업 테이블과 비슷하지만, 속도때문에 훨씬 더 작습니다. 작기 때문에 같은 용량이라면 더 많은 해쉬를 저장할 수 있습니다.

3. 룩업 테이블 공격
-빠르게 비슷한 해쉬를 해킹하는데 효과적인 방법입니다. 해쉬값을 미리 추출한 후, 여기서 비밀번호를 겁색합니다.
속도는 초당 백개 정도의 비밀번호를 검색할 수 있다고 합니다. 해시데이터가 수십억개라도 사용할 수 있다고 합니다.

이런 부분에 취약하기 때문에 바로 salt를 사용합니다.

사용법은 간단합니다.

ID나 PW에 salt를 조합하여 값을 가공한 후, 해쉬를 사용합니다.

salt는 간단히 숫자가 될수도 있고, 문자가 될 수 도 있습니다.

계정 생성날짜를 사용하는 경우도 있고, 난수를 사용하는 경우도 있습니다.

보안을 위해서는 길면 길수록 좋을 것입니다.

또한 계정마다 salt가 다르다면 더욱 좋습니다.

오늘 포스팅은 여기까지입니다.

감사합니다.

728x90
반응형

'보안 > 기술' 카테고리의 다른 글

[기술] IPSEC 암호화  (0) 2022.09.19
[기술] C&C 서버?  (0) 2020.01.09
[기술] 한줄짜리 악성코드?  (0) 2019.03.29
[기술] 비다르  (0) 2019.02.12
[기술] 랜섬웨어? 갠드크랩?  (0) 2018.11.26