관리 메뉴


Kinesis´s Open Document

진단항목 : 안전한 인증 및 세션 관리 - 보관과정 #01 본문

기획 시리즈/보안 : 진단항목 이해하기

진단항목 : 안전한 인증 및 세션 관리 - 보관과정 #01

Kinesis 2016. 6. 29. 13:08


※ 최대한 이해하기 쉽게 서술하고자 하였으나 보안 지식은 기초라 할지라도 일반적인 기초 과정보다 높은 수준을 필요로 합니다.

※ 본 내용은 초안이며, 저작권은 저 Kinesis(Hae Kwang, Kim) 에게 있으므로 무단으로 펌하여 재배포하는 것을 금지합니다. (단, 본 게시물의 일부만을 발췌하여 출처 주소를 남겨 본 게시물에 접근할 수 있는 링크를 남기는 경우는 허용합니다. 이는 제가 여러분들을 믿고 양질의 게시물을 작성하고 여러분들은 접할 기회를 제공받기 위한 서로의 배려입니다.)


※ 본 내용은 보안 기초를 학습하는 사람이나, 개발자들에게 유용할 수 있습니다


최종본 바로보기

마지막 세 번째로 살펴봐야 할 것은 보관과정이다. 이 부분에 대해 이해하고 해결 방안을 내놓기 위해서는 WWW(World Wide Web)와 인증방식의 개념 및 이해, 파일시스템, 암호화 처리의 개념에 대해 가늠하거나 이해하고 있어야 한다. 최근의 시스템들은 대부분 웹과 연동이 되는 부분이 많기 때문에 세션 및 쿠키의 처리 전후로 발생하는 데이터의 보관문제 및 자동로그인을 위한 보관 문제에서 발생될 수 있는 이슈를 고려해야 한다.


보관과정에서 첫 번째 이슈데이터보관의 주체가 누구인가에 대한 것으로 이는 간단하게는 웹에서 세션 및 쿠키에서 발생되는 데이터 보관 문제에서부터 안드로이드 어플리케이션 등에서 자동로그인을 위한 기능 등을 “어디에”, “누가” 보관할 것인가에 대한 문제이다.


세션 및 쿠키와 관련된 부분에서는 간단하게 세션방식을 이용하는 것으로 대응이 가능하다. 기본적으로 세션을 이용할 경우 쿠키에 담기는 데이터는 세션식별자에 관련한 것으로 해당 값을 제외한 데이터는 모두 서버측에 저장되는 반면, 쿠키를 이용하여 데이터를 다룰 경우 다뤄지는 데이터는 통신과정에서 노출될 위험이 존재한다. 따라서 이러한 경우 인증에 필요한 정보 등은 서버측에 보관하는 것이 좋다 할 수 있다.


비 전공자를 위한 추가 서술

앞서 설명했듯이 세션을 이용한 처리 방식에서는 데이터가 서버측에 보관되는 반면 쿠키를 이용할 경우 데이터는 클라이언트측에 보관이 되기 때문에 위조나 변조가 발생할 가능성이 있기 때문이다. 이 부분에 대해 이해가 아직 되지 않았다면, 앞서의 처리과정을 다시 한 번 읽어 보고 이해할 수 있기를 바란다.


자동로그인을 위해 정보를 보관할 때에는 다소 주의가 필요한데 웹 기반에서는 대게 세션식별자를 보관하는 방식을 이용하므로 많은 정보를 보관하지는 않으나, 안드로이드나 앱 같은 경우에는 사용자 아이디 또는 패스워드를 보관하지 않도록 조치해야 할 필요가 있다. 


비 전공자를 위한 추가 서술

기본적으로 세션을 이용하게 되면 세션아이디에 대한 처리는 브라우저 또는 개발에 사용되는 언어에서 자동적인 처리가 이루어지도록 유도 및 처리가 이루어진다. 그러나 안드로이드 어플리케이션이나 별도의 클라이언트를 생성하여 사용하는 경우에는 이러한 처리를 직접 구현해야 한다.


무엇보다 클라이언트는 사용자가 보유한 장치(디바이스)에 설치되므로 인터넷 연결과는 상관없이 사용자는 필요에 따라 클라이언트를 건드릴 수 있다는 사실을 인지하고 있어야 한다. 여기서 건드린다는 것은 일부 파일을 삭제하거나 교체하거나 또는 분석하여 조작하는 일련의 행위를 포함한다. 


쉽게 말해서 자신이 어떠한 업체에서 출입증을 발급 받았다고 가정할 때, 자신은 필요에 따라 출입증이 휘어지는지 휘도를 테스트 해보거나 어떠한 구조로 만들어졌는지 살펴보기 위해 도구를 이용해 스캔을 해볼 수도 있고, 더 나아가 전문적인 지식을 갖고 있다고 가정한다면 해당 출입증을 복제하는 시도를 할 수도 있을 것이다. 여기서 중요한 점은 그러한 과정이나 행위가 일어나고 있다는 사실을 업체는 알 수 없다는 것이다.


따라서 우리는 이러한 행위가 발생하지 않도록 가능성을 최소화 시키는 방법을 고려해 볼 필요가 있는 것이다.


자동로그인을 위해서는 불가피하게 클라이언트측에 정보를 남겨야 하는데, 이러한 경우 웹에서 사용하는 방식과 동일하게 인증여부를 인식할 수 있는 세션식별자를 보관하도록 하는 것이 바람직하며 해당 세션이 노출되어 재사용되거나 악용될 경우에 대비해서도 대응이 가능할 수 있도록 하여야 안전한 인증을 제공할 수 있게 된다.


비 전공자를 위한 추가 서술

만약 자신이 업체의 담당자라고 가정한다면 손님(클라이언트)에게는 어떻게 서비스를 제공하는 것이 좋을 것인가? 변조될 수 있는 정보는 최소한으로 전달하고 나만이 알아 볼 수 있는 정보(자신이 암호화 한 정보라고 할 수 있겠다)만 적어 주고 차후 방문 시 해당 정보를 확인하여 검증하는 것이 사고의 발생 가능성을 더 낮추는 일이 될 수 있는 것이다.



Comments