단순 해시 함수
가장 간단한 형태의 해시 함수를 만드는 방법은 각 블록의 비트별 XOR을 하는 것입니다
단순 해시 함수 만드는 방법
단순 함수 생성 방정식은 위와 나온 것과 같다.
즉 각 비트를 미리 준비된 블록의 값에 XOR 함으로써 해시 함수를 생성하는 것이다.
각 비트의 자리별로 패리티를 계산함으로써 해시 함수를 생성하는 방법인데, 이를 세로 덧붙임 검사(vertical XOR)라고 한다.
이 방식은 메시지 블록을 32비트(4바이트) 단위로 분할하고, 각 단위별로 비트들을 XOR 연산하여 하나의 해시 값을 생성합니다.
이때, 메시지 블록의 크기가 해시 값의 크기보다 작을 경우에는 덧붙임 검사(padding)을 수행합니다.
이 과정에서 메시지 블록 마지막에 1비트를 추가하고, 남은 비트를 0으로 채워서 메시지 블록의 크기를 32비트의 배수로 만듭니다.
그리고 마지막 32비트 단위의 블록에는 이전 블록들의 해시 값을 XOR하여 새로운 해시 값을 생성합니다.
하지만 위와 같은 방법은 충돌 저항성이 없기 때문에 불완전합니다
또한, 데이터의 형식을 예측할 수 있는 경우 해시 함수의 효과가 떨어집니다
세로 덧붙임 검사 보완 : 한 비트 회전
각 블록을 처리한 뒤 해시 값을 한 비트 회전 이동함으로써 극복 할 수 있습니다.
- n-bit 해시 값을 0으로 초기화 한다.
- 뒤에 이어지는 n-bit 데이터 블록에 다음과 같은 절차를 시행한다.
- 현재 해시값을 왼쪽 값으로 한 비트 회전한다.
- 블록을 해시 값에 XOR 한다.
이 과정은 입력 된 값을 랜덤화하고, 입력 값에 나타나는 규칙성을 제거하는 효과가 있습니다
하지만, 이 또한 무결성을 제공하는 좋은 방법이지만, 평문 메시지와+해시 코드를 사용하는 데이터 보안에서는 쓸모 없다
주어진 메시지를 토대로 적절한 해시 값을 생성하는 것은 쉽기 때문이다
한 비트 회전 방식 보완 : 미국 표준국 제안 방식
- 핵심 : 64 비트 메시지를 단순 XOR 적용하고, CBC 모드를 사용해 전체 메시지를 암호화 한다.
레펀런스
- [[Notes/충돌 저항성|충돌 저항성]]
- [[Journals/Plan/메시지 인증 방법|메시지 인증 방법]]
- [[Notes/스트림 암호|스트림 암호]]
- [[Notes/암호 블록 운용 모드|암호 블록 운용 모드]] : AES
728x90
'Computer Science > Security' 카테고리의 다른 글
메시지 다이제스트 (0) | 2023.04.03 |
---|---|
SHA 안전 해시 함수는 무엇인가 (0) | 2023.04.03 |
안전 해시 함수 (0) | 2023.04.03 |
메시지 인증 방법은 무엇인가 (0) | 2023.04.02 |
암호 블록 운용 모드 (0) | 2023.04.02 |