인프런 커뮤니티 질문&답변
비밀번호 암호화
작성
·
968
2
안녕하세요. 수업 정말 잘 듣고 있습니다!
수업 들으면서 계속 궁금한게 있는데요
비밀번호 암호화에 대해서 궁금합니다.
지금 수업에서 진행하는 디버깅과정을 보면, 클라이언트에서 비밀번호 암호화가 안되고 서버에서 암호화하여 저장되는것 같습니다. 비밀번호 1111값이 다 보이고, 인증시 암호화되어 있는 비밀번호를 복호화하여 클라이언트에서 입력받은 비밀번호와 같은지 확인하는것 같은데요, 이렇게 진행되는게 맞나요?
그리고 클라이언트에서 비밀번호가 암호화되지 않으면 보안상 위험하지 않나요? 실무에서는 어떻게 사용되는지 궁금합니다. 클라이언트에서 암호화를 하고, 서버에서 또 그걸 암호화해서 이중 암호화를 하면 더 보안이 강화되진 않나요? 실무에서 보통 사용되는 암호화 프로세스에 대해 궁금합니다!
감사합니다.
답변 1
5
네
말씀하신 것처럼 클라이언트에서 서버로 전송되는 값에 대한 암호화는 스프링 시큐리티와 상관없이
필수적으로 고려가 되어야 합니다.
물론 노출해도 중요하지 않은 데이터는 상관없겠지만 중요한 데이터는 반드시 암호화 처리가 되어야 합니다.
일반적으로 웹 환경에서는 ssl 혹은 tls 라고 불리우는 https 프로토콜을 사용한 암호화 방식을 많이 취합니다.
데이터 전송구간에서 암복호화 처리를 해주는 보안 프로토콜이라 보시면 되는데 최소한의 1차적 암호화 처리입니다.
여기에 별도로 암호화 처리 구현을 하면 더 안전할 수 있습니다
AES256 같은 암복호화 할 수 있는 모듈을 사용해야 되겠죠
대칭키 혹은 비대칭키 방식으로 암호화 처리를 할 수 있습니다.
스프링 시큐리티에서는 데이터 전송구간에서 암복화된 데이터를 받아서 PasswordEncoder 를 통해 DB 에 다시 암호화하고 암호화된 패스워드를 검증하기 위한 용도로 사용하는 것일 뿐 클라이언트와 서버간 데이터 전송구간에서의 암호화 처리와는 아무런 상관이 없습니다.
Http 전송에서의 암호화 처리와 관련된 내용은 자료가 많으니 검색하셔서 참고해 보시기 바랍니다.




