해쉬함수 찍먹!

차차·2022년 8월 19일
0

프로그래밍/ 기타

목록 보기
5/5

해쉬 함수에 대한 개념 정리

1. 해시 함수란 무엇인가?

해시 함수는 임이의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수이다. 암호 알고리즘에는 키가 사용되지만, 해시 함수는 키를 사용하지 않으므로 같은 입력에 대해서는 항상 같은 출력이 나오게 된다. 이러한 해시 함수를 사용하는 목적은 메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하기 위함이다. 해시 값의 특징은 다음과 같다.

  • 입력값이 같으면 반환되는 해시 값도 동일함.
  • 해시 값의 길이는 입력값의 길이에 상관없이 항상 일정함.
  • 서로 다른 입력값이 동일한 해시 값을 만들 확률은 낮음.

2. 해시 함수의 종류

  • MD5
    MD5(Message-Digest Algorithm5)는 1990년대부터 사용해온 알고리즘으로, 서로 다른 두 입력값으로 이 해시 함수를 통해 해싱하면 같은 해시 값이 나올 수 있다는 사실(해시 충돌)이 알려져 거의 사용되지 않고 있다.
  • SHA-1
    SHA-1(Secure Hash Algorithm-1)은 최대 2^64비트 데이터를 입력값으로 사용할 수 있고, 고정된 160비트의 해시 값을 생성한다. 이 해시 함수 역시 MD5와 마찬가지로 해시 충돌 방법이 발견되었기에 거의 사용되지 않지만, 암호학적으로 안전하지 않아도 되는 곳에서 사용되기도 한다.
  • SHA-2
    SHA-2(Secure Hash Algorithm-2)는 SHA-224, SHA-256, SHA-512 등 여러 해시 함수를 지칭한다. SHA-1의 취약점이 발견된 이후로 가장 많이 사용하는 해시 함수이다. 물론 안전할 수록 해시 값을 생성하는데 걸리는 시간은 더 오래 걸린다.

해싱 알고리즘

  • 해싱 알고리즘은 데이터를 최종 사용자가 원문을 추정하기 힘든 더 작고, 뒤섞인 조각으로 나누는 것을 의미한다.
  • 해시 함수는 특정 입력 데이터에 대해 고정 길이값 또는 해시값을 생성하는 알고리즘이다.
  • 해시 함수는 단방향 함수로 작용한다.
  • 해싱 알고리즘 처리를 거친 후에는 원본 텍스트로 복구하는 게 불가능하다. 그러므로 특정 결과값을 얻었을 때, 이상적인 해시 함수는 해당 결과값을 도출한 초기 투입값을 절대 얻지 못하게 한다. (한 입력 매개변수의 출력값은 시점과 사용 횟수에 상관없이 항상 같은 결과가 나온다.)
    즉 output을 이용하여 input을 추정하는 것이 매우 어렵다.

SHA256 ( hash함수의 종류)

  • Sha256 (Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환한다.
  • 어떤 길이의 값을 입력해도 256비트의 고정된 결과값을 반환한다.
  • 입력값이 조금만 변동되더라도 반환값이 완전히 달라지기 때문에 반환값을 토대로 입력값을 유추하는 것이 거의 불가능하다.
  • 단반향 암호화 방식이기 때문에 복호화가 불가능하다. 복호화를 하지 않아도 되기 때문에 속도가 빠르며 사용 예로는 비밀번호의 일치 여부 확인이 있다.

[예시] 해시값 입출력 예시

3. 해시함수가 사용되는 곳(활용사례)

  • 비밀번호 저장 용도
    암호 저장 시 그대로 저장하지 않고 해시함수로 암호화 하여 저장하여 DB가 노출되어도 암호가 노출되지 않는다.
  • 검색용도
    데이터 목록에서 특정 데이터를 조회할 때, 키 값으로 탐색 범위를 줄일 수 있다.
  • 정보의 무결성 확인
    자신이 받은 암호화의 결과에 결손이 의심된다면, 공개된 해시값과 검사합(Checksum)을 비교하면
    검증 할 수 있다.
    ▶ 무결성이란?
    정보가 원 그대로 변형되지 않고 전달되는 성질 즉 원래의 정보 또는 신호가 전송/ 저장/변환 중에 또는 그 후에도 동일함을 유지하는 것
    ▶ 정보보호 분야의 무결성
    애초의 의사표시 내용이 상대방에게 동일 내용으로 전달되었는가를 말한다.
    메시지가 제 3자에 의해 중도에 임의 변경되지 않았는가 즉, 인가된 방식에 의해서만 변경되도록 하여 임의 변경, 삽입, 삭제 등에서 보호하려는 보안용어

4. 체크섬이란?(checksum)

체크섬이란 중복 검사의 한 형태이며 자료의 무결성을 보호하는 단순한 방법이다.
네트워크를 통해 전달되는 값이 중간에 해커 혹은 네트워크의 오류로 변질되는 경우를 대비하여 체크섬 값을 같이 보내어 무결성을 제공하게 된다. (추가로 끼워넣는 번호는 대개 0~9 중 하나)
체크섬은 기본적인 메시지 구성 요소를 추가해 결과값을 저장함으로써 동작한다. 만약 체크섬이 맞아 떨어지지 않는다면 메시지가 손상되었다고 결론을 내릴 수 있다.

profile
개발하는 돌멩이🙄🙄👻

0개의 댓글