패스워드 암호화 방법

GonnabeAlright·2021년 11월 28일
0
post-thumbnail

1. 단순 텍스트(plain text)

2. 단방향 해시 함수(one-way hash function)의 다이제스트

  • 수학적인 연산을 통해 원본 메시지를 변환하여 암호화된 메시지인 다이제스트를 생성한다.
  • 원본 메시지를 알면 암호화된 메시지를 구하기는 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없어야 하며 이를 '단방향성'이라고 한다.
  • 패스워드가 "hunter2"라면 이 문자열을 흔히 사용하는 해시 알고리즘인 "SHA-256"으로 인코딩

avalanche 효과

  • 대부분의 해시 함수는 입력 값의 일부가 변경되었을 때 다이제스트가 완전히 달라지도록 설계되어 있다.

단방향 해시 함수의 문제점

a. 인식 가능성(recognizability)

  • "레인보우 공격(rainbow attack)"
    공격자가 전처리(pre-computing)된 다이제스트를 가능한 한 많이 확보한 다음 이를 탈취한 다이제스트와 비교해 원본 메시지를 찾아내거나 동일한 효과의 메시지를 찾을 수 있다.

b. 속도(speed)

  • 해시 함수는 짧은 시간에 데이터를 검색하기 위해 설계된 것
    해시 함수의 빠른 처리 속도로 인해 공격자는 매우 빠른 속도로 임의의 문자열의 다이제스트와 해킹할 대사의 다이제스트를 비교할 수 있다.

3. 솔팅(salting)

솔트(salt)

  • 단방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위 임의의 문자열

솔팅(salting)

  • 이 원본 메시지에 문자열을 추가하여 다이제스트를 생성하는 것
  • 솔트 + 원본 메시지(패스워드) = 다이제스트
  • 사용자별로 다른 솔트를 사용한다면 동일한 패스워드를 사용하는 사용자의 다이제스트가 다르게 생성되어 인식 가능성 문제가 크게 개선된다.
  • 솔트와 패스워드의 다이제스트를 데이터베이스에 저장하고 사용자가 로그인할 때 입력한 패스워드를 해시하여 일치 여부를 확인할 수 있다.
    이 방법을 사용할 때에는 모든 패스워드가 고유의 솔트를 갖고 솔트의 길이는 32바이트 이상이어야 솔트와 다이제스트를 추측하기 어렵다.

4. 키 스트레칭(key stretching)

  • 여러 단계의 해시 함수를 적용하여 다이제스트를 생성하는 과정
  • 잘 설계된 패스워드는 저장 시스템에서는 하나의 다이제스트를 생성할 때 어느정도(일반적인 장비에서 0.2초 이상)의 시간이 소요되게 설정한다.
  • 억지 기법 공격(brute-force attack)으로 패스워드를 추측하는 데 많은 시간이 소요되도록 하기 위한 것
  • 솔팅과 키 스트레칭으로 구성된 암호화 시스템을 구현하려고 한다면 이미 검증된 암호화 시스템을 사용할 것을 권장한다.

0개의 댓글