CODEOK.NET

Page history of 패스워드 보안의 기술



Title: 패스워드 보안의 기술 | edited by Youngrok Pak at 9 years, 3 months ago.

<p>회원가입을 받는 인터넷 서비스를 개발할 때 사용자의 패스워드를 어떻게 보관할 것인가? 제일 쉬운 방법은 물론 페이스북 로그인을 붙이고 <em>패스워드 보안 같은 건 페이스북님이 알아서 해주세요</em> 하는 것이다. 인증의 아웃소싱은 보안 관점에서 서비스 제공자, 사용자에게 모두 유익한 방법이다. 구글, 트위터, 링크드인 등을 다 연동시켜서 선택할 수 있게 하면 의존성 리스크도 조금은 덜어낼 수 있다. 이 글의 주제와 걸맞지 않지만, 정말로 회원 인증은 소셜 로그인이 더 낫다.</p>
<p>그럼에도 불구하고 직접 회원인증을 해야하는 상황이 없지 않은데, 그럴 때 중요한 문제로 떠오르는 것이 보안이고, 그 보안 문제 중에서 한국의 인터넷 서비스들이 오랫동안 잘못해왔으며 지금도 많은 서비스들이 잘못하고 있는 것이 패스워드의 보안이다. 아직도 외부 업체 컨설팅을 다니다보면 패스워드를 잘못 저장하는 경우를 심심찮게 보고, 패스워드 입력 인터페이스만으로도 패스워드를 잘못 저장하고 있는 것으로 추정되는 사이트들이 보인다.</p>
<p>그래도 몇년 전 <a href="http://www.kb.cert.org/vuls/id/836068">md5 파동</a> 이후 패스워드 보안에 대한 지식이 개발자 사이에 많이 퍼져서 지금은 올바른 패스워드 저장 방식을 사용하는 개발자들이 많다. <a href="https://docs.djangoproject.com/en/1.7/topics/auth/passwords/">Django 같은 프레임웍에서는 기본으로 강력한 패스워드 저장 방식을 채택</a>하고 있기 때문에 <span style="text-decoration: line-through;">본의 아니게</span> 안전하게 저장하고 있는 개발자도 많다. 그렇지만, 왜 그런 방식이 안전한지, 기존에 사용되던 방식은 왜 취약한지, 현재 사용하는 방식의 한계는 뭔지 등등에 대해 깊이 알고 있는 개발자는 드물다. 그래서, 이번 글을 기획했다. 이 글에서는 다음과 같은 내용을 다룬다.</p>
<ul>
<li>패스워드를 해싱해야 하는 이유</li>
<li>왜 양방향 암호화는 안되는가?</li>
<li>md5의 취약성과 해싱 알고리즘</li>
<li>salt는 무엇이며 어떻게 사용하는가</li>
<li>권장할 만한 패스워드 저장 방식</li>
</ul>
<p> 
Wiki at WikiNamu