그냥 심심해서 비밀번호는 어떻게 저장되는지가 궁금해서 써봅니다.
아이디가 : abc 비밀번호가 a1s2d3f4 라고 했을 때
서버에 비밀번호로 "a1s2d3f4" 이렇게 평문으로 저장하는 경우는 없고, 다 암호화된 값으로 저장하겠죠?
예전에는 있었다고 들었습니다...
자, 그렇다면 여러가지 비밀번호 암호화 알고리즘 같은 것들이 있을텐데, 뭐가 있을까요?
1. 단방향 해시
단방향 해시 라는 것이 있는데 "a1s2d3f4" 라는 비밀번호를 넣으면 "asdf122fasdl;vkavcj3810" 뭐 이런 것으로 변환된다고 합니다. 서버가 털린다고 하더라도, 내 비밀번호 "a1s2d3f4"가 그대로 노출되지 않습니다만
단방향 해시는 변환되는 값이 정해져있기 때문에 "asdf122fasdl;vkavcj3810"에서 "a1s2d3f4"얘를 찾을 수 있습니다.
그렇다면 어떻게 해야 하나요?
salt라는 것을 이용하거나, 해시를 여러번 돌리는 법이 있습니다.
2. Salt
솔트가 의미하는 그대로 소금친다 라고 생각하면 됩니다.
"a1s2d3f4" 요런 비밀번호에, 무작위 문자열 "sadbasdf", "vaewr1" 뭐 이런 것들을 추가해서 해시를 돌려주면, 해시키로 암호화된 비밀번호에서 원래 값을 추적할 수가 없습니다.
3. Key Stretching
키 스트레칭은 말 그대로 키를 늘리는 것입니다. 해시를 여러번 반복하여 키를 늘려버려서, 원래 비밀번호를 추측할 수 없도록 만들어주는 것입니다.
'개발 > 잡다개발' 카테고리의 다른 글
XSS 란 (0) | 2019.09.03 |
---|---|
SQL INJECTION (0) | 2019.09.02 |
hadoop 하둡이란 (0) | 2019.08.19 |
RESTful API란 (0) | 2019.08.18 |
JWT(Json Web Token) 이란 (0) | 2019.08.17 |