태그 : seatbelt

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)

OpenID를 안전하게 사용할 수 있는 Verisign의 SeatBelt

title; VeriSign SeatBelt 로 myID 를 더욱 안전하게 사용하세요.
link; http://blog.myid.net/41

myID에서 VeriSign의 SeatBelt를 적용했다고 Kay님이 말씀해 주셨습니다. 저는 주로 IE를 사용하는지라, 테스트를 위해 Firefox를 오래간만에 띄웠습니다^^ myid.net의 포스팅에서는 핵심 기능을 위주로 설명해 주셨기에, 저는 사용 절차를 위주로 살펴보았습니다. 그림이 잘 안보이실 경우, 해당 그림을 클릭하시면 큰 화면으로 보실 수 있습니다.

우선 myid.net의 포스트에 링크된 SeatBelt를 설치했습니다. 그런데 설치를 해도, 아이콘이나 설정 메뉴가 보이지 않아서 한동안 헤맸습니다. 나중에 보니 브라우저 오른쪽 하단에 관련 메뉴가 보이더군요. 아래 그림의 2로 표시되어 있는 부분입니다. 처음에는 그 사실을 몰라서 도구->부가기능으로 이동하여 SeatBelt를 설정했습니다. 설정 내용은 myid.net의 포스팅 내용과 동일합니다.
설정 후에는 무작정 OpenID 입력 버튼(아래 그림의 1)을 클릭해 보았습니다.


OpenID 로그인 메시지(아래 그림의 3)가 뜹니다. 이건 myid.net 측에서 한글화 작업을 한 건가? 라고 생각했지만, 다른 기능을 살펴보니 아닌 것 같습니다.

저는 설정 단계에서 myid.net을 사용하고 http://ayo79.egloos.com로 delegated 하도록 세팅했기 때문에 자동으로 폼이 채워져 있습니다(아래 그림의 4). 또한 브라우저 하단에 myid.net이 표시되어 있습니다(아래 그림의 5).

패스워드를 입력하여(아래 그림의 6) myid.net에 로그인합니다.

myid.net에 로그인 한 뒤에, 다시 springnote로 이동되었습니다. 아직 springnote에는 로그인되지 않았습니다. 브라우저 하단을 보시면 본인의 OpenID가 주황색 박스로 표시되어 있습니다(아래 그림의 7). OpenID 프로바이더로부터 인증받았다는 표시겠죠. 또한 OpenID 입력창에 본인의 OpenID가 채워져 있는 걸 확인할 수 있습니다(아래 그림의 8).

로그인 버튼을 누르면 그대로 로그인이 완료됩니다(아래 그림의 9). 이건 기존 동작 방식과 차이가 없습니다.


브라우저 하단의 주황색 박스를 클릭하면 OpenID 프로바이더로 이동합니다. 오른쪽 클릭을 하면 설정 메뉴 또한 볼 수 있습니다(아래 그림의 8).

SeatBelt의 역할은 OpenID 프로바이더에 로그인하지 않은 사용자를 미리 설정된 프로바이더로 이동시켜주는 기능과 OpenID 입력 창에 자동으로 사용자의 OpenID를 채워주는 기능인 것 같네요. SeatBelt가 등장하게 된 배경은 OpenID 프로바이더의 피싱이 우려되었기 때문입니다. 피싱 해결책으로 '즐겨찾기' 메뉴에 OpenID 프로바이더 링크를 설정하는 등의 방법이 제안되었는데, Verisign의 SeatBelt는 폼나게 처리하고 있죠.

나름대로 괜찮은 서비스 같습니다. 가끔씩 OpenID 입력창을 클릭했을 때, SeatBelt가 제대로 구동하지 않는 경우가 있습니다. 이유는 잘 모르겠네요. '플러그인 설치'라는 경고 창이 뜰 때 간혹 문제가 생깁니다.

사용자가 설정한 하나의 OpenID 프로바이더로 이동하기 때문에, 다른 OpenID 프로바이더를 사용하려면 다시 설정해야 하는 번거로움이 있습니다. 설정시에 여러 개의 프로바이더를 선택할 수 있고, SeatBelt 구동시에 선택하도록 하는 기능이 있다면 더 좋을텐데요. 하나의 프로바이더만 설정했다면, 현재처럼 그냥 이동하구요.
지금 찾아보니 설정 메뉴에서 '팝업 메뉴에 빠른 제공서비스 변경 메뉴 활성'이라는 기능이 있네요. 생각해보면, 굳이 한 세션에서 여러 개의 OpenID 프로바이더를 사용할 경우는 거의 없을 것 같습니다.

by S_H_Kim | 2007/08/23 09:43 | CardSpace | 트랙백 | 핑백(1) | 덧글(4)

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