1. 목적: 크래커를 통해 평문인 패스워드가 탈취되었을 때 그 패스워드를 사용하여 로그인이 가능하다.
2. 이슈: 프로젝트 상황이 TLS(HTTPS)를 사용할 수 없는 상황에서 크래커가 네트워크 중간에서 패스워드를 탈취하여 시스템에 접속할 수 있는 보안 문제가 발생함.
3. 이미 구축된 시스템은
1) 사용자 등록 시 패스워드를 SHA256으로 암호화 되어 서버에 저장함.
2) 사용자가 로그인 하는 경우 웹화면으로 부터 ID/PW 를 입력 받아 DB에서 입력받은 ID/PW를 이용해 조회한 후, 입력받은 PW를 동일한 방식 (SHA256)으로 암호화 하여 조회된 PW와 비교하는 방식으로 인증 처리함.
4. 해결: 웹 화면에서 스크립트를 이용하여 서버에 저장된 같은 방식으로 SHA256 암호화 하여 전송함.
- SHA256으로 암호화하는 경우도 salt가 동일하여 Hash 값 역시 일정한 값으로 네트워크 중간에 패스워드를 탈취하는 해킹을 피해갈 수 없음.
- 매번 값을 변경하기 위해 BCrypt를 사용하여 암호화 하였으나, 이 역시 SALT 가 포함되어 있어 이미 사용된 패스워드 해쉬값을 계속 사용할 수 있음.
- 최종 해결책은 처음 시스템 접속시 생성된 Session ID 값을 같이 암호화 하여 처리함.
* 자세한 내용은 퇴근시간이 다되서 여기에 적지 않음~~~