## 소개
길이 확장 공격은 공격자가 메시지(message1) 값의 해시와 해당 메시지 길이를 사용하여 원본 메시지와 공격자가 추가한 메시지로 구성된 새 메시지의 해시를 계산할 수 있는 암호화 공격의 한 유형입니다. 원본 메시지(message1)의 내용을 알 필요 없이 메시지(message1 “ message2). 이 취약점은 MD5, SHA-1 및 대부분의 SHA-2와 같은 Merkle-Damgaard 설계를 기반으로 하는 해시 함수에서 일반적입니다.
## 공격 메커니즘
Merkle-Damgaard 디자인은 다양한 해시 함수에서 가변 길이 메시지를 처리하는 데 사용됩니다. 여기에는 다음 단계가 포함됩니다.
1. 메시지 패딩: 메시지는 블록 길이(일반적으로 512비트)의 배수로 패딩됩니다.
2. 초기화: 초기 해시 값(IV)이 초기화됩니다.
3. 블록 처리: 메시지는 블록으로 나뉘고 각 블록은 이전 해시 값과 현재 블록에 따라 달라지는 압축을 사용하여 처리됩니다.
4. 마무리: 모든 블록을 처리한 후 결과 값은 메시지의 해시입니다.
길이 확장 공격은 공격자가 해시와 길이만 알고도 메시지를 계속 처리할 수 있다는 사실을 이용합니다. 이를 통해 공격자는 원래 메시지의 내용을 알지 못한 채 원래 메시지와 추가된 조각으로 구성된 새 메시지의 해시를 계산할 수 있습니다.
## 공격 예시
공격자가 message1의 해시와 그 길이를 알고 있는 예를 생각해 보겠습니다. 원본 메시지에 message2를 추가하여 새 메시지를 생성하고 다음과 같이 새 메시지의 해시를 계산할 수 있습니다.
1. 알려진 해시: 공격자는 (메시지1)의 해시를 알고 있습니다.
2. 메시지 길이: 공격자는 메시지1의 길이를 알고 있습니다.
3. 추가: 공격자는 필요한 길이에 메시지1을 추가합니다.
4. 메시지2 추가: 공격자는 패딩된 메시지1에 메시지2를 추가합니다.
5. 해시 계산: 알려진 해시와 메시지1의 길이를 사용하여 공격자는 해시(메시지1 ‖ 메시지2)를 계산할 수 있습니다.
## 보안 권장 사항
길이 확장 공격으로부터 보호하려면 MD5, SHA-1, 대부분의 SHA-2와 같은 Merkle-Damgaard 설계에 기반한 해시 함수를 사용하지 않는 것이 좋습니다. 대신 SHA-3와 같이 이러한 공격에 강한 해시 함수를 사용하거나 비밀 키를 포함하고 길이 확장 공격으로부터 보호하는 HMAC(Hash-based Message Authentication Code)를 사용해야 합니다.
## 결론
길이 확장 공격은 Merkle-Damgaard 설계를 기반으로 하는 해시 함수에 대한 심각한 취약점입니다. 공격자는 이 취약점을 이용하여 원본 메시지의 내용을 알지 못한 채 새 메시지의 해시를 계산할 수 있습니다. 이러한 공격으로부터 보호하려면 SHA-3과 같은 보다 현대적이고 안전한 해시 기능을 사용하거나 HMAC를 사용하여 메시지 무결성과 신뢰성을 보장하는 것이 좋습니다.
## 연결