베하
비티시 보이즈 입니다!
오늘은 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
'Security' 카테고리의 다른 글
[Security] key 암호화와 복호화 (1) | 2024.01.31 |
---|---|
CVE(Common Vulnerabilities and Exposures) (0) | 2023.12.22 |
[Wordpress] All-In-One Security(AIOS) plugin을 이용한 관리자 페이지 주소 변경 & IP 접근제어 & MFA 설정 (0) | 2023.06.30 |
SSL과 TLS 정의 및 차이점 (0) | 2023.06.05 |
화이트리스트와 블랙리스트의 개념과 차이 (0) | 2023.05.17 |
댓글