현대 암호학 기초

[ 암호학 ] 일방향 해시 함수

ITsubin 2022. 5. 26. 11:35

CIA ? : 기밀성, 무결성, 가용성 (Confidentiality / Intergrity / Availability)

 

무결성? : 파일이 변경되지 않았다.

(밤새 맬로리가 파일을 변경했는지 어떤지를 조사하고 싶으면 어제 저장한 파일을 안전한 곳에 저장하고 오늘 불러온 파일과 동일한지 비교하면 된다.)

문제점 : 안전한 곳이 과연 있을까?

파일 전체가 너무 크면 검사가 불가 => 파일의 지문”(해시) 이 필요

 

**파일의 단 한글자만 바뀌어도 해시값은 변한다.

> 파일을 해시함수에 넣으면 해시가 나온다.

> 어제 만든 파일을 해시함수에 넣어 해시를 추출, 오늘의 파일의 해시와 비교!

> P/W도 직접 암호화하는 것이 아니라 해시값을 사용하여 /etc/~~~에 저장한다.

 

실습 : [ 파일의 해시 값 확인 ] (실습 환경 : 우분투(Ubuntu))
> 일방향 해시 함수는 파일의 지문을 채취하는 기술

> 일방향 해시 함수가 만들어내는 해시값은 파일의 지문에 해당.

> 일방향 해시 함수란? : h=f(m)

입력 : 메시지 / 출력 : 해시 값 (=> .출력이 각각 한 개씩 있다.)

해시 값의 길이는 메시지의 길이와 관계 X (해시 함수의 종류에 따라 값의 길이가 나뉨)

ex) SHA-1의 출력은 항상 160비트(20바이트)

해시 값의 길이 : SHA256 < SHA384 < SHA512

 

일방향 해시 함수의 성질

> 임의의 길이 메시지로부터 고정 길이의 해시 값을 계산한다

    (어떤 길이의 메시지를 입력으로 주어도 일방향 해시 함수는 짧은 해시 값 생성)

> 해시 값을 고속으로 계산할 수 있다.

    해시 값 계산은 고속이어야 하며, 메시지가 길어지면 해시 값을 구하는 시간이 길어질 수는 있다.

    현실적인 시간 내에 계산할 수 없다면 소용이 없다.

> 메시지가 다르면 해시 값도 다르다.

    메시지가 1비트라도 변화하면 해시 값은 매우 높은 확률로 다른 값이 돼야 함.

> 일방향성을 갖는다.

> 입력 (예시 345689)23으로 나눈다. 몫의 소수점 7자리부터 10자리까지 4: 해시값이 된다.

 

실습 : [ 해시 기초 ] (실습 환경 : 우분투(Ubuntu))

  1. echo “A Likes B” > like.txt

    (엔터, 공백 포함 10바이트!)

  2. sha256sum like //sha256sum : 해시값을 구하는 함수

    (xxd like 로 확인해보면 4120 4c69 6b65 7320 420a)

  3. A Likes C로 바꾸면 4210 4c69 6b65 7320 430a

    (sha256sum like로 확인해보면 해시값은 달라진다.)