본문 바로가기

기술블로그

해싱

해싱

해싱은 모든 크기의 데이터를 해시라고 하는 고정된 크기의 문자 또는 숫자 문자열로 변환하는 프로세스입니다. 해싱은 암호화, 컴퓨터 보안 및 데이터 관리에 필수적인 기술입니다. 암호 저장, 데이터 무결성 및 디지털 서명에 일반적으로 사용됩니다.

 

해싱의 목적은 권한이 없는 사용자가 읽을 수 없고 사용할 수 없도록 만들어 민감한 데이터를 보호하는 것입니다. 사용자가 비밀번호를 생성하면 비밀번호가 해시되어 데이터베이스에 저장됩니다. 사용자가 로그인하면 시스템은 입력된 암호를 해시하고 저장된 해시와 비교합니다. 두 해시가 일치하면 사용자에게 액세스 권한이 부여됩니다. 이렇게 하면 데이터베이스가 손상되더라도 해시된 형태로만 저장되기 때문에 공격자는 실제 암호를 얻을 수 없습니다.

그러나 해커는 레인보우 테이블과 같은 기술을 사용하여 해시된 암호를 해독할 수 있습니다. 레인보우 테이블은 가능한 모든 암호에 대한 해시 값의 미리 계산된 테이블입니다. 해커가 손상된 데이터베이스에서 해시 값을 얻으면 레인보우 테이블을 사용하여 해당 암호를 빠르게 찾을 수 있습니다. 이 위험을 완화하기 위해 해싱 전에 비밀번호에 솔트를 추가할 수 있습니다.

레인보우 테이블과 솔트(Salt)

솔트는 해싱 전에 암호에 추가되는 임의의 문자열입니다. 솔트는 각 사용자마다 고유하며 공격자가 미리 계산된 레인보우 테이블을 사용하여 암호를 해독하기 어렵게 만듭니다. 사용자가 비밀번호를 생성하면 솔트가 생성되고 솔트된 비밀번호가 해시되어 데이터베이스에 저장됩니다. 사용자가 로그인하면 시스템은 입력된 암호에 솔트를 추가하고 결과를 해시합니다. 해시된 결과가 저장된 해시와 일치하면 사용자에게 액세스 권한이 부여됩니다.

 

결론

요약하면 해싱은 암호와 같은 중요한 데이터를 보호하기 위해 컴퓨터 보안에 사용되는 기본 기술입니다. 레인보우 테이블은 해커가 해시된 암호를 해독하는 데 사용하는 기술이지만 미리 계산된 테이블을 사용하기 어렵게 만들기 위해 솔트를 추가할 수 있습니다. 솔트를 사용한 해싱은 암호를 저장하고 중요한 데이터를 보호하는 보다 안전한 방법입니다.

'기술블로그' 카테고리의 다른 글

OAuth2.0  (0) 2023.03.09
토큰  (0) 2023.03.08
쿠키, 세션인증  (0) 2023.03.07
알고리즘 성능 특성  (0) 2023.03.03
WAI-ARIA  (0) 2023.03.02