본문 바로가기

Web

단방향 암호화와 양방향 암호화

홈페이지에서 사용자가 로그인을 하고, 로그인 정보를 fetch 했을 때 브라우저에서 비밀번호를 fetch할 수 없어야 한다. 

즉, 비밀번호를 알아내는 것이 불가능해야 한다. 

 

DB에 있는 비밀번호를 알 수 있게 된다면, 해커가 DB를 해킹했을 때 민감한 정보에 접근이 가능하게 된다. 

또한 다른 사이트에서도 동일한 아이디와 비밀번호를 사용하는 경우 문제가 더 심각해진다. 

 

따라서 비밀번호나 계좌번호같은 민감한 정보를 백엔드에 저장할 때 그대로 저장하지 않는다. 

양방향 암호화 

양방향 암호화는 JWT같은 복호화가 되는 암호화를 말한다. 

즉, 암호화와 복호화 모두 할 수 있는 암호화 방법이다. DB에 양방향 암호화 방식을 사용한다면 만약 데이터베이스가 털리게 된다면 홈페이지를 통해서 비밀번호를 추측할 수 있게 된다. 

 

그렇게 암호화 알고리즘을 알아버리면 모든 사용자의 아이디와 비밀번호를 알게되는 것이므로 사용자 비밀번호와 같은 정보를 양방향 암호화 방식을 사용하지 않는다. 

단방향 암호화 

단방향 암호화는 암호화는 되지만 복호화가 안되는 것을 의미한다. 

예를들어 245719를 암호화를 통해서 779로 만들었다고 생각해보자. 앞에서부터 2개씩 끊어서 10으로 나눈 나머지가 암호화 알고리즘이다. 하지만 동일한 결과를 만들어내는 정보가 너무 많기 때문에 원래 정보를 알아내기 쉽지 않다. 

 

이를 다대일이라고 하는데, 무작정 가능한 경우의 수를 모두 대입해보는 브루트포스 방식으로 복호화가 되는 경우가 있다. 

이를 보안하기 위해서 암호화된 결과를 다시 암호화 시키는 등 어려운 알고리즘을 추가해서 암호화를 시킨다. 

 

이야기의 흐름을 통해서 알겠지만 민감한 정보를 저장할 때는 해킹을 당해도 알 수 없도록 단방향 암호화를 통해서 저장하는 것이 바람직하다. 

반응형

'Web' 카테고리의 다른 글

웹사이트 로그인의 역사  (1) 2024.10.02
3D 애니메이션 심화  (2) 2024.09.08
CSS 레이아웃 시스템의 변화  (1) 2024.06.05
CSS 3D  (2) 2024.05.08
CSS 선택자  (2) 2024.05.05