개발/잡다개발

비밀번호 암호화

----___<<<<< 2019. 8. 19. 15:51

Pixabay

 

그냥 심심해서 비밀번호는 어떻게 저장되는지가 궁금해서 써봅니다.

 

아이디가 : 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