비밀번호 암호화(Hash, salt)

2025. 5. 4. 20:06·웹 기초 지식

비밀번호 암호화

비밀번호 암호화를 위해 사용하는 기법이 두 가지가 있습니다.

  • 해시(Hash): 비밀번호를 암호화하는 기법. 보통 단방향 기법을 사용합니다.
  • salt(이하 조미료): 비밀번호를 해싱할 때 Rainbow Table(무지개 공격!)을 막기 위해 사용하는 기법

해싱(Hasing)

해싱은 단방향과 양방향 두 종류가 있는데, 비밀번호 암호화 시에는 단방향 기법을 사용합니다.

직접 해싱 해보기

SHA256 알고리즘 링크

어떤 값을 입력하건 고정된 길이의 해시 결과가 나옵니다.

단방향인데 어떻게 맞는지 검증하나요?

데이터베이스에 저장된 값은 변경시키지 않고, 사용자 입력값만 해싱하여 두 값이 일치하는지 확인합니다.

사용자 입력값 SHA256으로 해싱한 값 데이터베이스에 저장된 값
example 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c

해싱의 문제점

해커들은 비밀번호에 자주 사용되는 값들을 해싱한 값을 자체 데이터베이스에 저장하고 있습니다. 이를 Rainbow Table이라고 합니다.

이 값들과 데이터베이스의 비밀번호와 비교하여 비밀번호를 탈취할 수 있습니다.

 

보통 사용자들은 여러 사이트에 동일한 비밀번호를 사용하기 때문에 하나의 서버만 탈취 당해도 여러 사이트를 탈취 당할 가능성이 높습니다.

비밀번호에 자주 사용되는 값 Rainbow Table의 값 데이터베이스에 저장된 값
example 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
password 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
123456 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
guest 84983c60f7daadc1cb8698621f802c0d9f9a3c3c295c810748fb048115c186ec 84983c60f7daadc1cb8698621f802c0d9f9a3c3c295c810748fb048115c186ec
admin 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
후략 .... 후략 .... 후략 ....

조미료 기법(salt)

해커들의 무지개 공격에 대응하기 위해 조미료 기법을 사용합니다.

조미료 기법이란 비밀번호 해싱 시 임의의 값을 더하여 해싱하는 것을 말합니다. 이때 임의의 값을 salt라고 합니다.

입력값 salt 입력값 + salt 원래 결과 변경된 결과
password salt password_salt 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 48858c776754f108b3dfb896d4204e9f0995613169318c0b6825a6334dbe56ce

 

저작자표시 (새창열림)

'웹 기초 지식' 카테고리의 다른 글

JWT(JSON Web Token)  (0) 2025.05.04
'웹 기초 지식' 카테고리의 다른 글
  • JWT(JSON Web Token)
남느
남느
  • 남느
    남느
    남느
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • 프로그래밍 (15)
      • 웹 기초 지식 (2)
      • Node.js 기초 (1)
      • 알고리즘(Node.js) (1)
      • NestJS (20)
        • NestJS 문서화 (14)
        • NestJS 레시피 (2)
        • NestJS 게시판 API 프로젝트 (4)
      • TypeORM (5)
      • 자바 (1)
      • Spring (0)
        • Spring 문서화 (0)
      • 우분투 적응기 (8)
      • 리눅스 답은 하모니카다 (4)
      • 살다보니 드는 생각들 (3)
      • 도커 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발자
    웹
    신입
    백엔드
    취업
    프로그래머
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
남느
비밀번호 암호화(Hash, salt)
상단으로

티스토리툴바