솔트

From CS Wiki


Salt; 소금

비밀번호 등 암호화된 원문의 안전성(기밀성)을 높이기 위해 첨가되는 작은 길이의 문자열

활용 예[edit | edit source]

  • AS-IS
    1. apple을 해시하면 1f3870be274f6c49b3e31a0c6728957f가 된다고 가정한다.
    2. 공격자는 1f3870be274f6c49b3e31a0c6728957f라는 해시값을 가지고, 비밀번호 사전에 있는 수많은 단어를 해싱해서 충돌값을 찾는다.
    3. apple이란 단어는 금방 검색 된다. 공격자는 apple이란 단어를 해시하면 1f3870be274f6c49b3e31a0c6728957f가 나오는 것을 알고 사용자의 비밀번호를 취득한다.
  • TO-BE
    1. 사용자의 비밀번호는 apple이지만, 서버는 apple을 그대로 해시하지 하지 않고 salt_apple_salt 와 같이 앞뒤로 문자열[1]을 덧붙여서 해시 한다.
    2. apple을 해시하면 1f3870be274f6c49b3e31a0c6728957f이지만, 앞뒤로 덧붙여진 문자열 때문에 2798e7f3af224f42d69612a77592d570 이라는 해시값이 저장된다.
    3. 공격자는 2798e7f3af224f42d69612a77592d570 를 취득했지만, 이는 비밀번호 사전에 존재하지 않아 아무리 많은 단어를 해싱해도 찾을 수 없다.

사용 방법[edit | edit source]

각주[edit | edit source]

  1. 예시는 이해를 돕기 위해 salt로 했지만 실제로는 안전한 난수발생기를 이용한 32비트 이상의 난수값을 사용해야 한다.