해시와 체크섬


해시

  • 단방향으로 동작하며 복호화가 불가능하다

  • 입력 정보에 대한 해싱 결과(다이제스트)가 항상 같다

  • 값이 한글자만 추가되어도 결과값이 완전히 달라진다

  • 그렇기때문에 해시 결과를 DB에 비밀번호 대신에 저장하는 형태로 자주 사용된다

  • 또한 파일의 유일성을 확인하기위해 파일을 해시를 사용한다 (인증서등..)

  • SHA256함수 사용시 256비트를 반환한다. 256비트를 바이트로 변횐하면 32바이트가된다. 32바이트를 16진수(1바이트당 두 글자/4비트당 한 글자 ) 로 변환하면 64글자가 출력된다. 그러므로 SHA256의 결과는 64글자이다


해시함수

  • 위의 예시의 그림의 SHA256이 해시함수이다

  • MD , SHA256 , SHA512등이 있다.

  • SHA256일 경우 어떤 입력값에도 길이 256bit를 반환하게된다

  • SHA-1 해시함수도 있었지만 충돌(중복값)이 발견되었기때문에 현재는 사용되지 않는다


해시의 해독

SHA256 해시 함수를 사용한다는 가정하에

256개의 비트를 사용가능하고 256개의 비트의 경우의 수는 아래와 같다

2^256 = 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936

1초당 10억번의 값을 구할수있는 기계가 있다고해도 3,671,743,063,080,802,746,815,416,825,491,118,336,290,905,145,409,708,398,004,109 년이 걸린다

즉 동일한 값을 얻게 될 가능성(해시충돌)이 매우매우매우.. 희박하다


레인보우 테이블

  • 레인보우 테이블등을 이용해서 복잡하지 않은 값은 유추가능 하다 (https://crackstation.net/)


솔트

예를들어 은행 ATM 비밀번호등 짧고 간단한 비밀번호의 경우 레인보우 테이블에 취약하다.

만약 DB정보가 유출 당했을 경우 아래의 그림의 경우

유저 guest1,guest2,guest3이 같은 비밀번호라고 유추 가능하고 해당 해시를 레인보우 테이블에 대입하면

Guest1234!@ 라는 비밀번호를 알수있고 guest1,guest2,guest3유저가 전부 위험해지게 된다


그러나 솔트를 사용하면 아래의 그림과 같이 해시전의 암호의 앞뒤에 솔트문자(빨간색)을 추가한다면 같은 암호라도 전혀 다른 해시값을 출력하게된다

그렇기 때문에 설령 DB가 유출된다고 하더라도 같은 비밀번호를 이용하는 다른 이용자들의 정보가 유출되는것을 막을수있다

그리고 솔트는 DB에 패스워드 옆에 솔트 칼럼을 추가해서 솔트만 저장하거나 한다. 혹은 다른 DB에 저장하기도 한다



키스트레칭

  • SHA256해시함수를 사용한 해시결과값을 다시한번더 SHA256해시함수를 이용해서 해시결과를 구하는것

  • 횟수는 몇번을 진행할지는 작성자의 임의로 결정

  • 브루트포스(무차별대입공격)을 대비하기 위한 방법

  • 횟수가 너무 많으면 시스템에 부담이 된다


최종적인 구현 이미지

솔트와 키스트레칭을 같이 이용하여 아래와 같이 구현


체크섬 중복 검사

(자료/파일의 무결성을 증명하고 보호하는 방법)

즉 파일을 해시화한후 비교하여 동일한 파일인가 확인하는법

파일과 체크섬 파일을 제공해주는 사이트가있다

1.가장 먼저 파일을 다운로드한다

2.그 후 체크섬 파일또한 다운로드한다

그리고 파일과 체크섬파일의 해시값이 출력후 두 파일의 해시 값이 같으면 문제가 없고 같은 파일이라고 판단이 가능해진다

이를 체크섬 중복검사라고 하며 체크섬이라고도 한다




참조

해시섬

https://st-lab.tistory.com/100

https://crackstation.net/

https://h1ggs.tistory.com/m/2

https://mytory.net/archives/96#:~:text=0237e41023e4a077a41b6b3210619d0b%20%EA%B0%80%20%EC%9C%84%EC%97%90%EC%84%9C%20%EB%B3%B8%20%EB%AC%B8%EC%9E%90%EC%97%B4,%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C%20%ED%95%B4%EC%8B%9C%EB%9D%BC%EA%B3%A0%20%EB%B6%80%EB%A5%B8%EB%8B%A4.

Mar 7, 2023 Views 167