익명성과 정체성을 동시에 추구하는 global id를 생각해봅니다

gang의 이미지

동호회 등의 인터넷 사이트들을 돌아다니다 보면, 매번 ID/PW를 입력해야 하고, 한동안 방문하지 않던 곳은 ID/PW를 잊어버리기가 쉽상이죠. 게다가 사용자 등록을 하면서 엄청난 개인정보들이 유출되는 위험도 있죠.

이러한 불편하고 위험한 시스템을 개선할 방법이 없을까 고민하다, 새로운 시스템을 한번 구상해 보았습니다.

제가 말하는 시스템을 기본적으로 공개키기반구조(PKI)입니다.
PKI는 이미 인터넷 뱅킹에서 사용되고 있죠. 금융결제원에서 발행한 하나의 인증서를 사용하여, 시중은행에서 공동으로 사용되고 잇습니다.
그런데, 이러한 부류의 인증서의 경우, 중요한 개인정보들과 직접 연결되어 있으며 유지관리에 적잖은 비용이 든다는 이유로 인터넷에서 널리 사용되지는 못하고 있습니다. 그래서 동일한 기능을 수행하지만 가볍고 적은 비용으로 사용할 수 있는 시스탬을 생각해보았습니다.
(아래 내용은 보안에 관련된 전공지식이 다소 필요한 부분이 있음을 양해바랍니다)

익명성 identity
사용자 ID로 email 주소의 암호학적 해쉬값(one-way hash)을 사용합니다. hash 값을 사용하게 되면, 인증과정에서 접속자의 email 주소를 알 수가 없습니다. 그러나, 그 hash 값은 바로 그 email 주소 하나에만 할당되는 유일한 값입니다. 그리고, 다른 방법으로 email 주소를 알 수 있다면, 접속자가 바로 그 email 주소 사용자라는 것은 증명할 수 있습니다.
예를 들어 설명하자면, someone@some.site 라는 사용자는 hash값 '192837465'를 ID로 사용하여 어느 사이트에 접속합니다. 그러면 접속 인증과정에서 사이트는 사용자의 hash값 이외에는 아무것도 알 수가 없습니다. 그러나 필요에 따라, 사이트에서 사용자 email을 요구하여 알게된다면, 사이트는 그 hash값을 비교하여 사용자의 email 주소를 확인 할 수도 있습니다.
이러한 방법으로 익명성을 유지하면서, 동시에 identity도 유지하는 ID가 사용될 수 있습니다.

인증서 발급과정

  1. 사용자는 인증기관에 자신의 nickname과 email 주소를 등록합니다.
  2. 인증기관은 일회성 비밀번호를 사용자 email로 보냅니다.
  3. 사용자는 email로 받은 비밀번호를 인증기관에 제출해 email 주소의 소유자임을 증명합니다.
  4. 인증기관은 email 주소의 hash 값과 nickname을 포함한 인증서를 사용자에게 보냅니다.

취약점

  • 인증서 발급과정에서 email을 사용하므로, 다른 사람의 email을 도용할 수 있는 경우에는 허위 인증서 발급이 가능합니다(보안 용어로는 active attack). 따라서 이 인증서의 사용은 어느 정도의 위험을 감수해야 합니다. 돈이나 법에 관련된 분야에서는 절대 사용하지 않는 것이 좋을 겁니다. 그러나 한편, 단순히 ID/PW 기반의 인증이 가지고 있는 위험들은 일부 제거하는 효과도 있습니다.
  • 인증기관을 누구로 하느냐는 문제는 PKI의 오래된 논쟁거리 중 하나입니다. 소수의 비영리/비정부 기관(굳이 '기관'이어야 할 필요는 없겠죠)을 인증기관으로 하는 것이 좋지 않을까 생각드네요. 이 인증기관은 자신이 발행한 인증서들에 대하여 어떠한 법적 책임도 지지 않습니다.

이러한 익명성 ID를 상업적인 사이트들에서는 별로 좋아하지 않겠죠. 그들은 남의 정보를 수집하는 취미가 있으니까요. 하지만, KLDP와 같은 사이트를 포함한, 동호회 등 여러 비영리 사이트들은 사용자 관리의 부담도 줄어드니 오히려 좋아하지 않을까요. 사용자 입장에서도 여러 ID/PW를 외워야 하는 부담도 줄어드는 잇점이 있고.

지금은 그냥 이런 생각뿐입니다. 혹 다른 분들에게 좀 더 나은 의견이 있을까 해서..

[/][/]
권순선의 이미지

음...그런데 결정적으로 id로 쓰일 해쉬값(숫자)를 외고 있어야 한다는 점이 아무래도 좀 어려울것 같네요. 몇자리가 될진 모르지만 적어도 4자리보다는 길테니....그점이 좀 문제가 될것 같네요. :?

cjh의 이미지

Passport와 비슷해 보이는군요...

--
익스펙토 페트로눔

jj의 이미지

일반적으로, 특히나 이런 공개시스템에서는 알고리즘은 공개하게 될텐데, 이 경우엔 hash algorithm을 공개하겠죠, 혹은 공개된 알고리즘을 쓰던가... 그렇게 되면 누구나 임의의 email주소에 대해서 hash값을 구할 수 있겠죠... 그런데 그러면 안되지요.

결국 머리를 잘 굴려서... hash를 구할 데이터에 사용자나 인증 기관의 비밀 데이터를 집어넣으면...

그런데 이걸 PKI로 부르기엔 좀 빈약한 면이...

그런데 오픈진영에서도 패스포트에 대응되는 뭔가가 있을까요? 그렇게 하는것 자체가 오픈진영에 어울리는 일은 아니지만....

--
Life is short. damn short...

gang의 이미지

권순선 wrote:
음...그런데 결정적으로 id로 쓰일 해쉬값(숫자)를 외고 있어야 한다는 점이 아무래도 좀 어려울것 같네요. 몇자리가 될진 모르지만 적어도 4자리보다는 길테니....그점이 좀 문제가 될것 같네요. :?

인터넷뱅킹 할 때에 사용하는 인증서와 마찬가지로 인증서(개인키 포함)는 파일입니다. 따로 ID가 있는 것이 아니라, 인증서 파일을 ID 대신 사용하는 것이죠. 단 이 파일이 암호화 되어 저장되어 있기 때문에 비밀번호(passphrase)는 알고 있어야합니다.
단점이라면, 자신의 컴퓨터가 아닌 다른 컴퓨터에서 사용하려면, 사용자가 디스켓 같은 것으로 인증서를 파일로 가지고 다녀야 한다는 점이죠.

cjh wrote:
Passport와 비슷해 보이는군요...

역할이 비슷하다는 것은 사실입니다.
제가 MS의 passport에 대하여 구체적으로 알지는 못합니다만, PKI 기반은 아닌 듯 생각됩니다.(틀렸다면 지적을...) 즉, 보안상 문제가 있을 수도 있고, 심지어 MS가 다양한 개인정보(신상 정보 뿐만 아니라 누가 어떠한 사이트를 방문했는가까지도)들을 수집할 수 있는 형태가 아닌지요.
제 생각이 passport와의 다른점은 익명성에 의한 개인정보 보호라는 면과 public domain이란 점이라 생각됩니다.

jj wrote:
일반적으로, 특히나 이런 공개시스템에서는 알고리즘은 공개하게 될텐데, 이 경우엔 hash algorithm을 공개하겠죠, 혹은 공개된 알고리즘을 쓰던가... 그렇게 되면 누구나 임의의 email주소에 대해서 hash값을 구할 수 있겠죠... 그런데 그러면 안되지요.

특정한 사용자가 어떠한 서비스를 사용(또는 문서에 서명)하였는지 확인은 가능합니다. 누가나 email 주소에 대한 hash값을 구할 수는 있으니까요. 하지만, 특정 서비스의 사용(또는 서명)이 누구에 의하여 이루어진 것인지 역추적하는 것은 상당히 힘든 작업이 됩니다.(guessing attack은 가능)
솔직히 이런 생각을 한 동기는 완전한 익명성을 구현하는 것보다, 메일 수집기 같은 것에 걸려들지 않기 위한 것이었는데, 어느 정도의 익명성을 제공할 수 있겠다는 생각에... :wink:
다른 한편, 익명성을 보다 강화하는 방법도 있습니다.
hash값을 구할 때, email 뿐만 아니라 인증서 소유자만 알고 있는 난수를 하나 섞어 hash 값을 만들면, 임의의 email 주소에 대한 hash 값을 구하는 것이 불가능하게 됩니다. 역추적을 위한 guessing attack도 불가능하게 되고요. 이정도면 거의 완성된 익명성을 보장할 수 있으리라 생각되는군요. 그런데, 이러한 방법의 경우 사용자가 동일한 email에 대한 다른 인증서 발급을 남발하는 것을 막기 위하여, 어떠한 식으로던 인증기관이 사용자의 정보를 유지하여야만 합니다. email에 대한 hash 값만을 사용하는 경우에는, 인증기관이 굳이 사용자 정보를 유지하지 않고 인증서만 발급해 주면 되죠.
두 방법의 trade-off는 생각해 봐야할 문제이겠군요.
권순선의 이미지

MS의 .NET 및 Passport에 대응하기 위한 자유소프트웨어 쪽에 dotGNU 라는 것이 있습니다. 자세한 것은 다음 웹사이트를 참고하세요.

http://www.gnu.org/projects/dotgnu/

gang의 이미지


자세히 살펴보지는 못했지만, Virtual Identities라는 것이 DotGNU project에 포함되어 있군요. 구체적인 내용은 모르지만, 이런 것이 대안될 수도 있다고 생각드는군요.

추가정보
개인정보를 기술하기 위하여 RDF를 사용하는 FOAF라는 프로젝트에서 메일 수집기로부터 email 주소를 보호하기 위하여 email의 sha1sum이라는 hash값을 사용하고 있네요.

이 주제 글이 자문자답이 되고 있군요. :)