비밀번호 암호화 기법 - 해싱 해시 (Hash) 처리 - Whitmem
비밀번호 암호화 기법 - 해싱 해시 (Hash) 처리
Other
2024-08-28 00:34 게시 3ba21f5a05cc9df68a4d

0
0
55
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
대한민국 개인정보 보호법 제24조 (고유식별정보의 처리 제한)의 3항에는 "개인정보처리자가 제1항 각 호에 따라 고유식별정보를 처리하는 경우에는 그 고유식별정보가 분실ㆍ도난ㆍ유출ㆍ위조ㆍ변조 또는 훼손되지 아니하도록 대통령령으로 정하는 바에 따라 암호화 등 안전성 확보에 필요한 조치를 하여야 한다."고 명시하고 있다. 출처 - 법제처 국가법령정보센터 이외 다양한 법 조항에서 개인정보 보호를 위하여 서버를 안전하게 분리하고, 암호화 처리하는 등의 의무를 가하고 있는데 그 중 대표적인 것이 비밀번호 암호화이다. 하지만 비밀번호 암호화는 열쇠 따위로 열고 닫을 수 있는 일반적인 암호 방식과는 다른 개념이다. 바로 해싱이라는 것을 사용한다.
해싱 (Hash)
기본적으로 비밀번호는 암호화하더라도 다시 복호화할 수 없는 방식대로 처리한다. 비밀번호가 모여있는 데이터베이스가 침해사고로 유출되더라도 원본 패스워드가 무엇이었는지 확인할 수 없도록 하기 위함이다. 그렇다보니 일반적으로 어떤 '암호'를 사용해서 비밀번호를 '암호화'하는 방식과는 거리가 멀다. 이는 Encryption 이 아니라 Hashing이라는 기법을 통하여 비밀번호를 해싱하는데, 이 과정을 편하게 암호화라고 부를 뿐이다.
해싱은 어떤 문자열을 집어 넣으면 그 문자열의 고유한 코드를 내보내주는 함수이다. 문자열이 하나라도 달라지면 고유한 코드는 달라지지만, 문자열이 100% 동일한 경우 언제나 같은 결과를 나타낸다. 즉 비밀번호를 해싱한 뒤의 결과 코드를 서로 비교함으로써 사용자가 회원가입할 때의 비밀번호와 일치하는지 확인하는 개념이다.
한편 해싱 함수는 띄어쓰기 등 문자열이 하나만 달라지더라도 결과가 완전히 달라져 예측할 수 없는 형태를 나타낸다.
따라서 회원가입을 할 때 해싱을 시도하고, 해싱의 결과를 데이터베이스에 저장한 뒤, 사용자가 로그인할 시점에 비밀번호를 다시 데이터베이스에서 가져와 해싱된 결과를 서로 비교한다.
유의할 점은 가입 당시 사용하던 해싱 방법과 로그인시 사용하던 해싱 방법이 서로 일치해야하며, 다른 경우 같은 비밀번호더라도 해싱 알고리즘에 따라 결과가 달라질 수 있다. 해싱은 같은 기법에 대해 보통 길이가 고정되어 있으며, 아무리 긴 텍스트나 바이너리 데이터의 경우에도 같은 길이의 해싱 값으로 도출된다.
파일이 1GB 가 되는 파일이라고 하더라도 해싱된 결과는 32글자이다. 이는 수학적으로 따져볼 때 어떻게든 충돌하는 결과가 생길 수도 있는데, 서로 다른 파일 또는 입력임에도 불구하고 32글자라는 고정된 글자로 해싱하다보니 우연히 같은 결과가 나오는 경우가 발생할 수도 있다.
이를 우리는 해시 충돌이 발생했다고 부른다. 하지만 해시 충돌이 발생할 확률은 사실상 거의 없으며, 컴퓨터 암호 체계에서는 현실적으로 의도적으로 같은 해시 충돌을 유도할 수는 없다고 한다. 물론 해시 함수는 여러 종류가 존재하며, 과거 사용되던 알고리즘을 가진 해시들은 충돌된 경우가 있어 새로운 버전으로 업데이트되거나 교체된 해시 함수들도 존재한다. 이는 사용자가 의도적으로 어떤 해시를 생성할 수 있음을 의미하며, 이런 경우 정보 보안의 중요한 무결성파괴될 수 있는 문제이다. 대표적으로 MD5라는 해시함수가 존재하는데, 해시 무결성이 깨진지 오래된 함수이기에 더 이상 이러한 함수들은 비밀번호 암호화를 위한 개인정보 보호 목적으로 사용하는 것은 권장되지 않는다. 최근 비밀번호 암호화에 베이스로 사용되는 해시 함수는 대표적으로 SHA256 SHA512 등이 있으며, salt 기법 등을 활용하거나 대량의 암호 처리 방법을 통해(bcrypt) 비밀번호를 안전하게 관리하기도 한다.
그렇다고 해서 MD5 등이 아예 안쓰이는 것은 아니다. 아무래도 길이가 짧고 간결하기 때문에 파일의 무결성을 간단하게 파악할 때 사용되기도 하며, 다운로드한 파일이 배포한 파일과 동일할 때 간단하게 체크하는 용도로 사용되기도 한다. 하지만 여전히 권장되지는 않으며, 아직까지 깨진 이력이 없는 해싱함수를 사용하는 것이 좋다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.