SHA-256 (안전 해시 알고리즘 256비트)은 임의의 크기의 입력 데이터에서 고정 크기인 256비트 (32바이트) 해시 값을 생성하는 암호 해시 함수입니다. 다음은 그 작동 방식의 간단한 설명입니다:
1. 입력 패딩: 입력 메시지는 알고리즘이 요구하는 바와 같이 길이가 512비트 (64바이트)의 배수가 되도록 패딩 처리됩니다.
2. 초기화: SHA-256은 8개의 32비트 변수 (해시 값으로 알려져 있음)를 특정 상수로 초기화합니다. 이러한 해시 값은 입력 메시지의 블록을 처리하기 위한 압축 함수를 초기화하는 데 사용됩니다.
3. 블록 처리: 패딩된 메시지는 512비트 블록으로 나뉘어집니다. 각 블록은 고정 크기 버퍼 (512비트)에서 작동하는 압축 함수를 사용하여 일련의 변환을 거치고 해시 값을 업데이트합니다.
4. 압축 함수: 각 블록에 대해 압축 함수는 다중 처리 라운드에서 현재 해시 값을 블록 데이터와 혼합합니다. 이 과정에는 비트 연산 (AND, OR, XOR 등), 2^32로 나눈 나머지 덧셈 및 순환 이동이 포함됩니다.
5. 최종 해시 값:모든 블록을 처리한 후 최종 해시 값은 프로세스 전체에서 지속적으로 업데이트된 해시 값을 기반으로 계산됩니다. 이 최종 해시 값은 원래 입력 메시지를 고유하게 나타내는 256비트 출력입니다.
SHA-256은 계산 효율성을 유지하면서도 충돌 공격 (두 개의 다른 입력이 동일한 해시 값을 생성하는 공격) 및 사전 이미지 공격 (지정된 출력으로 해시되는 입력을 찾는 공격)에 대한 높은 수준의 보안을 제공하기 위해 설계되었습니다. 디지털 서명, 메시지 인증 코드 (MAC), 다양한 보안 프로토콜에서 널리 사용됩니다.