openid의 보안문제

title; The problem(s) with OpenID
link; http://www.idcorner.org/?p=161  

또 한번 OpenID의 보안 문제가 이슈화 되고 있습니다. 2007년 8월 1일부터 3일까지 개최된 BlackHat 2007 에서 Tsyklevich 형제가 OpenID 해킹에 대해 발표 [ppt , pdf] 하였습니다. 그리고 여러가지 취약점들을 모아서 Stefan씨가 'OpenID의 문제'라는 포스팅을 했습니다.

Stefan이 제시한 문제는 7가지 입니다.
  1. Security
    가장 큰 문제는 Phishing입니다. 주소창을 본다라든지, 북마크에 저장된 주소를 이용하여 로그인을 하는 식의 수작업이 있지만 일반인들에게 이해시키기는 어렵죠. Verisign의 SeatBelt는 Firefox에서만 사용할 수 있고, CardSpace는 Windows에서만 사용 가능합니다. CardSpace를 OpenID에 적용할 바에는, 차라리 CardSpace로 사이트 인증을 처리하면 되지 않냐는 의견도 있군요.
    두번째는 XSS(Cross Site Script) 공격입니다. 가장 유명한 것이 CSRF(Cross Site Request Forgery) 인데, 실제로 해외의 OpenID 프로바이더에서 해당 취약점이 있었다고 하네요. 국내의 OpenID 커뮤니티들은 어떤지 한번 테스트해봐야 하겠습니다.
    그리고 man-in-the-middle 공격에 대한 우려도 있습니다. nonce를 사용하면 replay 공격을 막을 수는 있지만, 해커가 사용자 보다 먼저 해당 request를 사용할 경우에는 여전히 문제입니다. SSL을 사용하는게 최선이나, 일반 블로그 사이트에 SSL을 적용하는게 과연 합리적인지는 고민해 봐야겠죠.
  2. Privacy
    첫번째, OpenID는 유일한 id이기 때문에 임의의 방법으로 나의 행동 패턴을 추적할 수 있습니다.
    두번째, OpenID 프로바이더는 나의 행동 패턴을 알고 있습니다. 해킹을 당하거나 사이트 관계자가 악의적인 의도를 가진다면 내 행동 정보가 고스란히 노출됩니다.
    세번째, OpenID 프로바이더에서 사용자가 방문한 컨슈머 정보는 임의로 삭제가 가능합니다. 만일 해커가 내 OpenID를 이용하여 나쁜 짓을 해도, 해커가 컨슈머 정보를 삭제해버리면 알 방도가 없습니다.
    네번째, OpenID는 url을 사용하기 때문에 recycle 문제가 있습니다. AOL이나 Daum과 같은 사이트의 사용자가 OpenID로 자신의 블로그 URL을 사용하다가 탈퇴한 경우, 다른 사용자가 사이트에 가입하여 그 URL을 OpenID로 재사용할 수 있습니다.  
  3. Trust
    OpenID는 식별(identification)만 담당하기 때문에 Trust를 지원하지 않는다고 합니다. 하지만 대중성을 얻기 위해서는 trust가 필요합니다. Sun에서 자사 직원에게 sun의 url이 포함된 OpenID를 제공하는 것이나, AOL이 OpenID whitelist를 유지하는 것이 같은 맥락입니다. 하지만 본인확인도 안되는 아무 OpenID 프로바이더나 받아들이라고 말한다면, 과연 어떤 OpenID 컨슈머가 받아들일까요?
  4. Usability
    OpenID는 IT분야에서 약간은 전문적인 지식이 있는 사용자들이 사용합니다. 일반인들이 제대로 이해하기도 어렵고 사용하기도 번거롭습니다. 사용자 경험(UX)이 불편하다는 것이겠죠. 효과적인 방안을 고민하면 해결될 문제인지, 근본적인 문제인지를 따져봐야할 것입니다.
  5. Adoption
    OpenID 컨슈머에 비해서 OpenID 프로바이더가 너무 많은 상황입니다. 국내에서도 OpenID 프로바이더는 5개고, 컨슈머는 수십개 정도 있죠. OpenID가 활성화 되기 위해서는 프로바이더 보다 컨슈머가 절실합니다. 단지 기존 주도권을 유지하기 위한 용도라면, 오히려 사용자들의 혼란을 가중하는 문제가 우려됩니다.
  6. Availability
    OpenID 프로바이더는 항상(24/7) 서비스를 제공해야 합니다. 하지만 가끔씩 서비스를 제공하지 못하는 상황이 발생하는데, 그러면 해당 OpenID 프로바이더를 사용하는 사용자는 OpenID 컨슈머를 전혀 이용할 수 없습니다. 또한 OpenID 프로바이더가 평생동안 서비스를 제공해 줄 수 없다면 큰 문제가 됩니다. 컨슈머 사이트에서 사용자의 id는 해당 openid 이기 때문이죠. OpenID 프로바이더에 문제가 생겨 더이상 서비스를 받을 수 없다면, 연관된 컨슈머 사이트에 있는 정보 또한 다시는 사용할 수 없게 됩니다.
    이를 해결하기 위해 OpenID 컨슈머가 사용자의 여러 OpenID를 보관하는 식의 방법을 사용하는데, OpenID의 기본 컨셉에는 맞지 않죠. id가 많아서 번거롭기 때문에 OpenID를 사용하는 건데, OpenID 하나가 못쓰게 될까봐 다른 OpenID를 유지해야 한다는 문제가 있습니다.
  7. Patent
    Sun과 Verisign, JanRain은 OpenID 관련 특허에 대해 이미  non-assertion covenants를 발표했습니다. 특허권을 행사하지 않겠다는 말이죠.
    하지만 Sxip사의 관련 특허가 OpenID 기술과 연관성이 높다고 합니다. 물론 Sxip사가 OpenID에 대해 특허권을 행사할 것으로 생각되지는 않습니다. Sxip 또한  non-assertion covenants를 발표하면 해결되겠지만, 그렇지 않은 이상 언제 특허 문제가 생길지 모릅니다.
대부분 OpenID만의 문제가 아니지만, OpenID는 해당 환경을 이용하는 가장 활성화된 서비스를 제공하기 때문에 이슈가 되는 것이죠. 가령 생체인식 시스템이 일부 기업에서 사용되는 건 별 문제 없지만, 입출국시스템이나 공공장소의 출입을 위해 사용된다면 큰 문제로 부각되는 것 처럼 말입니다.

약간은 억지스런 면도 있지만, 상당수는 진지하게 고민해 봐야할 문제들입니다.

 
레퍼런스
http://daveman692.livejournal.com/310578.html?thread=902194#t902194.
http://daveman692.livejournal.com/310578.html?thread=903730#t903730

http://metasploit.com/users/hdm/bh07/tsyrklevich/whitepaper/bh-usa-07-tsyrklevich-wp.pdf  
http://www.slideshare.net/eugenet/openid-security
http://www.scribd.com/doc/256482/OpenID-security
http://www.gnucitizen.org/blog/openid-a-security-story
http://talk.bmc.com/blogs/blog-bohren/jeff-bohren/openid-issues

by S_H_Kim | 2007/09/04 10:07 | 기타 ID 동향 | 트랙백 | 덧글(3)

Commented by kay at 2007/09/04 15:35
Security 의 기술적인 문제들은 크지 않습니다. 다만, Phishing 이 기술적 문제가 아니라, 인지적인 문제라는 점이 용한 해결책을 찾기 어렵게 합니다. 결국, IDP 별로 또는 용도에 따라서 효과적인 방법을이 다를 것 같아요. 그러면서도 하나의 아이디를 유지하려면, IDP 가 context 나 mode 에 따라서 보안/편리성의 정도를 달리 취하는 방향으로 대비가 필요하다고 생각됩니다.
Commented by kay at 2007/09/04 15:37
시간되시면, i-pin 과 오픈아이디 연동 또는 오픈아이디를 활용한 실명인증 방안도 생각해 봤으면 합니다. 저 혼자 궁리중이기는 한데, 대략 정리되면, 팀위키에 공유드리겠습니다.
Commented by S_H_Kim at 2007/09/04 16:09
/kay님, i-pin과 오픈아이디 연동 방안을 읽어봤는데 저는 그다지 끌리지 않더라구요^^ 기술적인 문제보다 정책적인 이슈가 어려울 것 같습니다. 정책적 이슈를 어떻게 풀어나가실지에 대한 방안도 고려하시면 좋을 것 같네요.
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.

◀ 이전 페이지다음 페이지 ▶