반응형
HTTPS 사용 시 평문 노출 및 서버 관리자 권한 문제
- HTTPS와 평문 노출
- HTTPS는 데이터 전송 시 SSL/TLS를 사용하여 암호화합니다.
- 이 암호화는 전송 중간에서 패킷을 탈취해도 내용을 읽을 수 없게 보호하지만, 서버에서 평문으로 복호화되는 것이 기본 구조입니다.
- 서버 관리자의 개인 키를 사용한 평문 탈취 가능성
- SSL/TLS에서 개인 키는 데이터 복호화를 위해 사용되며, 서버 관리자가 개인 키를 악용하면 평문 데이터를 확인할 수 있습니다.
- 이러한 위험은 서버 관리자에 대한 신뢰와 관리 프로세스에 의존하게 됩니다.
보통의 로그인 구현 방법
- 로그인 데이터 암호화
- HTTPS만으로도 전송 중간의 도청은 방지되지만, 패스워드가 서버에서 평문으로 처리되지 않도록 추가적인 보안 조치가 필요합니다.
- 패스워드 해싱 전송
- 사용자가 입력한 패스워드를 클라이언트에서 해시(hash) 처리한 후 서버로 전송하는 방법이 있습니다.
- 예: SHA-256, bcrypt 등의 알고리즘 사용.
- 하지만 서버가 클라이언트에서 전송된 해시값을 그대로 저장하면 리플레이 공격에 취약할 수 있습니다.
- 공격자가 동일한 해시값을 서버에 보내면 인증이 성공할 수 있음.
- 사용자가 입력한 패스워드를 클라이언트에서 해시(hash) 처리한 후 서버로 전송하는 방법이 있습니다.
- 해결 방법
- 서버에서 Salt를 사용한 해싱
- 클라이언트는 패스워드를 그대로 보내고, 서버는 이를 Salt(랜덤 데이터)와 함께 해싱 후 저장.
- 클라이언트-서버 간 Nonce(1회용 난수) 활용
- 서버가 로그인 요청 시 Nonce를 클라이언트에 제공.
- 클라이언트는 Nonce와 패스워드를 조합한 후 해싱하여 전송.
- 서버는 Nonce를 사용해 동일한 방식으로 해싱된 값이 맞는지 검증.
- End-to-End Encryption
- 클라이언트와 서버 간 추가적인 키 교환으로 데이터 암호화를 처리.
- 서버에서 Salt를 사용한 해싱
정리
- HTTPS는 네트워크 전송 중 암호화로 충분한 보호를 제공하지만, 서버 내 데이터 보호는 별도의 암호화나 해싱 방식으로 구현해야 합니다.
- 사용자의 비밀번호는 절대로 평문으로 저장되거나 관리되지 않아야 하며, 추가적으로 Salt와 해싱을 적용해야 안전합니다.
- 고승균님의 질문처럼 서버 관리자가 데이터를 탈취할 가능성을 방지하려면 보안 프로세스를 엄격히 하고, 민감 정보에 대한 접근 권한을 제한해야 합니다.
반응형