본문 바로가기
Security

Hash and Salt

by BTC_톰캣 2023. 10. 10.

베하

비티시 보이즈 입니다!

 

오늘은 Hash와 Salt에 대해 알아보겠습니다!

Hash (Hash함수 또는 Hash 알고리즘) 란?

  • 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것
  • 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다.

 

주된 용도

  • 암호화 (예: DB에 저장된 사용자의 비밀번호)
  • 무결성 검증
  • 해시 테이블 자료구조에 사용, 빠른 데이터 검색을 위해

단방향 해시 함수

  • 해시 함수에는 단방향 해시함수와 양방향 해시 함수가 있습니다.
  • 단방향 해시 함수는 어떤 알고리즘을 통해 원본 데이터를 암호화된 데이터로 변환 시키는 것을 의미 합니다.
  • 이 변환을 해시라고 하고, 해시에 의해 암호화된 데이터를 다이제스트(digest)라고 합니다.
  • 단반향 해시 함수는 말그대로 단방향 이기 때문에 암호화된 데이터를 다시 복호화 할 수 없어야 합니다.

양방향 해시 함수

  • 암호화된 데이터에 대한 복호화가 가능한 암호화 방식 입니다.
  • 대칭키, 공개키 암호화 방식이 양방향 암호화에 속합니다.

 

해시 함수의 종류

  • MD4
    • 단방향 해시함수로 128비트의 해시 값을 갖습니다.
    • MD4의 해시 값 충돌을 발견하는 방법이 고안되어 현재는 안전하지 않다고 합니다.
  • MD5
    • 단방향 해시함수로 MD4와 동일하게 128비트의 해시 값을 갖습니다.
    • 입력은 512비트 블록들로 처리됩니다.
  • SHA(Secure Hash Algorithm)
    • 160비트의 해시 값을 갖는 단방향 해시 함수이다.
    • 가장 많이 사용되고 있는 방식 (비트코인에서 사용중인 해시 알고리즘)
    • SHA256, SHA384, SHA512는 AES의 키 길이인 128, 192, 256 비트에 대응하도록 출력 길이를 늘인 해시 알고리즘입니다.

 

Salt 란?

  • 단방향 해시 함수에 데이터와 함께 추가로 입력되는 랜덤 데이터 입니다.
  • 스토리지에서 비밀번호를 보호하기 위해 사용합니다.
    • 단방향 해시 함수에서 같은 데이터를 해싱 한다면 같은값의 다이제스트가 나오게 됩니다.
    • Slat를 이용하여 같은 비밀번호라도 다른 값의 다이제스트가 나오게 하여 동일한 비밀번호라도 다른 값을 가지게 되어 비밀번호를 보호할 수 있게 됩니다.

Salt 사용 예제

사용자 이름 비밀번호
user1 password123
user2 password123

 

사용자 이름 솔트값 해시될 문자열 해시된 값 = SHA256 (비밀번호 + 솔트값)
user1 E1F53135E559C253 password123E1F53135E559C253 72AE25495A7981C40622D49F9A52E4F1565C90F048F59027BD9C8C8900D5C3D8
user2 84B03D034B409D4E password12384B03D034B409D4E B4B6603ABC670967E99C7E7F1389E40CD16E78AD38EB1468EC2AA1E62B8BED3A

 

그럼 지금 까지 Hash와 Salt에 대해 알아 보았습니다!

 

 

이미지 출처 : https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98

댓글