pbkdf2, bcrypt

손병진·2021년 3월 8일
0

암호화 기법

  • 유저의 개인적인 정보를 데이터로 저장할 때 그대로 넣으면 보안의 문제가 발생한다.
    그래서 암호화 기법이 존재하는데 대표적으로 해시(hash)암호화(encryption) 이다.
  • 두 기법의 대표적인 차이점은
    hash는 단방향 암호화 기법이고, encryption은 양방향 암호화 기법이다.
    단방향은 평문을 암호화된 문장으로 만들어주는 기능을 하고,
    양방향은 평문을 암호화된 문장으로 만들고, 다시 평문으로 만드는 복호화 기능도 한다.

해시(hash)

  • 동일한 입력 값은 동일한 해시 값을 갖는다
    예를 들어, 1234 라는 비밀번호에 대해 SHA-256 해시함수를 적용하여 암호화된 문자열(fqjirfj09q3rf0 같은)을 받았다면, 같은 알고리즘에서 다시 1234 를 입력하여 적용한다면 똑같은 암호화된 문자열이 나올 것이다. 이를 통해 인증절차를 구현할 수 있다.
  • 동일하지 않은 입력 값에도 동일한 해시값이 나올 수 있다
    입력되는 값에 대해서는 제한이 없지만, 해시함수의 결과값에 대해서는 길이 제한이 있다.
    그렇기 때문에 다른 입력에 대해 중복값이 나올 수 있다.
  • 보완책
    1. 솔트(salt)
    2. 해당 값에 대해 해시 함수를 여러번 돌린다(KeyStretching).

솔트(salt)

  • 위에서 언급했듯이 같은 입력값에 대해 같은 해시값이 나오기 때문에 어떤 해시값에 대해 입력값을 유추해낼 수 있다. 그렇기 때문에 임의의 무작위 문자열을 입력값(salt)에 합쳐서 해시 함수를 적용시키는 것이다. 그리고 솔트값을 배치하는 방법 또한 다양하다.
  • pbkdf2
    Password-Based Key Derivation Fucntion
    해시함수의 문제점을 보완하기 위해 나왔으며, 솔트를 적용하고 해시함수의 반복 횟수를 지정할 수 있다.
  • bcrypt
    해당 기법도 salting / keystretching 개념을 사용한다.
    pbkdf2 와 다른 점은 처음부터 패스워드 저장을 위해서 설계되었으며, 가장 보편적으로 활용된다고 한다.
profile
https://castie.tistory.com

0개의 댓글