개념 사전 · 개념

비밀번호 해싱

Password hashing · 비밀번호 해싱

은 비밀번호를 복원하는 대신 후보의 일치 여부를 검증할 값을 저장하는 방식이다. 무작위 와 계산 비용을 가진 전용 알고리즘으로 대량 추측의 비용을 높인다.

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

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

  • 서버가 평문 비밀번호를 보관하지 않게 한다.
  • 같은 비밀번호의 저장값이 계정마다 달라지도록 한다.
  • 비용 매개변수를 기록하고 로그인 시 필요한 재해싱을 지원한다.

02어떤 순서로 동작하나

  1. 등록 입력 받기

    서버가 비밀번호를 받아 비밀번호 저장 전용 함수의 입력으로 사용한다.

  2. 와 비용 설정

    사용자별 와 계산 비용을 정해 같은 비밀번호의 저장값이 단순히 같아지지 않도록 한다.

  3. 검증 자료 저장

    알고리즘·비용··결과 등 나중에 검증할 자료를 저장하며 평문 비밀번호를 보관하지 않는다.

  4. 로그인 입력 검증

    저장 형식을 읽고 같은 조건의 검증 함수로 입력 비밀번호가 일치하는지 판단한다.

  5. 조건 갱신

    검증이 성공했고 기존 비용이나 형식을 갱신해야 한다면 새 조건으로 저장값을 다시 만든다.

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

해시 계산에 넣고 결과와 함께 저장하는 계정별 무작위 값.
한 번의 비밀번호 검증에 드는 계산·메모리 비용을 정하는 매개변수.
저장 해시와 분리해 관리하는 추가 비밀값.
정책 변경 시 새 비용·알고리즘으로 검증값을 다시 만드는 처리.
LEARN THROUGH PRACTICE

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

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

실습 구성과 전제

  • 검증할 설치 이미지의 작업 사본과 배포자가 신뢰 가능한 경로로 제공한 SHA-256 값을 준비한다.
  • 사진의 파일 경로·해시를 복사하지 말고 자신의 파일과 공식 배포 값으로 비교한다.
  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는 후보 문자열을 같은 함수에 넣어 결과가 같은지 비교하는 대상이다. 출력 길이는 알고리즘 후보의 단서일 뿐 확정 근거가 아니다.
    • 실제 비밀번호 저장에는 고유 와 비용을 조절하는 전용 함수가 필요하다. 빠른 SHA-256 파일 검사는 이 목적을 대신하지 않는다.
    WebGoat 해시 과제원본 크기로 보기 ↗
    • 과제는 plain (unsalted) hashes라고 명시하며 서로 길이가 다른 두 출력을 제시한다.
    • 화면에는 해시에서 원문을 복호화하는 키가 없다. 가능한 입력을 해시해 비교하는 문제다.
    확인 기준

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

실습에서 확인한 동작 원리

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

04예제로 따라가기

  • 두 계정이 같은 비밀번호를 사용해도 가 다르면 저장 검증값은 달라진다.
  • 로그인에서는 저장된 와 비용으로 입력 후보를 계산하고 저장 검증값과 비교한다.
  • 비용을 높여야 하는 경우 성공한 로그인에서 새 검증값을 만들 수 있지만 기존 평문을 DB에서 복구하는 것은 아니다.

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

  • 파일 무결성용 빠른 SHA-256을 한 번 적용하는 것만으로는 비밀번호 추측 비용이 충분히 커지지 않는다.
  • 는 비밀키가 아니므로 공개되어도 된다. 를 쓰면 별도 보관·교체·복구 정책이 필요하다.

06상세 노트 · 실습 자료

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

공식 문서 · 표준

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