개념 사전 · 개념

암호학적 해시

암호 해시 · Cryptographic hash · 해시 함수

는 임의 길이의 바이트열을 정해진 길이의 요약값으로 바꾸는 함수다. 입력 변화를 식별하는 데 쓰지만 해시값만으로 작성자나 원본의 신뢰성을 증명하지는 않는다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 파일과 분석 사본의 동일성을 비교한다.
  • 과 이 처리하는 메시지 표현의 기반이 된다.
  • 입력 바이트의 변화와 파일 전송 오류를 찾는다.

02어떤 순서로 동작하나

  1. 과 상태

    은 512비트 입력 과 여덟 개의 32비트 상태 word를 사용해 256비트 결과를 만든다.

  2. 조건

    원래 비트 길이를 L이라 하면 1비트와 k개의 0을 붙여 L+1+k≡448 mod 512가 되게 한다.

  3. 원래 길이

    마지막 64비트에는 전 메시지 길이 L을 넣는다. 패딩된 총 길이나 문자 개수를 넣는 값이 아니다.

  4. 표현의 차이

    문자열은 먼저 정해진 인코딩의 바이트가 된다. 같은 화면 글자도 정규화·인코딩·줄바꿈이 다르면 다른 입력이다.

  5. 출력 형식

    256비트 결과는 32바이트이고 16진수로 쓰면 64문자다. 64문자를 다시 해시하면 원래 32바이트를 해시한 것과 다르다.

03먼저 알아둘 용어와 구성요소

주어진 출력에 맞는 입력을 찾기 어렵다는 성질.
주어진 입력과 같은 출력을 내는 다른 입력을 찾기 어려운 성질.
같은 출력을 내는 서로 다른 입력 쌍을 찾기 어려운 성질.
가 만든 고정 길이 출력값.
256비트 를 만드는 SHA-2 계열 .
SHA-2와 내부 구조가 다른 표준 해시 계열.
해시 내부 처리에서 입력을 나누는 단위로 출력 길이와 다르다.
알고리즘이 정한 형식으로 메시지 끝과 길이를 표현하는 처리.
LEARN THROUGH PRACTICE

설치 이미지 해시 비교와 비밀번호 해시를 구분하기

파일 무결성 비교에서 문자열 처리 오류를 분리하고, 같은 해시 도구를 비밀번호 저장에 그대로 쓰면 안 되는 이유를 설명한다.

실습 구성과 전제

  • 검증할 설치 이미지의 작업 사본과 배포자가 신뢰 가능한 경로로 제공한 값을 준비한다.
  • 사진의 파일 경로·해시를 복사하지 말고 자신의 파일과 공식 배포 값으로 비교한다.
  1. 파일 바이트의 SHA-256을 계산한다

    • Get-FileHash는 경로 문자열이 아니라 파일 내용을 읽어 를 만든다. 다운로드 파일이 다르거나 일부 바이트가 변경되면 비교가 실패한다.
    • 알고리즘과 배포 파일 종류를 먼저 맞춘다. 같은 제품의 boot ISO와 DVD ISO는 다른 파일이다.
    powershell
    $actual = (Get-FileHash -Algorithm SHA256 -LiteralPath .\lab.iso).Hash
    $expected = '배포자가 제공한 SHA-256 문자열'
    $actual -eq $expected

    파일을 변경하지 않는 조회 예시. expected에는 신뢰 가능한 공식 값을 넣는다.

    PowerShell 설치 이미지 해시 비교원본 크기로 보기 ↗
    • Algorithm 열이 SHA256이며 Get-FileHash 결과와 비교식의 True가 함께 보인다.
    • 따옴표 없이 해시를 대입한 줄에는 명령으로 인식할 수 없다는 오류가 있다. 이는 해시 불일치가 아니라 PowerShell 구문 처리 문제다.
    확인 기준

    비교 전에 계산 오류·다른 파일·다른 알고리즘을 각각 배제한다.

  2. 비교 결과가 증명하는 범위를 제한한다

    • True는 선택한 두 문자열이 같다는 뜻이다. 기대 해시를 파일과 같은 위조 경로에서 받았다면 공급자 진정성까지 증명되지 않는다.
    • 대소문자가 다른 16진수 표기는 같은 를 표현할 수 있다. 공백·개행·알고리즘 표시를 제거할 때도 원래 64자리 값을 손상시키지 않는다.
    확인 기준

    일치·불일치와 별도로 기대 값의 출처를 기록한다.

  3. 파일 해시와 비밀번호 저장 목적을 비교한다

    • 과제의 unsalted hash는 후보 문자열을 같은 함수에 넣어 결과가 같은지 비교하는 대상이다. 출력 길이는 알고리즘 후보의 단서일 뿐 확정 근거가 아니다.
    • 실제 비밀번호 저장에는 고유 salt와 비용을 조절하는 전용 함수가 필요하다. 빠른 파일 검사는 이 목적을 대신하지 않는다.
    WebGoat 해시 과제원본 크기로 보기 ↗
    • 과제는 plain (unsalted) hashes라고 명시하며 서로 길이가 다른 두 출력을 제시한다.
    • 화면에는 해시에서 원문을 복호화하는 키가 없다. 가능한 입력을 해시해 비교하는 문제다.
    확인 기준

    해시·인코딩·암호화를 각각 비교·표현·기밀성 기능으로 구분한다.

실습에서 확인한 동작 원리

  • 파일 무결성은 계산값과 신뢰 가능한 기대값의 비교다.
  • 빠른 파일 해시와 느리게 설계하는 은 목적이 다르다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • 55바이트 입력: 가상 메시지의 길이는 55×8=440비트다. 1비트 뒤 0을 7개 넣으면 448비트가 된다.
  • 길이 붙이기: 64비트 길이 필드를 붙이면 총 512비트, 즉 한 이 된다.
  • 56바이트 입력: 448비트 입력에 1비트를 붙이면 마지막 길이 필드를 같은 에 넣을 수 없다.
  • 두 완성: 0을 511개 붙여 960비트로 만든 뒤 64비트 길이를 넣으면 1024비트, 두 이다.
  • 해석: 입력이 한 바이트 늘어도 내부 처리 이 늘 수 있다. 두 경우 모두 최종 해시 출력은 32바이트다.

05혼동하기 쉬운 점과 확인 기준

  • 줄바꿈: LF 한 바이트와 CRLF 두 바이트, 마지막 개행 유무를 구분한다. 화면의 문장만 비교하면 차이를 놓친다.
  • 텍스트 변환: BOM·문자 정규화·공백 제거가 어느 단계에 적용되었는지 확인하고 변환 전후 길이를 기록한다.
  • 표현 혼동: 16진수 문자열· 문자열·디코딩된 원시 바이트 중 실제 함수에 들어간 자료형을 확인한다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.