| [ garbages ] in KIDS 글 쓴 이(By): cookie () 날 짜 (Date): 2011년 04월 04일 (월) 오후 08시 57분 38초 제 목(Title): Re: 공인인증서, Smart Sign, 표준... 우선 그 스마트 사인이라는 것의 문서를 구할수 없다. 물론 ETRI에 연락해서 문서를 받으면 되겠지만 이렇게 국내에서 조차 웹으로 공개되어 있지 않다면 그 표준이 투명하고 안전하고 중립적이고 충분히 피어 리뷰된 검증된 표준일 리가 없다. 몇줄 안되는 공개된 정보만으로 추정해 보자면 대략 smartsign: 이라는 새로운 TCP 프로토콜을 정하고 그 프로토콜 핸들러 (service demon - 웹서버나 비슷) 설치하고 Javascript 등 에서 그 TCP 포트로 소켓을 열어서 암호화/사인할 데이타를 주고 받아 사인한다는 아이디어인데... 이건 완전히 맥을 잘못잡고 있다. 이건 순전히 javascript 의 cryto.signText() 과 비슷한 기능을 하는 cryto library를 여러 OS와 여러 브라우저에서 어떻게 구현할것인가 하는 표준화의 필요성이 전혀 없는 구현의 세부 방식에 불과한거다. 라이브러리 API도 아니고 라이브러리를 실제로 각 플랫폼에서 어떻게 구현할 수 있는가 한 방식의 예제에 불과하다. 그 smartsign이란 프로토콜이라는건 간단한 function call을 엄청 복잡하게 둘러둘러 뻥튀기를 한 것일 따름이다. 표준화가 필요한건 사용자의 PC와 은행의 서버간에 어떤 데이터가 어떤 순서로 어떤 포맷으로 오가고 에러는 어떻게 고지하고 하는 트랜잭션 인터페이스 프로토콜/메시지만 정의하면 된다. 그 메시지 중에 암호화/사인이 필요한 것은 이런 저런 메세지 들이고 그 데이터는 pkcs#7 같은 표준으로 교환하고 그 내용은 어떠해야 한다는 식으로 표준을 정해야지 사인할 데이터로부터 전송할 pkcs#7 메시지를 어떻게 만들어 낼 지 또는 pkcs#7 데이터를 어떻게 풀어서 verify할지는 각 구현이 알아서 할 일인거다. 물론 smartsign 프로토콜 데몬에 delegate해서 구현할 수도 있지만 javascript의 Crytpo.signText()로 하건 Dot NET의 PKI API를 쓰건 Java Cryoto를 쓰건 OpenSSL을 쓰건 그건 구현자 맘인거다. 이건 하나도 표준화 할 필요도 없고 아니 절대로 표준화 해서는 안되는 "구현세부방식"에 속하는 사항이다. 게다가 사용자 PC의 내부에서 가능하면 같은 프로세스 주소공간에서 충분히 구현될수 있고 또 그래야 할 걸 뭐하러 TCP 소켓을 열어서 또다른 위험을 자초한단 말인가? 그럼 원격 컴퓨터나 같은 컴퓨터의 다른 사용자가 그 포트에 접근하지 못하도록 보호해야 하지 않느냐? 그러자면 이 smartsign service daemon 구현은 필히 "system" 권한을 가져야 한다. 만약 악의적 바이러스 프로그램이 그 samrtsign 프로토콜 핸들러 자리를 후킹해서 빼았아 버린다면 어떻게 할거냐? 또는 TCP 스택을 sniffing 하면 어쩔거냐? 매우 불필요하고 위험하기 까지 한 방식이다. 프로토콜 바운더리에서 클리어 텍스트를 주고받는 이런 짓은 제대로된 보안 개발자라면 이런 정신나간 설계는 하지 않을 거다. 전혀 표준화 할 필요도 없고 절대 표준화 해서는 안되는 것을 절대로 써서는 안되는 방식으로 표준화 하려는 바보들이다. 아니 이걸 연구성과라고 공개할 정도로 뻔뻔하단 말인가? 앞날이 캄캄하다. ETRI가 이정도로 망했던가? |