본문 바로가기
ETC/Security

[암호화 해시] 1. 암호화 해시 함수의 특성과 성질

by Gnaseel 2020. 2. 11.
728x90
반응형

암호화 해시 함수

해시는 입력값을 변조해서 특정 해시 값을 만들고, 그 해시 값을 이용해 데이터를 저장하는 자료구조이다.
이 때, 변조하는 함수에 몇 가지 특성을 추가해서 암호화에 사용할 수 있게 한 해시 함수를 암호화 해시 함수라고 한다.

암호화 해시 함수의 성질

암호화 해시 함수는 크게 3가지 성질이 있다.

1. 제 1 역상 저항성

  • 해시 값을 통해서 입력 값을 찾기 어렵다.

2. 제 2 역상 저항성

  • 특정 입력 값과 같은 해시 값을 반환하는 또 다른 입력 값을 찾기 어렵다.

3. 충돌 저항성

  • 같은 해시 값을 반환하는 2개의 입력 값의 쌍을 찾기 힘들다.

여기서 2번과 3번은 비슷한 내용같지만 매우 다르다.
제 2 역상 저항성은 1개의 입력 값을 이미 알고 있는 상태에서 그 입력 값과 같은 해시 값을 반환하는 또 다른 입력 값을 찾는 것이고, 충돌 저항성은 아무 값이 주어지지 않은 상태에서 충돌을 일으킬 수 있는 2개의 입력 값을 찾는 것이다.

해시 함수의 특성

1. 눈사태 효과

눈사태 효과는 입력 값의 미세한 차이가 해시 값의 엄청난 차이를 유발하는 특성을 말한다.
해시함수는 입력과 출력이 매우 비선형적인 관계이기 때문에, 입력 값이 조금만 차이가 나도 해시 값에 엄청난 영향을 미치게 된다.
.

SHA-1("ABCDEF") = 970093678B182127F60BB51B8AF2C94D539ECA3A
SHA-1("ABCDEG") = 0DE7C614A6A97E1D22F6F51764C88196D047ACE0

 

대표적인 암호화 해시함수 SHA-1를 사용하여 해시 값을 반환받았다.
원문이 마지막 1글자(F와 G)차이지만, 해시 값은 160비트중 86비트가 바뀌었다.

2. 균일한 길이의 해시 값(digest)

해시함수는 입력 값에 관계 없이 언제나 같은 길이의 해시 값을 보장하고 있기 때문에, 여러가지 분야에 응용될 수 있다.

무결성 검사


파일이 부정한 방법으로 변조되거나, 외부 프로그램에 의해서 변형되지 않았는지 검사할 때 사용된다.

해시 함수를 사용하지 않는다면 원본 파일과 현재 파일이 차이가 있는지 일일히 대조해야 하지만, 두 프로그램을 해시 함수에 입력한다면, 매우 짧은 길이(일반적으로 128byte)의 해시 값을 얻을 수 있고, 눈사태 효과에 의해서 조금만 입력 값이 변해도 해시 값이 민감하게 변화하므로, 파일의 모든 부분을 대조하지 않고 짧은 해시 값만을 비교하는 것으로 파일의 무결성을 보장할 수 있다.

 

 

가변적인 입력 값에 유연하게 대처하는 암호화


암호화 해시 함수를 사용하지 않던 시대에는 사용자의 암호를 평문(plain text - 아무런 변조를 거치지 않은 원본)으로 저장해서 DB에 저장하는 경우도 더러 있었고, 이런 방법은

  1. 사용자의 암호 길이 만큼 컬럼에 메모리를 할당해야한다.
  2. 사용자가 비밀번호를 찾을 때, 새로운 비밀번호로 변경하는 것이 아닌 이전 비밀번호를 알려줄 수 있었다.

 

라는 2개의 특성을 가졌다.

하지만 암호화 해시 함수를 사용한 이후에는, 해시 값을 알고있어도 사용자의 입력 값을 유추할 수 없게 되었기 때문에 비밀번호를 찾을 때 기존 비밀번호를 알려주던 방식에서 비밀번호를 수정하는 방식으로 바뀌게 되었고,

사용자의 입력 값의 길이에 관계 없이 일정한 해시 값을 DB에 저장할 수 있게 되어 비밀번호의 길이의 제한에 관대하게 되엇다.

반응형

'ETC > Security' 카테고리의 다른 글

[web] 동일 출처 정책과 CORS의 존재 이유  (0) 2020.05.28
[웹 보안] SQL Injection  (0) 2020.02.24