본문 바로가기

일상/개발 일지

네이버 로그인 뜯어보기

반응형

다음(Daum) 로그인이나 페이스북(facebook) 로그인의 경우에는 로그인 요청을 보낼 때 아이디와 패스워드 정보를 그대로 전송 합니다. 즉, paros와 같은 프록시 툴을 이용해서 요청을 캡처한다면 아이디와 패스워드 정보를 손쉽게 얻을 수 있다는 위험성이 있습니다. (https 통신을 사용하기 때문에 패킷을 캡처한다고 해서 정보를 볼 수 있진 않습니다.)


네이버(Naver) 로그인 과정에서 보내는 요청을 살펴보면 아이디와 패스워드 정보가 직접적으로 드러나지 않는 것을 확인할 수 있습니다.


즉 네이버의 경우에는 요청을 보내기 전에 클라이언트 측에서 아이디와 패스워드 정보를 암호화해서 요청을 보냅니다. 즉 클라이언트 측에서 암호화를 하기 때문에 대칭키 알고리즘을 사용하게 된다면 암호화를 하는 의미가 없습니다.


네이버에서는 공개키 알고리즘 중 하나인 RSA를 이용해서 로그인 정보를 암호화합니다.


즉 매번 요청을 받을 때마다 새로운 e, N을 받고, 문자열을 암호화할 때 session_key에 대한 정보도 포함하며, 또한 중간에 들어가는 바이트가 랜덤한 바이트로 들어가므로 매 번 요청을 보낼 때마다 항상 다른 암호화 값이 얻어짐을 알 수 있습니다.


이 암호화 과정이 javascript를 통해 얻어지기 때문에 브라우저 요청이 모두 캡처가 되더라도 원래 아이디와 패스워드 정보를 알아낼 수 있는 방법이 없습니다. 그러므로 계정을 좀 더 안전하게 보호할 수 있습니다.

(다만 이렇게 하면 자동 로그인을 구현하기가 매우 까다로워집니다. 암호화 하는 과정도 따로 살펴보고 구현을 할 필요가 있기 때문입니다.)

반응형

'일상 > 개발 일지' 카테고리의 다른 글

네이버 블로그 이미지  (1) 2016.09.19
카카오톡 자동응답 템플릿 제작중..  (4) 2016.08.10