<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-454344194403730457</id><updated>2011-07-28T23:15:24.206-07:00</updated><title type='text'>Mountie it!</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-113390577040681348</id><published>2010-03-12T01:00:00.001-08:00</published><updated>2010-03-19T23:59:25.828-07:00</updated><title type='text'>KISA 무선단말기에서의 공인인증서 저장 및 이용 기술규격</title><content type='html'>&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;KISA 무선단말기에서의 공인인증서 저장 및 이용 기술규격&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;div&gt;관련해서&lt;/div&gt;&lt;br /&gt;&lt;div&gt;좀더 자세히 살펴보니 몇가지 문제점(?)이 보인다.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;문서 위치는 다음 링크 참조 :&amp;nbsp;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;&lt;a href="http://bit.ly/cBvjC6" id="z-8s" title="http://bit.ly/cBvjC6"&gt;http://bit.ly/cBvjC6&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[공인인증서 관리 소프트웨어]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;문서의 첫장에 나오는 개요에서 다음과 같이 기술하고 있다.&lt;/div&gt;&lt;div&gt;"본 규격은 무선단말기에서의 공인인증서비스 상호연동성 확보 및 이용 편의성을 고려하여 무선단말기내 공인인증서 관리 소프트웨어의 요구사항을 정의한다."&lt;/div&gt;&lt;br /&gt;&lt;div&gt;즉 "공인인증서 관리 소프트웨어"에 대한 기술규격이고&lt;/div&gt;&lt;div&gt;PureWeb에서는 유효하지 않은 규격이다.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[아이폰의 경우 동작구조]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;다른 무선단말기는 자세히 살펴보지 않았고&lt;/div&gt;&lt;div&gt;아이폰에 대한 기술 부록4를 자세히 살펴보았다.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;아이폰 공인인증서 App은 다음 두가지 기능을 가지고 있다.&lt;/div&gt;&lt;div&gt;"공인인증서 저장기능"&lt;/div&gt;&lt;div&gt;"공인인증서 획득기능"&lt;/div&gt;&lt;br /&gt;&lt;div&gt;공인인증서 저장기능은 다른 App에 존재하는 공인인증서를 아이폰의 공인인증서 App으로 보내서 저장하는 방식에 대한 것이고&lt;/div&gt;&lt;div&gt;공인인증서 획득기능은 다른 App에서 공인인증서가 필요할 경우 "공인인증서 App"을 호출하여 인증서를 획득하는 방식에 대한 것이다.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;기업은행 App을 가정하여 동작방식을 순서대로 열거해보면&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(공인인증서 저장기능 이용시)&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;1) 유저가 기업은행 App을 호출(ibkapp이라고 가정)&lt;/div&gt;&lt;div&gt;2) 유저가 공인인증서 저장을 위해서 "공인인증서 내보내기" 메뉴를 App에서 호출&lt;/div&gt;&lt;div&gt;3) 공인인증서 App을 호출하기 위해서는&amp;nbsp;&lt;/div&gt;&lt;div&gt;kisa-cert-exchange://?cmd=certpush&amp;amp;caller_url_scheme=ibkapp&amp;amp;callback=01&amp;amp;cert=base64(pfx)&amp;nbsp;&lt;/div&gt;&lt;div&gt;의 링크가 사용된다.&lt;/div&gt;4) 이후 공인인증서 App이 실행되고 인증서를 불러들여 저장해두고 처리가 끝나면&lt;br /&gt;&lt;div&gt;ibkapp://?cmd=certpush&amp;amp;callback=01&amp;amp;result=00&lt;/div&gt;&lt;div&gt;으로 결과를 return한다.&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(공인인증서 획득기능 이용시)&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;1) 유저가 기업은행 App을 호출(ibkapp이라고 가정)&lt;/div&gt;&lt;div&gt;2) 해당 App에는 공인인증서가 없어서 공인인증서를 가져와야한다.&lt;/div&gt;&lt;div&gt;3) 공인인증서 가져오기 메뉴를 호출하면&lt;/div&gt;&lt;div&gt;kisa-cert-exchange://?cmd=certget&amp;amp;caller_url_scheme=ibkapp&amp;amp;callback=01&lt;/div&gt;&lt;div&gt;의 링크로 공인인증서 App을 호출한다.&lt;/div&gt;&lt;div&gt;4) 공인인증서 App은 어딘가(?)로 공인인증서를 내보내고&lt;/div&gt;&lt;div&gt;ibkapp://?cmd=certget&amp;amp;callback=01&amp;amp;result=00&amp;amp;cert=base64(pfx)&lt;/div&gt;&lt;div&gt;으로 결과를 return한다.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[반쪽짜리 공인인증서 App]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;공인인증서 사용을 위해서는&lt;/div&gt;&lt;div&gt;공인인증서 신규발급, 재발급, 갱신등의 행위가 꼭 필요한데&lt;/div&gt;&lt;div&gt;이런 행위는 여전히 Windows IE ActiveX에서만 가능하며&lt;/div&gt;&lt;div&gt;기술규격은 공인인증서의 사용에 대해서만 정의하고 있다.&lt;/div&gt;&lt;div&gt;즉 아이폰에서 사용하더라도 여전히 ActiveX는 필요하다는 의미.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;향후 공인인증서 App에서 인증서 신규발급, 재발급, 갱신등이 지원된다는 의미는 달라질 수 있음.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;그러나 지금 현재는 여전히 반쪽짜리임.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[피싱(Phishing)에 취약한 공인인증서 App]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;공인인증서 App을 호출하기 위해서 Custom URL Scheme을 이용한다.&lt;/div&gt;&lt;div&gt;현재 "kisa-cert-excange"라고 명시해두었는데&lt;/div&gt;&lt;br /&gt;이 구조를 국가 인프라에 도입해서 이용하는것은 상당히 아주 위험하다.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;아래 몇가지 예를 들어보았는데 위험성에 대해서 판단해보시길&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1. 일반 웹사이트를 통한 피싱(Phishing)&lt;/span&gt;&lt;/h3&gt;해커가 http://trust.me 라는 해킹사이트를 운영한다고 가정&lt;br /&gt;&lt;div&gt;해당 사이트에는 다음 링크를 포함하고 있음.&lt;/div&gt;&lt;div&gt;&amp;lt;a href=kisa-cert-exchange://?cmd=certget?caller_url_scheme=http://trust.me&amp;amp;callback=01&amp;gt;Login&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;아이폰으로 접속한 유저가 "Login"버튼을 누르면 공인인증서 App이 실행되고 인증서 내보내기 절차를 진행.&lt;/div&gt;&lt;div&gt;내보낸 인증서는 어딘가(?)에 가 있을것이고&lt;/div&gt;&lt;div&gt;해커는 인증서를 그 어딘가(?)에서 가져온다.&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2. 해킹 App을 통한 피싱&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;또다른 경우는&amp;nbsp;&lt;/div&gt;&lt;div&gt;해커가 공인인증서 App과 동일한 Custom URL Scheme을 가지는 피싱 App을 올려두고 기술규격 Spec에 맞게 반응하도록 구성하였다면&lt;/div&gt;&lt;div&gt;유저가 은행 뱅킹 App을 실행하고 인증서 내보내기를 실행하는 순간&lt;/div&gt;&lt;div&gt;KISA 공인인증서 App이 실행되는것이 아니고 해커가 준비한 App이 실행되어 공인인증서를 해커 서버로 탈취해갈 수 있다.&lt;/div&gt;&lt;div&gt;App등록이 통제되는 상황에서는 아주 희박한 경우이겠지만 Jailbroken iphone에서는 가능성이 없지 않다.&lt;/div&gt;&lt;div&gt;Custom URL Scheme이 중복되면 iPhone에서는 가장 나중에 설치된 App이 호출된다.&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3. 의도하지 않은 선량한 앱에 의한 피싱&lt;/span&gt;&lt;/h3&gt;만일 선량한 다른 개발자가 의도하지는 않았지만&lt;br /&gt;&lt;div&gt;my.specialapp.kisa-cert-exchange 라고 URL Identifier를 기록했다면&lt;/div&gt;&lt;div&gt;이 App도 역시 kisa-cert-exchange://... 에 반응하여 호출된다.&lt;/div&gt;&lt;div&gt;유저는 공인인증서 App이 호출되기를 기대하였지만 엉뚱한 App이 호출될 가능성이 존재하는것이다.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[Gateway Server에 대한 규격 부재]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;기술규격에는 명시되어 있지만&lt;/div&gt;&lt;div&gt;App to App으로 데이터를 전송하기 위해서는 Gateway Server가 필요하다.&lt;/div&gt;&lt;div&gt;이미 기업은행이나 하나은행 App에서 그러한 구조를 취하고 있다.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;공인인증서 App에서 내보내기한 공인인증서(Private Key를 포함)가 어딘가로 전달되는데&lt;/div&gt;&lt;div&gt;이곳이 어디인지, 어떻게 관리되어야하는지등이 명확하게 표현되어 있지 않다.&lt;/div&gt;&lt;div&gt;결국 나의 공인인증 개인키가 아이폰 어플에서 공인인증서가 필요로 할때마다 외부로 나갔다 들어오는 과정을 반복하는데&lt;/div&gt;의도적으로 숨기는것인지&lt;br /&gt;&lt;div&gt;아니면 아직 규격을 정한만한 사항이 아니라는건지 궁금하다.&lt;/div&gt;&lt;div&gt;아주 핵심적인 규격 하나가 빠져있어서&lt;/div&gt;&lt;div&gt;현재의 기술규격 자체도 반쪽짜리 규격이다.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[투명한 논의과정 부재]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;KISA 내부에서 어떤 논의 과정을 거쳐 이런 규격이 제정되었는지&lt;/div&gt;&lt;div&gt;회의록이라도 볼 수 있으면 좋겠다.&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[References]&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;Custom URL Scheme관련해서는 아래 URL들을 참조하세요.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html" id="y5ia" title="http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html"&gt;http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://iphonedevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html" id="ah2l" title="http://iphonedevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html"&gt;http://iphonedevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.handleopenurl.com/" id="ke2b" title="http://www.handleopenurl.com"&gt;http://www.handleopenurl.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-113390577040681348?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/113390577040681348/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=113390577040681348' title='2개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/113390577040681348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/113390577040681348'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2010/03/kisa_5649.html' title='KISA 무선단말기에서의 공인인증서 저장 및 이용 기술규격'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-1789521181172782879</id><published>2010-03-09T07:53:00.001-08:00</published><updated>2010-03-09T07:54:59.536-08:00</updated><title type='text'>애플 유료앱 결제와 규제</title><content type='html'>&lt;h1&gt;&amp;#50528;&amp;#54540; &amp;#50976;&amp;#47308;&amp;#50545; &amp;#44208;&amp;#51228;&amp;#50752; &amp;#44508;&amp;#51228;&lt;span style="font-weight:normal"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;&lt;br&gt;&lt;div&gt;&amp;#50500;&amp;#51060;&amp;#54256;&amp;#51060;&amp;#45208; &amp;#50500;&amp;#51060;&amp;#54047;&amp;#53552;&amp;#52824; &amp;#49324;&amp;#50857;&amp;#51088;&amp;#46972;&amp;#47732; &amp;#54620;&amp;#48264;&amp;#52196; &amp;#50976;&amp;#47308;&amp;#50545;&amp;#51012; &amp;#44208;&amp;#51228;&amp;#54980; &amp;#45796;&amp;#50868;&amp;#47196;&amp;#46300; &amp;#48155;&amp;#50500;&amp;#48376; &amp;#44221;&amp;#54744;&amp;#51060; &amp;#51080;&amp;#51012;&amp;#44163;&amp;#51060;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#50976;&amp;#47308;&amp;#50545;&amp;#51008; &amp;#46024;&amp;#51012;&amp;#51452;&amp;#44256; &amp;#44396;&amp;#47588;&amp;#54616;&amp;#45716; &amp;#54532;&amp;#47196;&amp;#44536;&amp;#47016;&amp;#51004;&amp;#47196;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;#44397;&amp;#45236;&amp;#49548;&amp;#48708;&amp;#51088;&amp;#47484; &amp;#45824;&amp;#49345;&amp;#51004;&amp;#47196; &amp;#54620;&amp;#44397;&amp;#50612; &amp;#49436;&amp;#48708;&amp;#49828;&amp;#44032; &amp;#46104;&amp;#47728; &amp;#44397;&amp;#45236; &amp;#49888;&amp;#50857;&amp;#52852;&amp;#46300;&amp;#47196; &amp;#44208;&amp;#51228;&amp;#54616;&amp;#44172; &amp;#46108;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#51060; &amp;#44284;&amp;#51221;&amp;#50640;&amp;#49436; &amp;#44397;&amp;#45236; &amp;#48277;&amp;#44508;&amp;#51221;&amp;#51060; &amp;#50612;&amp;#46523;&amp;#44172; &amp;#51201;&amp;#50857;&amp;#46104;&amp;#44256; &amp;#51080;&amp;#45716;&amp;#51648; &amp;#49332;&amp;#54196;&amp;#48372;&amp;#51088;.&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;1. iTunes&amp;#50640;&amp;#49436; &amp;quot;Create New Account&amp;quot;&amp;#47700;&amp;#45684;&amp;#51032; &amp;#52395;&amp;#54868;&amp;#47732;&amp;#51060;&amp;#45796;.&lt;/h3&gt;&lt;div id="j0lm" style="text-align:left"&gt;&lt;img src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_185gvbr7vgd_b" style="height:328.575px;width:648px"&gt;&lt;/div&gt;&lt;br&gt;&lt;h3&gt;2. iTunes Store &amp;#49324;&amp;#50857; &amp;#50557;&amp;#44288; &amp;#46041;&amp;#51032;&amp;#44284;&amp;#51221;&lt;/h3&gt;&lt;div&gt;&amp;#49324;&amp;#50857; &amp;#50557;&amp;#44288;&amp;#51473;&amp;#50640;&amp;#49436;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;quot;&amp;#44480;&amp;#54616;&amp;#45716; &amp;#46972;&amp;#51060;&amp;#49468;&amp;#49828;&amp;#46108; &amp;#50528;&amp;#54540;&amp;#47532;&amp;#52992;&amp;#51060;&amp;#49496;&amp;#51012; &amp;#48120;&amp;#54633;&amp;#51473;&amp;#44397; &amp;#48277;...&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;#46972;&amp;#51060;&amp;#49468;&amp;#49828;&amp;#46108; &amp;#50528;&amp;#54540;&amp;#47532;&amp;#52992;&amp;#51060;&amp;#49496;&amp;#51012; (a)&amp;#48120;&amp;#44397;&amp;#51032; &amp;#49688;&amp;#52636; &amp;#48393;&amp;#49604; &amp;#44397;&amp;#44032;&amp;#47196;...&amp;nbsp;&lt;/div&gt;&lt;div&gt;(b) &amp;#48120;&amp;#44397; &amp;#51116;&amp;#47924;&amp;#49457;&amp;#51032;...&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;#46608;&amp;#45716; &amp;#48120;&amp;#44397; &amp;#49345;&amp;#47924;&amp;#49457; &amp;#44144;&amp;#48512; &amp;#51064;&amp;#47932; &amp;#47785;&amp;#47197;....&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;#48120;&amp;#44397;&amp;#48277;&amp;#50640;&amp;#49436; &amp;#44552;&amp;#51648;&amp;#54616;&amp;#45716; &amp;#47785;&amp;#51201;&amp;#51004;&amp;#47196; &amp;#49324;&amp;#50857;&amp;#54616;&amp;#51648; &amp;#50506;&amp;#44592;&amp;#47196; &amp;#46041;&amp;#51032;&amp;#54633;&amp;#45768;&amp;#45796;.&amp;quot;&lt;/div&gt;&lt;div&gt;&amp;#46972;&amp;#45716; &amp;#50557;&amp;#44288;&amp;#51312;&amp;#54637;&amp;#51060; &amp;#48372;&amp;#51064;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#51593; &amp;#48120;&amp;#44397;&amp;#48277;&amp;#51012; &amp;#51456;&amp;#49688;&amp;#54620;&amp;#45796;&amp;#45716; &amp;#46041;&amp;#51032;&amp;#44284;&amp;#51221;&amp;#51060; &amp;#54252;&amp;#54632;&amp;#46108;&amp;#44163;&amp;#51060; &amp;#51060;&amp;#49345;&amp;#54632;.&lt;/div&gt;&lt;div id="fo5s" style="text-align:left"&gt;&lt;img src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_186hbqz7q4c_b" style="height:489.748px;width:648px"&gt;&lt;/div&gt;&lt;br&gt;&lt;h3&gt;3. iTunes Store &amp;#44228;&amp;#51221;(Apple ID) &amp;#47564;&amp;#46308;&amp;#44592;&lt;/h3&gt;&lt;div&gt;&amp;#50976;&amp;#47308;&amp;#50545; &amp;#44396;&amp;#47588;&amp;#47484; &amp;#50948;&amp;#54620; iTunes Store &amp;#44228;&amp;#51221;&amp;#51012; &amp;#47564;&amp;#46300;&amp;#45716; &amp;#54637;&amp;#47785;&amp;#51060;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#50864;&amp;#52769; &amp;#49345;&amp;#45800;&amp;#51032; &amp;quot;&amp;#48372;&amp;#50504; &amp;#50672;&amp;#44208;&amp;quot; &amp;#51060;&amp;#46972;&amp;#45716; &amp;#47700;&amp;#49464;&amp;#51648;&amp;#44032; &amp;#45576;&amp;#50640; &amp;#46308;&amp;#50612;&amp;#50728;&amp;#45796;.&lt;/div&gt;&lt;div id="sg60" style="text-align:left"&gt;&lt;img src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_187djt4cqdz_b" style="height:465.488px;width:648px"&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;h3&gt;4. &amp;#51648;&amp;#48520;&amp;#48169;&amp;#48277; &amp;#49440;&amp;#53469;&lt;/h3&gt;&lt;div id="thu." style="text-align:left"&gt;&lt;img src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_188frsx33cc_b" style="height:635.377px;width:648px"&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#50668;&amp;#44592;&amp;#49436;&amp;#48512;&amp;#53552; &amp;#48376;&amp;#44201; &amp;#52852;&amp;#46300;&amp;#44208;&amp;#51228; &amp;#44288;&amp;#47144; &amp;#51221;&amp;#48372;&amp;#47484; &amp;#51077;&amp;#47141;&amp;#54620;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&amp;#52852;&amp;#46300;&amp;#51221;&amp;#48372; &amp;#51077;&amp;#47141;&amp;#54868;&amp;#47732;&amp;#51012; &amp;#44397;&amp;#45236; &amp;#48277;&amp;#44508;&amp;#51221;&amp;#50640; &amp;#45824;&amp;#48708;&amp;#54616;&amp;#50668; &amp;#48708;&amp;#44368;&amp;#54644;&amp;#48372;&amp;#47732; &amp;#50500;&amp;#47000;&amp;#50752; &amp;#44057;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;h4&gt;4.1 &amp;#48376;&amp;#51064;&amp;#54869;&amp;#51064;&amp;#51012; &amp;#50948;&amp;#54620; &amp;#51204;&amp;#51088;&amp;#51064;&amp;#51613; (&amp;#50668;&amp;#49888;&amp;#51204;&amp;#47928;&amp;#44552;&amp;#50997;&amp;#50629; &amp;#44048;&amp;#46021;&amp;#44508;&amp;#51221; &amp;#51228;24&amp;#51312;&amp;#51032; 6)&lt;/h4&gt;&lt;div&gt;&amp;#44288;&amp;#47144;&amp;#44508;&amp;#51221;&amp;#50640;&amp;#49436;&amp;#45716; &amp;#49888;&amp;#50857;&amp;#52852;&amp;#46300;&amp;#49324;&amp;#44032; &amp;#51204;&amp;#51088;&amp;#51064;&amp;#51613;&amp;#51012; &amp;#51228;&amp;#44277;&amp;#54644;&amp;#50556;&amp;#54620;&amp;#45796;&amp;#44256; &amp;#46104;&amp;#50612; &amp;#51080;&amp;#45716;&amp;#45936;&lt;/div&gt;&lt;div&gt;&amp;#49892;&amp;#51228; &amp;#44397;&amp;#45236; &amp;#52852;&amp;#46300;&amp;#49324;&amp;#44032; &amp;#48376;&amp;#51064;&amp;#54869;&amp;#51064;&amp;#51012; &amp;#50948;&amp;#54620; &amp;#51204;&amp;#51088;&amp;#51064;&amp;#51613;&amp;#51012; &amp;#51228;&amp;#44277;&amp;#54616;&amp;#44256; &amp;#51080;&amp;#45716;&amp;#44163; &amp;#44057;&amp;#51648;&amp;#45716; &amp;#50506;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;quot;&amp;#48372;&amp;#50504; &amp;#53076;&amp;#46300;&amp;quot;&amp;#46972;&amp;#45716; &amp;#44163;&amp;#51012; &amp;#53685;&amp;#54644;&amp;#49436; &amp;#52852;&amp;#46300;&amp;#47484; &amp;#49892;&amp;#51228;&amp;#47196; &amp;#49548;&amp;#51648;&amp;#54616;&amp;#44256; &amp;#51080;&amp;#45716;&amp;#51648; &amp;#50668;&amp;#48512;&amp;#47564;&amp;#51012; &amp;#54869;&amp;#51064;&amp;#54620;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#49892;&amp;#51228; &amp;#52852;&amp;#46300;&amp;#51221;&amp;#48372;&amp;#47484; &amp;#51077;&amp;#47141;&amp;#54616;&amp;#47732; &amp;#45796;&amp;#51020;&amp;#45800;&amp;#44228;&amp;#50640;&amp;#49436; &amp;#48376;&amp;#51064;&amp;#54869;&amp;#51064; &amp;#51208;&amp;#52264;&amp;#44032; &amp;#51080;&amp;#51012; &amp;#49688; &amp;#51080;&amp;#51004;&amp;#45768;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;#51060; &amp;#45800;&amp;#44228;&amp;#50640;&amp;#49436; &amp;#50696;&amp;#45800;&amp;#54616;&amp;#44592;&amp;#45716; &amp;#49884;&amp;#44592;&amp;#49345;&amp;#51312;.&lt;/div&gt;&lt;br&gt;&lt;h4&gt;4.2 30&amp;#47564;&amp;#50896;&amp;#51060;&amp;#49345; &amp;#44208;&amp;#51228;&amp;#49884; &amp;#44277;&amp;#51064;&amp;#51064;&amp;#51613;&amp;#49436; &amp;#51201;&amp;#50857; (&amp;#51204;&amp;#51088;&amp;#44552;&amp;#50997;&amp;#44144;&amp;#47000;&amp;#48277; &amp;#49884;&amp;#54665;&amp;#49464;&amp;#52825; 31&amp;#51312;)&lt;/h4&gt;&lt;div&gt;iTunes Store&amp;#47484; &amp;#53685;&amp;#54644; &amp;#44396;&amp;#47588;&amp;#44032;&amp;#45733;&amp;#54620; &amp;#50976;&amp;#47308;&amp;#50545;&amp;#51473;&amp;#50640;&amp;#49436; 30&amp;#47564;&amp;#50896;&amp;#51060; &amp;#45336;&amp;#45716; &amp;#44163;&amp;#46308;&amp;#46020; &amp;#49345;&amp;#45817;&amp;#49688; &amp;#51316;&amp;#51116;&amp;#54620;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#44536;&amp;#47084;&amp;#45208; &amp;#51060; &amp;#44208;&amp;#51228;&amp;#54868;&amp;#47732;&amp;#50640;&amp;#49436; &amp;#44277;&amp;#51064;&amp;#51064;&amp;#51613;&amp;#49436; &amp;#44288;&amp;#47144; &amp;#51068;&amp;#52404;&amp;#51032; &amp;#50836;&amp;#44396;&amp;#49324;&amp;#54637;&amp;#51012; &amp;#48380; &amp;#49688; &amp;#50630;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;h4&gt;4.3 &amp;#44552;&amp;#50997;&amp;#44144;&amp;#47000;&amp;#51221;&amp;#48372;&amp;#51032; &amp;#51333;&amp;#45800;&amp;#44036;(End to End) &amp;#50516;&amp;#54840;&amp;#54868; (&amp;#51204;&amp;#51088;&amp;#44552;&amp;#50997;&amp;#44144;&amp;#47000;&amp;#48277; &amp;#49884;&amp;#54665;&amp;#49464;&amp;#52825; 29&amp;#51312;)&lt;/h4&gt;&lt;div&gt;SSL&amp;#51012; &amp;#51201;&amp;#50857;&amp;#54616;&amp;#44256; &amp;#51080;&amp;#45716;&amp;#44163;&amp;#51004;&amp;#47196; &amp;#51664;&amp;#51089;&amp;#46120;&lt;/div&gt;&lt;div&gt;&amp;#54868;&amp;#47732; &amp;#54616;&amp;#45800;&amp;#50640;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;quot;Apple uses industry-standard encryption to protect the confidentiality of user personal information&amp;quot;&amp;#51060;&amp;#46972;&amp;#45716; &amp;#47928;&amp;#44396;&amp;#47196; &amp;#51664;&amp;#51089;&lt;/div&gt;&lt;br&gt;&lt;h4&gt;4.4 &amp;#51077;&amp;#47141;&amp;#51221;&amp;#48372; &amp;#48372;&amp;#54840;&amp;#45824;&amp;#52293; (&amp;#51204;&amp;#51088;&amp;#44552;&amp;#50997;&amp;#44144;&amp;#47000;&amp;#48277; &amp;#49884;&amp;#54665;&amp;#49464;&amp;#52825; 29&amp;#51312;)&lt;/h4&gt;&lt;div&gt;&amp;#50976;&amp;#51200;&amp;#44032; &amp;#51077;&amp;#47141;&amp;#54616;&amp;#45716; &amp;#52852;&amp;#46300;&amp;#51221;&amp;#48372; &amp;#51077;&amp;#47141;&amp;#51012; &amp;#48372;&amp;#54840;&amp;#54616;&amp;#45716; &amp;#53412;&amp;#48372;&amp;#46300; &amp;#48372;&amp;#50504; &amp;#54532;&amp;#47196;&amp;#44536;&amp;#47016;&amp;#51060;&amp;#45208;&lt;/div&gt;&lt;div&gt;&amp;#54616;&amp;#45796;&amp;#47803;&amp;#54644; &amp;#49828;&amp;#53356;&amp;#47536;&amp;#53412;&amp;#48372;&amp;#46300;&amp;#46020; &amp;#48372;&amp;#51060;&amp;#51648; &amp;#50506;&amp;#45716;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;h4&gt;4.5 &amp;#50501;&amp;#49457;&amp;#53076;&amp;#46300; &amp;#50696;&amp;#48169;&amp;#45824;&amp;#52293; (&amp;#51204;&amp;#51088;&amp;#44552;&amp;#50997;&amp;#44144;&amp;#47000;&amp;#48277; &amp;#49884;&amp;#54665;&amp;#49464;&amp;#52825; 29&amp;#51312;)&lt;/h4&gt;&amp;#50504;&amp;#54000;&amp;#48148;&amp;#51060;&amp;#47084;&amp;#49828;&amp;#45208; &amp;#48169;&amp;#54868;&amp;#48317;&amp;#46321;&amp;#50640; &amp;#45824;&amp;#54620; &amp;#54637;&amp;#47785;&amp;#51008; &amp;#52286;&amp;#50500;&amp;#48380; &amp;#49688;&amp;#44032; &amp;#50630;&amp;#45796;.&lt;div&gt;&amp;#50937;&amp;#50612;&amp;#54540;&amp;#47532;&amp;#52992;&amp;#51060;&amp;#49496; &amp;#48372;&amp;#50504; &amp;#44288;&amp;#47144;&amp;#54644;&amp;#49436;&amp;#45716; &amp;#45800;&amp;#45800;&amp;#54620; &amp;#48372;&amp;#54840;&amp;#47484; &amp;#54616;&amp;#50688;&amp;#51012;&amp;#44152;&amp;#47196; &amp;#51664;&amp;#51089;&amp;#54644;&amp;#48380;&amp;#49688;&amp;#45716; &amp;#51080;&amp;#51020;.&lt;/div&gt;&lt;br&gt;&lt;h3&gt;5. &amp;#44228;&amp;#51221;&amp;#49373;&amp;#49457;&amp;#46120;&lt;/h3&gt;&lt;div&gt;&lt;div id="ovm4" style="text-align:left"&gt;&lt;img src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_189c6jwk7fp_b" style="height:328.472px;width:648px"&gt;&lt;/div&gt;&lt;br&gt;&amp;#45149;&amp;#45228;&amp;#45796;. &amp;#54728;&amp;#47924;&amp;#54616;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#48376;&amp;#51064;&amp;#54869;&amp;#51064;&amp;#51012; &amp;#50948;&amp;#54620; &amp;#51204;&amp;#51088;&amp;#51064;&amp;#51613;&amp;#51060;&amp;#45208; &amp;#51060;&amp;#47088;&amp;#44163; &amp;#50630;&amp;#51060; &amp;#44536;&amp;#45285; &amp;#45149;&amp;#45228;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&amp;#51060;&amp;#47111;&amp;#44172; &amp;#46321;&amp;#47197;&amp;#54620; &amp;#52852;&amp;#46300;&amp;#51221;&amp;#48372;&amp;#47196; &amp;#51060;&amp;#51228; &amp;#51088;&amp;#50976;&amp;#47213;&amp;#44172; iTunes Store&amp;#51032; &amp;#49345;&amp;#54408;&amp;#51012; &amp;#47560;&amp;#51020;&amp;#44751; &amp;#44396;&amp;#47588;&amp;#54624; &amp;#49688; &amp;#51080;&amp;#45796;.&lt;div&gt;&amp;#50500;&amp;#51060;&amp;#54047;&amp;#51060;&amp;#45208; &amp;#50500;&amp;#51060;&amp;#54256;&amp;#46321;&amp;#50640;&amp;#49436; &amp;#51088;&amp;#50976;&amp;#47213;&amp;#44172; &amp;#44396;&amp;#47588;&amp;#54624; &amp;#49688; &amp;#51080;&amp;#45716;&amp;#44163;&amp;#51008; &amp;#47568;&amp;#54624;&amp;#54596;&amp;#50836;&amp;#46020; &amp;#50630;&amp;#44256;&lt;/div&gt;&lt;div&gt;&amp;#50500;&amp;#51060;&amp;#54056;&amp;#46300;&amp;#45208; &amp;#50952;&amp;#46020;&amp;#50864;&amp;#51592;, Mac OS&amp;#46321;&amp;#50640;&amp;#49436; &amp;#51228;&amp;#54620;&amp;#50630;&amp;#51060; &amp;#44396;&amp;#47588;&amp;#44032;&amp;#45733;&amp;#54616;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div id="tjux" style="text-align:left"&gt;&lt;img src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_190h356pqgs_b" style="height:232px;width:485px"&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#44397;&amp;#45236; &amp;#50976;&amp;#51200;&amp;#44032; &amp;#44397;&amp;#45236; &amp;#52852;&amp;#46300;&amp;#47196; &amp;#54620;&amp;#44397; iTunes Store&amp;#50640;&amp;#49436; &amp;#44396;&amp;#47588;&amp;#44032;&amp;#45733;&amp;#54620; &amp;#50976;&amp;#47308;&amp;#50545;&amp;#51060;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#44277;&amp;#51064;&amp;#51064;&amp;#51613;&amp;#49436; &amp;#49324;&amp;#50857;&amp;#50504;&amp;#54616;&amp;#44256; &amp;#44208;&amp;#51228; &amp;#51096;&amp;#46108;&amp;#45796;.(&amp;#45817;&amp;#50672;&amp;#55176;)&lt;/div&gt;&lt;br&gt;&lt;h2&gt;&amp;quot;&amp;#44397;&amp;#45236;&amp;#50752; &amp;#44397;&amp;#50808;&amp;#50640; &amp;#45796;&amp;#47480; &amp;#44508;&amp;#51228;&amp;quot;&lt;/h2&gt;&lt;br&gt;&lt;div&gt;&amp;#54620;&amp;#44397; &amp;#49660;&amp;#54609;&amp;#47792;&amp;#50640; &amp;#50528;&amp;#54540;&amp;#52376;&amp;#47100; &amp;#49660;&amp;#54609;&amp;#47792;&amp;#51012; &amp;#44396;&amp;#49457;&amp;#54616;&amp;#45716;&amp;#44163;&amp;#51008; &amp;#44508;&amp;#51228;&amp;#46412;&amp;#47928;&amp;#50640; &amp;#45000;&amp;#46020; &amp;#44984;&amp;#51648; &amp;#47803;&amp;#54620;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#44536;&amp;#47088;&amp;#45936; &amp;#50528;&amp;#54540;&amp;#51008; &amp;#44397;&amp;#45236;&amp;#50640;&amp;#49436; &amp;#51204;&amp;#51088;&amp;#44552;&amp;#50997;&amp;#44144;&amp;#47000;&amp;#48277;&amp;#51060;&amp;#45208; &amp;#44592;&amp;#53440; &amp;#45796;&amp;#47480; &amp;#51228;&amp;#46020;&amp;#51201; &amp;#51228;&amp;#50557;&amp;#50630;&amp;#51060; &amp;#51088;&amp;#50976;&amp;#47213;&amp;#44172; &amp;#49345;&amp;#54408;&amp;#51012; &amp;#54032;&amp;#47588;&amp;#54616;&amp;#44256; &amp;#51080;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div&gt;SK T Store&amp;#45208; &amp;#49340;&amp;#49457; &amp;#50545;&amp;#49828;&amp;#53664;&amp;#50612;&amp;#50640;&amp;#49436; &amp;#51060;&amp;#47088;&amp;#49885;&amp;#51004;&amp;#47196; AppStore&amp;#47484; &amp;#44984;&amp;#48120;&amp;#47732; &amp;#44221;&amp;#51137;&amp;#47141; &amp;#51080;&amp;#51012;&amp;#44163;&amp;#51064;&amp;#45936;&lt;/div&gt;&lt;div&gt;&amp;#44208;&amp;#51228;&amp;#48169;&amp;#49885;&amp;#50640;&amp;#49436;&amp;#48512;&amp;#53552; &amp;#44540;&amp;#48376;&amp;#51201;&amp;#51004;&amp;#47196; &amp;#44397;&amp;#45236; AppStore&amp;#50752; &amp;#50528;&amp;#54540; AppStore&amp;#44032; &amp;#44221;&amp;#51137;&amp;#51060; &amp;#50504;&amp;#46108;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#48376;&amp;#51064;&amp;#54869;&amp;#51064;&amp;#51012; &amp;#50504;&amp;#54644;&amp;#46020; &amp;#46104;&amp;#45716; &amp;#50976;&amp;#53916;&amp;#48652;&amp;#44032; &amp;#44397;&amp;#45236; 1&amp;#50948; &amp;#46041;&amp;#50689;&amp;#49345; &amp;#49324;&amp;#51060;&amp;#53944;&amp;#44032; &amp;#46104;&amp;#50632;&amp;#51648;&amp;#47564;&lt;/div&gt;&lt;div&gt;&amp;#44397;&amp;#45236; &amp;#50629;&amp;#52404;&amp;#46308;&amp;#51008; &amp;#50668;&amp;#51204;&amp;#55176; &amp;#51228;&amp;#46020;&amp;#51201; &amp;#44508;&amp;#51228;&amp;#46412;&amp;#47928;&amp;#50640; &amp;#49892;&amp;#47749;&amp;#51228;&amp;#47484; &amp;#51456;&amp;#49688;&amp;#54616;&amp;#44256; &amp;#51080;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#51204;&amp;#51088;&amp;#49345;&amp;#44144;&amp;#47000;&amp;#50640;&amp;#49436;&amp;#46020; &amp;#44033; &amp;#49660;&amp;#54609;&amp;#47792; &amp;#50629;&amp;#52404;&amp;#48324;&amp;#47196; &amp;#45208;&amp;#47492; &amp;#50504;&amp;#51204;&amp;#54616;&amp;#44256; &amp;#44036;&amp;#54200;&amp;#54620; &amp;#48169;&amp;#49885;&amp;#51012; &amp;#49440;&amp;#53469;&amp;#54616;&amp;#50668; &amp;#50689;&amp;#50629;&amp;#54616;&amp;#47140;&amp;#44256; &amp;#54644;&amp;#46020;&amp;nbsp;&lt;/div&gt;&amp;#47564;&amp;#47564;&amp;#54620; &amp;#44397;&amp;#45236;&amp;#50629;&amp;#52404;&amp;#45716; &amp;#44144;&amp;#47000;&amp;#47484; &amp;#51473;&amp;#45800;&amp;#49884;&amp;#53412;&amp;#47732;&amp;#49436;&amp;#44620;&amp;#51648; &amp;#51228;&amp;#51228;&amp;#47484; &amp;#44032;&amp;#54616;&amp;#51648;&amp;#47564;&lt;div&gt;&amp;#54644;&amp;#50808;&amp;#50629;&amp;#52404;&amp;#45716; &amp;#50696;&amp;#50808;(?)&amp;#44032; &amp;#51201;&amp;#50857;&amp;#46104;&amp;#45716; &amp;#54788;&amp;#49892;&amp;#51060; &amp;#50504;&amp;#53440;&amp;#44637;&amp;#45796;.&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;#51060;&amp;#48120; &amp;#50528;&amp;#54540; iTunes Store&amp;#47484; &amp;#48372;&amp;#47732; &amp;#50508;&amp;#46319;&amp;#51060; &amp;#51204;&amp;#51088;&amp;#49345;&amp;#44144;&amp;#47000;&amp;#50640;&amp;#45716; &amp;#44397;&amp;#44221;&amp;#51032; &amp;#51228;&amp;#50557;&amp;#51060; &amp;#50630;&amp;#45796;.&lt;/div&gt;&lt;div&gt;&amp;#44397;&amp;#45236; &amp;#44508;&amp;#51228;&amp;#47196; &amp;#51064;&amp;#54644; &amp;#51204;&amp;#51088;&amp;#49345;&amp;#44144;&amp;#47000;&amp;#47484; &amp;#50948;&amp;#52629;&amp;#49884;&amp;#53412;&amp;#51648; &amp;#50506;&amp;#50520;&amp;#51004;&amp;#47732; &amp;#54616;&amp;#45716; &amp;#48148;&amp;#47016;&amp;#51060;&amp;#45796;.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-1789521181172782879?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/1789521181172782879/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=1789521181172782879' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/1789521181172782879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/1789521181172782879'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2010/03/blog-post.html' title='애플 유료앱 결제와 규제'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-7200815242861178029</id><published>2010-03-04T05:33:00.001-08:00</published><updated>2010-03-19T23:58:01.151-07:00</updated><title type='text'>한국에서 ActiveX가 광범위하게 사용되는 이유</title><content type='html'>&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;한국에서 ActiveX가 광범위하게 사용되는 이유&lt;/span&gt;&lt;/h1&gt;&lt;h4&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;국내에서 ActiveX가 광범위하게 사용되는 원인에 대해서 제가 알고 있는 몇가지 요소들을 기술해봅니다.&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1. 공인인증서&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;공인인증기관이 MSIE ActiveX기반으로만 서비스를 제공합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2. 신용카드 전자상거래 ISP결제&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;BC, 국민에서 설립한 자회사 K모사에서 개발하였고 ActiveX형태로만 동작합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;국민, BC카드의 전자상거래 결제는 모두 ActiveX로만 가능한 이유입니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3. 전자금융거래법 시행세칙 29조&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;안티바이러스 ActiveX, 키보드보안 ActiveX, 개인방화벽 ActiveX가 모두 이 규정에서부터 파생되었습니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4. 금융거래시 전자서명&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;금감원에서 금융거래시 전자서명을 요구하며&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;공인인증 전자서명은 현재 ActiveX로만 가능합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5. 보안서버 구축&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;&lt;a href="http://secsv.kisa.or.kr/secsv/jsp/secsv.jsp" rel="nofollow" style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; color: black; margin-left: 0px; margin-right: 0px; text-decoration: none; vertical-align: baseline;"&gt;http://secsv.kisa.or.kr/secsv/jsp/secsv.jsp&lt;/a&gt;&amp;nbsp;참조&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;정보통신망 이용촉진 및 정보보호등에 관한 법률하위 시행령 하위 개인정보의 기술적 관리적 보호조치 기준 제5조에서&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;SSL방식과 응용프로그램방식을 모두 인정하고 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;응용 프로그램 방식은&amp;nbsp;공인인증서 사용모듈과 유기적으로 결합되어 하나의 ActiveX로 전자서명이나 End-to-End 암호화가 가능한점을 개발업체에서 장점으로 홍보하고 있어서 일반 업체에까지 광범위하게 ActiveX가 확산되게한 원인입니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;전자상거래 안심클릭 결제에 ActiveX가 사용되는 주요 이유중 하나입니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;6. MSIE Auto Popup 차단&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;MS에서 특허나 보안등 여러가지 이유로 Auto Popup을 차단하고 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;단 해당 서버 도메인이 Trusted Zone에 속하는 경우 Auto Popup이 가능합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;신용카드 안심클릭 결제등은 팝업구조로 결제가 진행됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;많은 PG업체들이 결제팝업이 차단되는것을 방지하기 위해서 해당 업체 도메인을 MSIE Trusted Zone에 자동 추가하는 기능이 포함된 ActiveX를 결제시작하기전에 설치요구하고 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;7. iframe에 대한 오용&lt;/span&gt;&lt;/h2&gt;&lt;div style="background-color: transparent; background-image: initial; background-repeat: initial; border-color: initial; border-style: initial; margin-left: 15px; margin-right: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;- ActiveX를 사용하더라도 이것이 꼭 필요한 단계에서만 사용하면 되는데 국내 현실은 일단 접속하는 모든 유저에게 ActiveX를 깔도록 요구합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;- 단순히 웹사이트를 둘러보기만 할 대다수 유저들에게 ActiveX를 깔도록 요구하는것은 불필요한 보안위험을 증대시킵니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;- 실제로는 Javascript DOM 제어등을 통해 ActiveX를 꼭 사용해야한다면 그때 잠깐 활성화하여 사용할 수 있지만&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: sans-serif, sans-serif;"&gt;&lt;span style="color: #2c2c29;"&gt;- 상당수 업체들이 R&amp;amp;D가 부족하여 iframe등을 통해 무조건 ActiveX를 깔도록 요구합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-7200815242861178029?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/7200815242861178029/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=7200815242861178029' title='2개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7200815242861178029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7200815242861178029'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2010/03/activex.html' title='한국에서 ActiveX가 광범위하게 사용되는 이유'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-7014493924766811031</id><published>2010-02-01T05:50:00.001-08:00</published><updated>2010-03-20T00:00:03.313-07:00</updated><title type='text'>윈도우모바일6.1 해킹관련 PureWeb기반 보안대책</title><content type='html'>&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;윈도우모바일6.1 해킹관련 PureWeb기반 보안대책&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;http://news.donga.com/It/New/3/08/20100201/25872427/1&amp;amp;top=1&lt;/div&gt;&lt;div&gt;기사를 보면 윈도우모바일 6.1 해킹관련 기사가 크게 났다.&lt;/div&gt;&lt;div&gt;퓨어웹환경에서의 보안대책을 고민해보았다.&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1. 해킹절차&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;1) 유저는 해커가 준비한 웹사이트 방문&lt;/div&gt;&lt;div&gt;2) 유저는 해커가 유도한 프로그램 다운로드하여 자신의 기기에 설치&lt;/div&gt;&lt;div&gt;3) 유저가 웹사이트 방문하여 입력하는 정보를 Key-Logging&lt;/div&gt;&lt;div&gt;4) Logging한 정보를 해커가 설치한 프로그램을 통해 해커서버로 전송&lt;/div&gt;&lt;div&gt;5) 해커가 유저를 대신하여 쇼핑몰에서 상품 구매&lt;/div&gt;&lt;div&gt;6) Key-Logger로 빼낸 정보를 이용자를 가장하여 입력&lt;/div&gt;&lt;div&gt;7) 이통사에서 SMS문자인증 메세지 발송&lt;/div&gt;&lt;div&gt;8) 원 유저의 폰에서 문자 수신&lt;/div&gt;&lt;div&gt;9) 원 유저 폰에 설치된 프로그램이 문자내용을 해커에게 전송&lt;/div&gt;&lt;div&gt;10) 해커는 쇼핑몰에서 SMS 인증번호 입력하여 상품정상결제&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2. PureWeb기반 보안대책&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2.1 입력정보 보호대책&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;2.1.1 &amp;nbsp;Javascript Screen Keyboard이용하여 keylogging 방지&lt;/h4&gt;&lt;div&gt;- Javascript입력정보는 Javascript sandbox내에서만 존재함&lt;/div&gt;&lt;div&gt;- screen keyboard 배열을 세션 연계하여 random하게 변경&lt;/div&gt;&lt;h4&gt;2.1.2 Javascript 보안&lt;/h4&gt;&lt;div&gt;- Javascript 무결성 검증&lt;/div&gt;&lt;div&gt;- Javascript 동적 로딩 및 난독화&lt;/div&gt;&lt;div&gt;- Caja를 이용하여 보호&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2.2 악성코드 예방대책&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;2.2.1 취약점이 존재하는 OS및 브라우저를 이용한 결제접근 차단&lt;/h4&gt;&lt;div&gt;- Server에서 Browser UA정보 확인하여 취약점이 존재하고 벤더제공 패치가 나오지 않은 경우 결제접근 차단&lt;/div&gt;&lt;h4&gt;2.2.2 이용자에게 보안권고 및 인지동의과정 추가&lt;/h4&gt;&lt;div&gt;- 프로그램을 함부로 설치하지 않도록 보안권고&lt;/div&gt;&lt;div&gt;- OS 보안 업데이트 권고&lt;/div&gt;&lt;div&gt;- 본격 안티바이러스 설치 권고(가능하다면)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2.3 카드정보등 주요정보 Client 저장금지&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;- screen keyboard로 입력된 카드번호등은 서버전송후 browser memory에서 제거&lt;/div&gt;&lt;div&gt;- 주요정보는 browser sandbox내에서만 잠간 존재했다가 사라짐&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-7014493924766811031?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/7014493924766811031/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=7014493924766811031' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7014493924766811031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7014493924766811031'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2010/02/61-pureweb.html' title='윈도우모바일6.1 해킹관련 PureWeb기반 보안대책'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-7910339093860312893</id><published>2009-12-23T20:00:00.001-08:00</published><updated>2010-03-20T00:00:49.790-07:00</updated><title type='text'>순수웹환경에서의 전자금융 서비스 보안방안</title><content type='html'>순수웹환경에서의 전자금융 서비스 보안방안&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ActiveX등의 Binary Plugin없이 순수웹(Pure Web)으로 전자금융서비스를 제공할 경우 어떤 보안대책이 필요할까&lt;/div&gt;&lt;div&gt;고민해보고 PCIDSS나 전자금융거래법 시행세칙등을 참조하여&lt;/div&gt;&lt;div&gt;최소한 아래와 같은 요구사항은 충족해줘야겠다는 생각이다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이미 많은 기관들이 아래 보안요구사항들을 충족하고 있겠지만 확인하는 차원에서 한번더 정리해본다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;[순수웹환경에서의 전자금융서비스 보안]&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1. 안전한 네트웍을 구축하고 유지&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;1.1 방화벽을 설치하고 유지&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.1.1 방화벽 구성 기준 수립&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 변화관리 시스템 유지 (모든 설정변경사항을 승인하고 테스트하는 공식 절차가 존재해야함.)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 최신의 네트워크 구성도 유지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 인터넷과 내부 네트워크 사이에 DMZ Network 운용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 네트웍 구성요소에 대한 조직, 역할 및 책임을 정의&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 서비스, 프로토콜, 포트 사용에 대한 문서화 및 사용근거 명시&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 안전하지 않은 프로토콜 사용시 이에 대한 보안대책 수립하고 문서화해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 최소 6개월마다 룰셋 검토해야함.&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.1.2 방화벽 및 라우터 구성&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- Inbound / Outbound 트래픽 제어&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- default deny rule&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 라우터 설정파일의 보호 및 동기화&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 무선네트워크와 내부시스템사이에 방화벽 설치&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.1.3 내부 시스템에 대한 외부자의 직접접근 제한&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 외부자의 이용가능한 프로토콜 제한&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- DMZ Network을 거치도록 네트웍 구성&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 외부에서 Inbound traffic은 DMZ 내의 IP로 제한&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 내부 시스템에서의 outbound traffic도 DMZ내의 IP로 제한&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 필요시 forward / reverse Proxy 구성 운영&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* reverse proxy는 웹방화벽으로 대체가능&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 방화벽에서는 Stateful Inspection을 적용 (이미 체결된 접속만을 네트워크로 허용)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- Database는 DMZ으로부터 분리된 구간에 위치시킴&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- NAT나 PAT처럼 내부주소가 그대로 공개되지 않도록 주소변환 기술 이용&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.1.4 개인방화벽 소프트웨어 설치 또는 활성화&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;1.1.4.1 내부 사용자 시스템&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 방화벽 설정은 회사에서 정한 표준규칙을 따라야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 개인이 임의로 방화벽 설정을 해제할 수 없도록 해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;1.1.4.2 외부 사용자 시스템&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 서버에서 사용자 개인 PC 환경을 직접 제어할 수 없다는 기본적인 사실 인지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 다양한 운영체제에 맞는 개인 방화벽 프로그램이나 활성화하는 방법을 자세하게 안내&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;1.2 안전한 시스템 구성&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.2.1 벤더제공 디폴트값 변경&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- SNMP Community String이나 기본 패스워드 등 변경&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 무선환경에 대해서도 디폴트값 변경&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.2.2 시스템 설정 기준 수립&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 시스템 설정 기준은 알려진 모든 보안취약점에 대응하도록 수립되어야함.(SANS, NIST, CIS등 업계가 인정하는 보안강화 기준을 참조)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 서버당 하나의 주요 기능만을 구현&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 불필요한 서비스나 프로토콜은 비활성화&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 오용방지를 위한 시스템 보안 파라미터 설정&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 스크립트, 드라이버, 기능, 하위시스템, 파일시스템, 불필요한 웹서버등 모든 불필요 기능 삭제&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1.2.3 모든 전송데이터에 대한 암호화&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 콘솔 접근을 제회&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- SSH, VPN또는 SSL/TLS등의 기술을 이용&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2. 고객정보 보호&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2.1 저장된 고객정보 보호&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.1 고객 개인정보는 최소범위에서 저장&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 법적, 제도적 요구사항을 감안하여 데이터 보유 및 폐기정책 수립&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 데이터 보유 및 폐기정책에 따른 자동삭제 소프트웨어 구성&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.2 중요한 개인인증 데이터를 저장하지 않음.&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 중요 개인인증 데이터는 암호화 여부와 관계없이 저장하지 않음.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 중요 개인인증 데이터를 수신이후 삭제하는 경우 복구 불가능하게 데이터를 삭제해야함.&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.3 중요 개인정보 출력시 마스킹 처리&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 전체의 일부만 표시&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.4 고객정보는 암호화하여 저장&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 로그파일에 개인정보가 존재하지 않아야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 백업매체 저장되는 경우도 암호화하여 저장해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 운용자 PC에 개인정보가 존재하지 않아야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 로그파일이나 개인PC에 개인정보가 존재하지 않음을 자동화된 프로그램으로 검증해야함.&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.1.5 암호화에 사용된 암호화키는 안전하게 보호되어야함.&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키에 대한 접근을 최소한의 관리자로 제한&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키를 최소한의 장소와 형태로 안전하게 저장&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 키관리 프로세스를 문서화하고 정해진 절차를 따라야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키는 강력한 보안비도로 생성&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키는 안전한 과정을 거쳐 배포&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키는 안전하게 저장되어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 정기적으로 암호화키를 보호해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키는 2인 이상에 의해 이중통제되어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키는 승인받지 않고 교체될 수 없어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 암호화키 관리자의 이해와 책임을 수용하는 동의서를 작성하고 비치해야함.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2.2 공중망을 통한 고객정보 데이터 전송 암호화&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.2.1 공중망의 범위&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 인터넷&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 무선기술을 이용한 네트웍 (GSM, CDMA, GPRS, WIFI, 기타)&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.2.2 SSL/TLS, IPSEC등과 같은 보안 프로토콜을 사용해야함.&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 강력한 보안비도의 Symmetric Algorithm이 사용되어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 신뢰할 수 있는 CA인증서여야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- SSLv3/TLSv1등 안전한 SSL Protocol을 사용해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자가 SSL 서버인증서와 도메인 및 사이트운영 기관을 명확히 확인할 수 있도록 EV(Extended Validation) SSL 서버 인증서를 이용&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.2.3 안전한 무선네트워크 암호화 적용&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- WEP 사용 금지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- IEEE 802.11i등 강력한 암호화 적용&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.2.4 일반 사용자 메시징 기술을 통해 주요 고객정보 전송금지&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- E-Mail, Messenger, Chat등을 통해 고객정보 전송금지&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3. 보안취약점 관리&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.1 안티바이러스&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.1.1 내부사용자&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 운영자 PC에는 안티바이러스 소프트웨어를 적용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 바이러스 감염가능한 서버시스템에도 안티바이러스 소프트웨어 적용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 시스템의 안티바이러스 적용여부를 확인할 수 있어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 안티바이러스 감사 로그를 생성할 수 있어야한다.&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.1.2 외부사용자&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 서버에서 사용자 개인 PC환경을 직접 제어할 수 없다는 기본적인 사실에 인지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 다양한 운영체제에 맞는 안티바이러스 프로그램이나 활성화하는 방법을 자세하게 안내해야함.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.2 안전한 시스템과 어플리케이션을 개발하고 유지&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.2.1 내부시스템&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 시스템과 소프트웨어에는 벤더제공 최신 보안 패치를 설치해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 새로운 보안취약점을 식별하는 프로세스를 수립해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 확인된 새로운 보안취약점에 대한 대응방안을 "시스템 설정기준" 문서에 반영해야함.&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.2.2 외부 사용자 시스템&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 서버에서 사용자 개인 PC환경을 직접 제어할 수 없다는 기본적인 사실 인지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자 이용환경에 대한 보안패치 안내&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자에게 보안업데이트이 중요성과 설치방법을 각 운영체제별로 충분히 안내&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 윈도우 운영체제일 경우 OS Update나 KISA에서 제공하는 PC자동보안 업데이트 프로그램을 설치안내&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.3 소프트웨어 개발 라이프사이클 전반에 걸쳐 정보보호 관련 사항을 통합해야함.&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.1 반드시 운영시스템 적용전 테스트를 수행&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 입력값 검증테스트 수행&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 적절한 에러처리 검증 테스트 수행&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 안전한 암호화 저장 검증 테스트 수행&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 안전한 커뮤니케이션 검증 테스트 수행&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 적절한 역할기반 접근제어(RBAC) 검증 테스트 수행&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.2 개발, 테스트 및 운영환경을 분리해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.3 개발, 테스트 및 운영환경에 대한 직무를 분리해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.4 운영데이터를 테스트나 개발을 위해 사용하지 않아야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.5 운영시스템 가동전 테스트트 데이터나 계정을 제거해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.6 어플리케이션 가동전, 고객배포전 개발계정, 사용자ID, 임시 패스워드 제거해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.3.7 제3자에 의한 개발코드 리뷰를 거쳐야함.&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 코드 작성자 외의 제3자에 의한 코드리뷰가 필요&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 코드 리뷰 결과는 경영층에 의해 검토되고 승인되어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 코드 리뷰시 OWASP와 같은 코딩 지침에 따라 개발되었는지 검토해야함.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.4 변경관리절차에 따라 시스템 구성요소 변경&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 변경의 영향에 대한 문서화&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 적합한 관리자의 승인&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 운영기능 테스트&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 복귀(Back-out) 절차&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.5 OWASP 취약점 대응&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 크로스사이트 스크립팅(XSS) 대응&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- SQL Injection등 Injection 오류에 대응&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자가 어플리케이션에 실행가능한 악성파일을 올릴 수 없고 실행되지 않도록 악성파일 실행을 방지해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 시스템 내부 Object를 사용자에게 노출하지 않도록 불안전한 직접 객체 참조 방지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 크로스 사이트 요청변조(CSRF) 방지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 오류 메세지등에서 주요정보가 유출되지 않도록 정보유출과 부적절한 에러처리 방지지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 취약한 인증 및 세션관리 방지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 불안전한 암호화 저장 방지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 인증과 민감한 통신에 적절한 암호화를 적용하여 불안전한 통신을 예방&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- URL접근통제 실패 대응&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 기타 OWASP version별 보안취약점에 대하여 대응해야함.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.6 웹어플리케이션 보호&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 정기적으로 자동화된 웹어플리케이션 취약점 보안측정 도구 혹은 방법으로 취약점 검토&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 웹방화벽 설치&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.7 Anti keylogger&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자 개인 PC가 침해되었더라도 전자금융거래에 필요한 최소한의 보안성을 확보하기 위해 키보드 해킹방지 솔루션 적용할 수 있음.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 자바스크립트 기반의 "Onscreen Keyboard"를 이용하여 사용자가 키 입력을 하지 않도록 유도&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 키 배열은 세션별로 Random하게 배치&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.8 자바스크립트 보안&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 자바스크립트의 무결성(Integrity)를 확인할 수 있는 체계를 수립하여 적용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 자바스크립트 난독기(Obfuscation)을 적용할 수 있음.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 자바스크립트의 일부를 서버에서 필요시 동적으로 로딩하여 사용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 자바스크립트의 주요 소스를 세션정보와 연계하여 Static하게 재사용 불가하도록 구성&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.9 피싱방지를 위한 조치&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자 아이디 입력 페이지와 로그인 페이지를 순차로 배치하고&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 로그인 페이지에서 해당 사용자가 미리 선택한 seal이나 site key아이콘이 뚜력이 드러나도록 설계한다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 서버가 EV SSL 인증서를 채택하는 경우 사용자들이 EV SSL 인증서 채택 서버에 접속해 있음을 확인하고&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 로그인 정보를 입력하도록 해당 정보 입력란 근처에 설명, 안내한다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자의 명시적 요청이 없는한 서버가 사용자에게 명세서, 기타 안내 메일을 보내지 않는다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.10 부인방지&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.10.1 사전 약정에 의한 부인방지 효력 부여&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 부인방지 효력은 오프라인 서명이나 인감날인 및 온라인 공인 전자서명으로 발생됨&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사전 약정과정에서 온라인에서 특정 인증정보 사용시 부인방지효력을 명시하고 동의받음.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 특정 인증정보는 아래와 같은 사항을 고려한다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* OTP 인증코드사용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 이체 비밀번호 사용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 로그인 비밀번호 재입력&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 기타 플랫폼 독립적인 별도 방식 이용&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.10.2 기술적 부인방지&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 계좌이체와 같은 금융거래시 악성 코드의 Form데이터 조작에 의해 사용자의 보안빙자 자체에 위해가 가해질 수 있음.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 공격에 의한 데이터 조작으로 부인방지 효력상실을 방지하기 위한 기술적 절차적 수단을 강구한다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 실시간 수행하지 않고 시차를 두어 Queue에 쌓아둔 후 사용자에 의한 추심 인증이 있을때 거래를 승인한다.&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.10.3 추심인증&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 일정조건의 거래에 대해서 사용자가 접속한것과 다른 채널 (SMS, OTP, 전화 등)을 통해서 2차 인증하는 정책을 유지해야함.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4. 강력한 접근통제&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4.1 업무상 알 필요가 있는지에 따라 개인정보 접근제한&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.1.1 해당 데이터가 필요한 직원에게만 접근 허용&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자 ID는 직무수행에 필요한 최소권한으로 제한&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 권한할당은 직원의 직무분류와 기능을 근거로&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 공식적인 관리자의 승인절차를 거침&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 자동화된 접근통제 시스템의 구현&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.1.2 Default Deny 접근통제 정책 설정&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 시스템 구성요소를 포함&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 직무분류와 기능을 기준으로 개인별 권한 할당&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4.2 사용자별 고유 ID 부여&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.1 시스템에 접근하는 모든 사용자에게는 사용자를 구분할 수 있는 고유 ID를 발급해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.2 고유ID는 패스워드등 추가 인증방식으로 사용자를 인증해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.3 원격 접속시 2-Factors 인증 적용해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.4 모든 패스워드에 대해서 강력한 암호화를 적용해야함.&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.5 공식적인 사용자 인증 및 패스워드 통제절차를 마련해야함.&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자의 추가, 삭제, 수정에 대한 통제절차를 마련해야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 패스워드 재설정전 사용자 신원확인&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 초기설정 패스워드는 즉시 변경 유도&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 퇴사/ 탈퇴시 접근권한 즉시 말소&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 최소 90일마다 미사용 사용자 계정 재거 또는 정지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 원격유지보수를 위한 계정은 일정시간만 사용가능하게 설정&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 모든 사용자에게 패스워드 절차와 정책 배포&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 공용 패스워드사용 금지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 패스워드는 90일마다 변경&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 최소 7자리의 패스워드 자릿수&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 영문과 숫자를 포함한 복잡한 패스워드 사용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 과거 4회까지의 패스워드 재사용금지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 6번이상 접근실패시 사용자 계정 자동잠금&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 계정잠금시 최소 30분간은 유지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 세션이 15분이상 Idle상태인 경우 자동 Timeout&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 데이터베이스에 대한 접근통제 포함&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.2.6 외부 사용자에 대한 두가지 이상 요소로 사용자 인증&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 명확하고 안전하게 사용자 인증을 하기 위ㅐ서 최소한 2가지 이상의 방식을 복합하여 사용자 인증을 수행&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 복합 사용가능한 인증요소로 다음사항을 고려&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 패스워드 (조회 또는 이체에 복수 사용 가능)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 일회용 암호 생성기(OTP) 혹은 모바일 OTP 소프트웨어&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* 모바일 SMS 인증&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* SSL Client Authentification하의 공인인증서 로그인&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 위 인증방식들을 제시하고 이중 사용자가 2개 이상을 복합적으로 선택하여 인증을 수행할 수 있도록 제공&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4.3 물리적 접근통제&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.1 적절한 출입통제 사용&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- DVR등을 통한 감시&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 네트웍 잭에 대한 접근통제&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 무선 AP에 대한 접근통제&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 휴대용 장비에 대한 접근통제&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.2 직원과 방문자 식별절차 마련&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.3 모든 방문자에 대한 적절한 통제&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.4 방문자 활동기록 보관&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.5 안전한 백업매체 보관&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.6 개인정보를 포함한 종이 및 물리적 전자매체에 대한 보호&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 해당 매체가 기밀로 식별되도록 분류&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 이동시 추적가능한 안전한 방법으로 전달&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 이동에 대한 관리자 승인&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.7 개인정보를 담고 있는 저장소나 매체에 대한 엄격한 접근통제&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 매체목록을 유지하고 연 1회 재고조사&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4.3.8 불필요 정보에 대한 적절한 파기&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 복구불가능한 방법으로 파기한다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 종이 분쇄기 이용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 전자매체에 대한 DeGausser이용 파기&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5. 모니터링 및 테스트&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;5.1 모든 접근을 추적하고 감시&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.1.1 모든 접근시도에 대한 개별 사용자 연관 프로세스 수립&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.1.2 자동화된 감사추적기능 구현&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자 식별&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 이벤트 종류&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 날짜와 시간&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 성공 혹은 실패 표시&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 이벤트의 시작지점&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 영향받는 데이터, 시스템 구성요소 또는 자원으 신원 또는 이름&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.1.3 시간동기화 설정&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.1.4 감사기록에 대한 무결정(Integrity) 보호&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.1.5 모든 로그에 대한 일일 점검&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.1.6 로그기록은 최소 1년간 보관&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;5.2 보안시스템 및 프로세스에 대한 정기적 시험&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.2.1 분기별 1회 무선보안 취약점 시험&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.2.2 정기적 네트웍 취약점 스캐닝&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 최소 분기별 1회&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 내부 및 외부 취약점 스캐닝&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.2.3 정기적 침투시험&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 내부 및 외부 네트워크 계층 침투 시험&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 내부 및 외부 어플리케이션 계층 침투 시험&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 침투시험시 알려진 모든 해킹기법을 이용한 침투 시험실시&lt;/div&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.2.4 IDS/IPS를 이용하여 시스템 보호&lt;/h4&gt;&lt;h4&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5.2.5 시스템 파일 무결성(Integrity) 감시 소프트웨어 운용용&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;6. 보안정책관리&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.1 정보보호 정책의 수립, 공표, 유지관리 및 배포&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 여기서 언급되는 모든 보안요구사항이 다루어져야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 위협과 취약점을 파악하고 공식적인 위험평가를 수행하는 연간 프로세스가 포함되어야함.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 최소한 매년 검토되어야함.&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.2 일일 보안점검 절차 수립&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.3 직원들이 사용하는 중요한 기술들에 대한 사용정책 제정&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용에 대한 명시적 관리자 승인&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 기술사용에 대한 인증&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 장비목록과 사용자 목록 유지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 소유자, 연락처, 사용목적이 명시된 라벨링&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 해당기술의 합당한 사용&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 해당기술에 대한 네트워크상의 합당한 위치&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 회사가 승인한 제품 목록&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 특정 시간동안 활동이 없을 경우 자동 세션 종료&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 벤더에 의한 운격접근기술은 필요시만 이용하고 사용후 즉시 구동중지&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 원격접근시 데이터 복사, 이동, 저장 금지&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.4 모든 직원과 계약업체의 정보보호 관련 책임을 명확히 규정&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.5 직원 또는 팀에게 정보보호 관리 책임 할당&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 정보보호 정책과 절차의 수립, 문서화 및 배포 책임&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 보안경고 및 정보 감시/분석하고 적절한 인력에게 배포하는 책임&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 보안사고 대응 및 보고절차를 수립/문서화/배포 책임&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 사용자 계정 관리 책임&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- 데이터 접근 감시 및 통제 책임&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.6 정보보호 중요성을 인식할 수 있는 공식적인 보안인식 프로그램 이행&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.7 직원고용이전 적격 심사 수행&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.8 외부 서비스 업체와의 상호연동을 위한 정책과 절차를 유지하고 이행&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;6.9 침해사고 대응계획 수립&lt;/span&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-7910339093860312893?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/7910339093860312893/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=7910339093860312893' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7910339093860312893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7910339093860312893'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2009/12/blog-post_23.html' title='순수웹환경에서의 전자금융 서비스 보안방안'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-4833733499101665187</id><published>2009-12-22T23:13:00.001-08:00</published><updated>2010-03-20T00:03:27.072-07:00</updated><title type='text'>한국형 전자상거래 서비스 제공자간 상호연동 표준안(KECIS)</title><content type='html'>&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;한국형 전자상거래 서비스 제공자간 상호연동 표준안&lt;/span&gt;&lt;/h1&gt;&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Korea Electronic Commerce Interoperability Standard&lt;/span&gt;&lt;/h1&gt;&lt;h1&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(분산환경에서 서비스 제공자들간의 상호 연계를 위한 데이터 송수신 표준 구조)&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;1. KECIS가 왜 필요한가?&lt;br /&gt;&lt;/span&gt;  &lt;/h2&gt;&lt;div&gt;- 다양한 서비스 제공자간의 표준화된 데이터 송수신 "방법" 부재&lt;/div&gt;&lt;div&gt;- 다양한 서비스 제공자간의 표준화된 데이터 송수신 "구조" 부재&lt;/div&gt;&lt;div&gt;- 위 "부재"로 인해 서비스 연동을 위한 중복된 Resource 소모, 복합적인 서비스 연계 불가&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- 유저가 쇼핑몰(Shopping Service Provider)에 접근하는 경우&lt;br /&gt;- 공급자는 유저에 대하여는 자신의 방식으로 서비스를 제공한다.&lt;br /&gt;- 공급자는 자신과 전용으로 연결되어 있는 각각의 서비스 제공자와 별도 연결.&lt;br /&gt;&lt;img alt="" /&gt;&lt;br /&gt;&lt;div id="rx-0" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dd4mkptq_27c6fx2zct_b" style="height: 293px; width: 476px;" /&gt;&lt;/div&gt;&lt;br /&gt;==&amp;gt; 각 공급자간의 표준 데이터 송수신 방법 부재&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;- 분산환경하의 결제서비스 공급자(Payment Service Provider)를 포함한 다수의 공급자들(Providers)이 자유롭게 결제및 인증 구조에 참여할 수 있는 표준화된 데이터 송수신 구조 확립이 필요&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1.1 ECML을 이용한 구조 표준화&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;- XML Encryption으로 데이터 암복호화&lt;/div&gt;&lt;div&gt;- XML Signature으로 데이터 전자서명/서명검증&lt;/div&gt;&lt;div&gt;- 공인인증 인프라 이용&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1.2 SAML이용하여 송수신 방법 표준화&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;2. KECIS는 누구에게 필요한가?&lt;/span&gt; &lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2.1 분산환경에서의 다양한 공급자들&lt;/span&gt; &lt;/h3&gt;&lt;br /&gt;다양한 형태의 서비스 공급자들이 인터넷 상이 존재한다.&lt;br /&gt;&lt;br /&gt;- 쇼핑몰 서비스 공급자&lt;br /&gt;&lt;br /&gt;- 신용카드 결제서비스 공급자&lt;br /&gt;&lt;br /&gt;- 휴대폰 결제서비스 공급자&lt;br /&gt;&lt;br /&gt;- 계좌이체 결제서비스 공급자&lt;br /&gt;&lt;br /&gt;- 공인인증 인증서비스 공급자&lt;br /&gt;&lt;br /&gt;- i-PIN 인증서비스 공급자&lt;br /&gt;&lt;br /&gt;- OpenID 인증 서비스 공급자&lt;br /&gt;&lt;br /&gt;- 배송서비스 공급자&lt;br /&gt;&lt;br /&gt;- 문자발송서비스 공급자&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이 공급자들은 나름의 방법으로 서비스를 유저에게 제공&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3. KECIS에서는 공급자들간 무엇을 주고받는가?&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3.1 K-ECML 포맷의 XML Message&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;3.1.1 ECML (Electronic Commerce Modeling Language)&lt;/h4&gt;&lt;div&gt;- ECML v1 by RFC2706 at 1999&lt;/div&gt;&lt;div&gt;- ECML v1.1 by RFC3106 at 2001&lt;/div&gt;&lt;div&gt;- ECML v2.0 by RFC4112 at Jun/2005&lt;/div&gt;&lt;div&gt;- IETF에서 기술적인 개발 및 변경관리 수행&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;3.1.2 K-ECML as ECML addon&lt;/h4&gt;&lt;div&gt;- 국내 카드사 코드 추가&lt;/div&gt;&lt;div&gt;- 국내 카드거래 종류 추가 (금액인증, ISP, 안심클릭 등)&lt;/div&gt;&lt;div&gt;- 국내 결제수단 추가 (계좌이체, 휴대폰 결제, 가상계좌 입금통지 등)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3.2 K-ECML Field List&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;div style="font: 11.0px Courier; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;a href="http://spreadsheets.google.com/pub?key=twnKwUenX4TKLP9-NJqFOEA&amp;amp;output=html" id="hf1w" title="http://spreadsheets.google.com/pub?key=twnKwUenX4TKLP9-NJqFOEA&amp;amp;output=html"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://spreadsheets.google.com/pub?key=twnKwUenX4TKLP9-NJqFOEA&amp;amp;output=html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Courier, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4. KECIS에서는 공급자들간 어떻게 데이터를 주고받는가?&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4.1 SAML 이용&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;- SAML의 데이터 송수신 구조 응용&lt;/div&gt;&lt;div&gt;- 유저 브라우저가 데이터 송수신의 라우터 역할을 함.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;4.1.1 SAML Use Case Diagram&lt;/h4&gt;&lt;div&gt;&lt;div id="b:ns" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dd4mkptq_4fk4mnkdc_b" style="height: 467.14px; width: 648px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;- Google Login with SAML&lt;br /&gt;&lt;div id="qc4k" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dd4mkptq_5cjcf22d7_b" style="height: 607.806px; width: 648px;" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4.2 KECIS의 SAML 응용 데이터 흐름도&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div id="v:1b" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dd4mkptq_6c95wsjfd_b" style="height: 465.231px; width: 648px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4.3 이용자와 다수의 공급자&lt;/span&gt; &lt;/h3&gt;&lt;br /&gt;각 공급자는 기존의 존재하는 자신만의 방식으로 그대로 서비스를 제공하면서&lt;br /&gt;다른 서비스 제공자와 서비스 결과를 표준화된 방식으로 주고받을 수 있다면&lt;br /&gt;&lt;br /&gt;하나의 공급자가 모든 서비스를 묶어서 힘들게 제공할 필요없이&lt;br /&gt;&lt;br /&gt;자신이 가장 잘하는 서비스를 집중하여 유저에게 제공하며&lt;br /&gt;자신이 보유하고 있지 않은 서비스를 해당 서비스 공급자에게 표준적인 방법으로 요청(*)하고&lt;br /&gt;그 결과를 역시 표준적인 방법으로 응답받아 확인(*) 하고&lt;br /&gt;다음 프로세스를 진행할 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;div id="oej2" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dd4mkptq_28dvdcrx3p_b" style="height: 488px; width: 523px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;각 공급자간의 데이터 송수신은 XML Message를 기반으로 하며&lt;br /&gt;&lt;br /&gt;공급자의 공인인증서로 상호 XML 전자서명 - 서명검증 하거나&lt;br /&gt;XML 암호화 - 복호화 하여 데이터를 주고받으며&lt;br /&gt;주고받는 데이터의 구조는 XML Schema 표준에 의하여 정의한다.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4.4 다수 공급자간의 Use Case Diagram&lt;/span&gt; &lt;/h3&gt;&lt;br /&gt;&lt;div id="v1bz" style="text-align: left;"&gt;&lt;br /&gt;&lt;div id="bj4f" style="text-align: left;"&gt;&lt;br /&gt;&lt;img src="http://docs.google.com/File?id=dd4mkptq_30cngb49hk_b" style="height: 425.333px; width: 648px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5. KECIS는 구현되어 있는가?&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5.1 오픈소스로 공개되어 있음.&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href="https://sourceforge.net/projects/kecis/" id="yx3g" title="https://sourceforge.net/projects/kecis/"&gt;https://sourceforge.net/projects/kecis/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5.2 KECI Public Server&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;- java daemon&lt;/div&gt;&lt;div&gt;- 공인인증 Public Key만을 Handling&lt;/div&gt;&lt;div&gt;- XML Request Message에 대한 공인인증 공개키 암호화&lt;/div&gt;&lt;div&gt;- XML Response Message에 대한 공인 전자서명 검증&lt;/div&gt;&lt;div&gt;- Public Key에 대한 CRL checking&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5.3 KECI Private Server&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;- java daemon&lt;/div&gt;&lt;div&gt;- 공인인증 Public &amp;amp; Private Key pair handling&lt;/div&gt;&lt;div&gt;- 공인인증 Private Key의 HSM 보관을 위한 Interface&lt;/div&gt;&lt;div&gt;- KECI Public Server의 모든 기능 포함&lt;/div&gt;&lt;div&gt;- XML Encryption / Decryption&lt;/div&gt;&lt;div&gt;- XML Signature / Verification&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5.4 client Libraries&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;- JSP로 구현&lt;/div&gt;&lt;div&gt;- KECI Public Server와 TCP/IP Socket 통신&lt;/div&gt;&lt;div&gt;- K-ECML XML Message 생성 / 파싱&lt;/div&gt;&lt;div&gt;- DOM Communication을 위한 javascript library 포함&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;6. KECIS구조하의 상호연동 시나리오&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;6.1 2곳의 서비스 제공자간 상호연동 시나리오&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;6.1.1 상점과 결제대행사&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;머천트&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;머천트는 고객이 상품선택을 완료하면&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;K-ECML format&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;의 &lt;/span&gt;&lt;/span&gt;XML Message &lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;생성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font: normal normal normal 10px/normal Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;KECI Public Server&lt;/span&gt;&lt;/span&gt;를 통해 결제대행사의 공인인증서로 요청정보 암호화&lt;/li&gt;&lt;li&gt;유저 브라우저를 통해 해당 요청정보를 결제대행사로 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;결제대행사&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;결제대행사에서는 요청정보를 공인인증서의 개인키로 복호화&lt;/li&gt;&lt;li&gt;고유한 프로세스로 결제처리&lt;/li&gt;&lt;li&gt;결제결과를 &lt;span style="font: normal normal normal 10px/normal Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;KECI Private Server&lt;/span&gt;&lt;/span&gt;를 이용하여 전자서명&lt;/li&gt;&lt;li&gt;서명된 메세지를 유저 브라우저를 이용하여 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;머천트&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;결제대행사에서 유저브라우저를 거처 전송해온 정보 수신&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI Public Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;를 이용하여 서명 검증&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;결제가 완료된것을 확인한 머천트는 유저에게 상품 제공&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h4&gt;6.1.2 상점과 은행&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;상점&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;고객이 상점의 상품 선택&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI client library&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;를 이용하여 &lt;/span&gt;&lt;/span&gt;K-ECML XML Message &lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;생성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;생성된 K-ECML Message를 KECI Public Server로 암호화&lt;/li&gt;&lt;li&gt;암호화된 "요청" 메세지를 은행으로 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;은행&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;유저 브라우저를 거쳐 암호화된 메세지 수신&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI Private Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;를 통해 해당 메세지 복호화&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;은행 웹사이트내에서 계좌이체 진행&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;계좌이체 결과를 &lt;/span&gt;&lt;/span&gt;KECI Private Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;로 전자서명&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;서명된 메세지를 유저 브라우저를 통해 상점으로 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;상점&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;은행에서 유저 브라우저를 거쳐 전송되어온 서명된 메세지 수신&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI Public Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;통해 공인 전자서명 검증&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;계좌이체가 완료된것을 확인후 유저에게 상품 제공&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;6.2 n개의 서비스 제공자간&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;h4&gt;6.2.1 상점, 은행, 공인인증기관&lt;/h4&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;상점&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;고객이 상품 선택&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI Public Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;로 요청정보 암호화&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;유저브라우저 통해 은행으로 계좌이체 요청 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;은행&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;암호화 메세지 수신&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI Private Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;통해 정보 복호화&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;계좌이체 시작&lt;/li&gt;&lt;li&gt;본인확인을 위해 본인확인 요청 정보 &lt;span style="font: normal normal normal 10px/normal Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;KECI Public Server&lt;/span&gt;&lt;/span&gt;통해 암호화&lt;/li&gt;&lt;li&gt;공인인증기관으로 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;공인인증기관&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;본인확인 요청 접수&lt;/li&gt;&lt;li&gt;공인인증기관 웹사이트에서 유저와 본인확인 진행&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;본인확인결과를 &lt;/span&gt;&lt;/span&gt;KECI Private Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;로 전자서명&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;은행으로 본인확인 결과 전달&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;은행&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;전자서명된 본인확인 정보 수신&lt;/li&gt;&lt;li&gt;계좌이체 처리&lt;/li&gt;&lt;li&gt;계좌이체 처리완료 정보를 &lt;span style="font: normal normal normal 10px/normal Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;KECI Private Server&lt;/span&gt;&lt;/span&gt;로 전자서명&lt;/li&gt;&lt;li&gt;유저브라우저를 통해 상점으로 이체결과 전송&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px;"&gt;&lt;span style="font-family: AppleGothic, sans-serif;"&gt;&lt;b&gt;상점&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: AppleGothic, sans-serif;"&gt;&lt;div&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;계좌이체 결과 수신&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;KECI Public Server&lt;span style="font: normal normal normal 10px/normal AppleGothic;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;로 서명검증&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;유저에게 상품제공&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;6.2.2 n개의 서비스 제공자들&lt;/h4&gt;&lt;div style="font: 10.0px AppleGothic; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;암호화된 요청정보 수신&lt;/li&gt;&lt;li&gt;KECI Private Server로 데이터 복호화&lt;/li&gt;&lt;li&gt;서비스 제공자의 고유한 서비스 제공&lt;/li&gt;&lt;li&gt;서비스 제공 결과를 &lt;span style="font: normal normal normal 10px/normal Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;KECI Private Server&lt;/span&gt;&lt;/span&gt;통해 전자서명&lt;/li&gt;&lt;li&gt;전자서명된 결과를 원 요청자에게 응답&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;7. References&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;7.1 ECML&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href="http://tools.ietf.org/html/rfc4112" id="a_qi" title="http://tools.ietf.org/html/rfc4112"&gt;http://tools.ietf.org/html/rfc4112&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;7.2 SAML&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/SAML" id="lhrq" title="http://en.wikipedia.org/wiki/SAML"&gt;http://en.wikipedia.org/wiki/SAML&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://blog.sdnkorea.com/blog/501" id="c4c5" title="http://blog.sdnkorea.com/blog/501"&gt;http://blog.sdnkorea.com/blog/501&lt;/a&gt; : SAML을 이용한 SSO 구현&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;7.3 XML Encryption&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/XML_Encryption" id="sff6" title="http://en.wikipedia.org/wiki/XML_Encryption"&gt;http://en.wikipedia.org/wiki/XML_Encryption&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;7.4 XMLDSIG&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/XML_Signature" id="zf-j" title="http://en.wikipedia.org/wiki/XML_Signature"&gt;http://en.wikipedia.org/wiki/XML_Signature&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;8. 작성자&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;이동산 (Mountie Lee)&lt;/div&gt;&lt;div&gt;mountie@paygate.net&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-4833733499101665187?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/4833733499101665187/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=4833733499101665187' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/4833733499101665187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/4833733499101665187'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2009/12/kecis.html' title='한국형 전자상거래 서비스 제공자간 상호연동 표준안(KECIS)'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-5565113747001763252</id><published>2009-11-02T08:54:00.000-08:00</published><updated>2009-11-02T09:16:47.097-08:00</updated><title type='text'>전자정부 세션보안 ActiveX</title><content type='html'>전자정부 사이트(www.g4c.go.kr)에 처음 접속하면&lt;br /&gt;접속하자 마자 무슨 ActiveX를 설치하라고 나온다.&lt;br /&gt;세션보안을 위한 XecureWeb을 설치하다는것인데&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;유저가 단순히 사이트 조회만을 위해 방문하든&lt;br /&gt;민원을 신청하기 위해 방문하든 상관하지 않고 무조건 설치를 요구한다.&lt;br /&gt;&lt;br /&gt;세션보안을 위한 것이라면 "정보통신망 이용촉진 및 정보보호 등에 관한 법률"및 그 하위 규정을 보면 분명하게&lt;br /&gt;SSL과 응용프로그램방식 2가지를 모두 인정하고 있다.&lt;br /&gt;&lt;br /&gt;당연하게 SSL 보안웹서버를 구성해야하는것이 아닌가?&lt;br /&gt;웹 접근성을 적극 추진하고 있는 전자정부 사이트인데&lt;br /&gt;아직도 응용프로그램 방식 보안웹서버를 구성하고 있다는것이&lt;br /&gt;&lt;br /&gt;이해가 안된다.&lt;br /&gt;&lt;br /&gt;XecureWeb이 다목적 프로그램인것은 알고 있다.&lt;br /&gt;단순히 세션보안만을 위한것이 아니고 나중에 민원신청시에 다양한 기능이 동작한다.&lt;br /&gt;&lt;br /&gt;그러나 그건 그 업무를 할 유저에게만 제시하는것이 적당하지&lt;br /&gt;&lt;br /&gt;사이트 처음 접속하는 불특정 다수의 유저에게 무조건 설치를 강요하는것은 바람직하지 않다.&lt;br /&gt;&lt;br /&gt;그 업무를 할 유저에게만 어떻게 제시할 수 있을까?&lt;br /&gt;&lt;br /&gt;기술적으로는 아래와 같은과정으로 처리할 수 있다.&lt;br /&gt;&lt;br /&gt;1. 페이지내에 &lt; id="'xecureuse'"&gt; &lt; / div &gt;  tag를 하나 준비한다.&lt;br /&gt;이 div tag내에는 아직 아무런 내용이 없다.&lt;br /&gt;&lt;br /&gt;2. 만일 유저가 민원 신청을 위하여 xecureweb이 필요하다면&lt;br /&gt;javascript으로 DOM element을 하나 생성한다.&lt;br /&gt;그 과정은&lt;br /&gt;&lt;br /&gt;var xecureobject = '&lt;object id="........."&gt;&lt;/object&gt;';&lt;br /&gt;document.getElementById('xecureuse').innerHTML = xecureobject;&lt;br /&gt;&lt;br /&gt;이렇게 하면 다이나믹하게 object tag가 page내에 생성된다.&lt;br /&gt;물론 단순하게 object tag만 넣기보다 실제 서비스를 위해서는 좀더 복잡한 콘트롤이 필요하다.&lt;br /&gt;&lt;br /&gt;그렇지만 서비스 제공자가 좀더 복잡하게 콘트를하여 유저가 좀더 편리함을 느낀다면&lt;br /&gt;그게 더 낳은 방식이다.&lt;br /&gt;&lt;br /&gt;위의 개념은 activex control이 꼭 필요하더라도&lt;br /&gt;무작정 불특정 다수의 유저에게 강요하기 보다&lt;br /&gt;위와같은 dynamic object creation등을 통하면 기술적으로 해법이 존재하며&lt;br /&gt;서비스 제공자가 무관심해서 안하는것이다.&lt;br /&gt;&lt;br /&gt;정리하면&lt;br /&gt;&lt;br /&gt;* 일단 세션보안은 무조건 SSL : 이것만 해도 웹 접근성이 엄청나게 증가된다.(사이트 방문하는 수많은 readonly user 지원)&lt;br /&gt;* ActiveX control이 필요하다면 필요할때만 DOM element를 생성해서 사용&lt;br /&gt;&lt;br /&gt;이정도만 해서 엄청난 웹 접근성 향상이 기대된다.&lt;br /&gt;&lt;br /&gt;전자정부 사이트뿐만 아니라 다른 사이트도 마찬가지.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-5565113747001763252?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/5565113747001763252/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=5565113747001763252' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/5565113747001763252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/5565113747001763252'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2009/11/activex.html' title='전자정부 세션보안 ActiveX'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-4099669696466486027</id><published>2009-10-18T16:55:00.001-07:00</published><updated>2009-10-18T16:58:18.581-07:00</updated><title type='text'>아이폰으로 첫번째 업로드</title><content type='html'>아이튠즈하나에&lt;br /&gt;아이폰 아이팟터치 애플티비 맥 피시등 단말제품을 통합하는 정책이 재미있다.&lt;br /&gt;사용자는 자신의 콘텐츠를 어느 서비스에 통합할건지 선택의 기로에 서 있다&lt;br /&gt;&lt;br /&gt;컨텐츠통합을 애플서비스로할건지, 구글로 할건지, 마이크로소프트 서비스로할건지, 야후로 할건지 등등&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPhone&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-4099669696466486027?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/4099669696466486027/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=4099669696466486027' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/4099669696466486027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/4099669696466486027'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2009/10/blog-post.html' title='아이폰으로 첫번째 업로드'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-1436690522023940939</id><published>2009-04-06T17:58:00.001-07:00</published><updated>2009-04-06T17:58:19.876-07:00</updated><title type='text'>New Payment &amp; Identity Infrastructure</title><content type='html'>&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;h1&gt;&lt;br /&gt; 분산환경에서의 결제 및 인증 구조&lt;br /&gt;&lt;/h1&gt;&lt;br /&gt;&lt;h1&gt;&lt;br /&gt; Decentralized Payment &amp;amp; Identity Structure&lt;br /&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h2&gt;&lt;br /&gt; 1. 목적&lt;br&gt;&lt;br /&gt;&lt;/h2&gt;- 분산환경하의 결제서비스 공급자(Payment Service Provider)를 포함한 다수의 공급자들(Providers)이 자유롭게 결제및 인증 구조에 참여할 수 있는 표준화된 데이터 송수신 구조 확립&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h2&gt;&lt;br /&gt; 2. 데모&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;- iPhone Payment Demo : &lt;a href="http://www.youtube.com/watch?v=HgUkpHiHH2w" id="ybk." target="_blank" title="iPhone payment demo"&gt;http://www.youtube.com/watch?v=HgUkpHiHH2w&lt;/a&gt;&lt;br&gt;- LG OZ Phone : &lt;a href="http://www.youtube.com/watch?v=aPFSvEVEnLw" id="hz-n" target="_blank" title="http://www.youtube.com/watch?v=aPFSvEVEnLw"&gt;http://www.youtube.com/watch?v=aPFSvEVEnLw&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;특정 Payment Provider를 통한 Payment Demo임.&lt;br&gt;&lt;br /&gt;이미 모바일 Full browsing단말 등 웹표준 환경에서 결제가 가능함을 보여주는 동영상&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h2&gt;&lt;br /&gt; 3. 웹표준 환경에서의 결제 동작구조&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 3.1 기존의 IE 의존 구조&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div id="g7ly" style="text-align: left;"&gt;&lt;br /&gt; &lt;div id="wn4k" style="text-align: left;"&gt;&lt;br /&gt; &lt;img src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_20dhmfrqc9_b" style="width: 524px; height: 314px;"&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 3.2 웹표준 환경에서의 동작구조&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div id="q:0j" style="text-align: left;"&gt;&lt;br /&gt; &lt;div id="nqxo" style="text-align: left;"&gt;&lt;br /&gt; &lt;div id="ihym" style="text-align: left;"&gt;&lt;br /&gt; &lt;img src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_23gcq9mcxb_b" style="width: 523px; height: 500px;"&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 3.3 전통적 방식의 HTML Presentation&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div id="axmm" style="text-align: left;"&gt;&lt;br /&gt; &lt;img src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_24gj3smv97_b" style="width: 391px; height: 519px;"&gt;&lt;br&gt;&lt;br /&gt; &lt;br&gt;&lt;br /&gt; * Server에서 HTML Page를 완성하여 Client로 전송하면 Client에서는 그대로 보여줌.&lt;br&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 3.4 JSON Response에서의 HTML Presentation&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div id="wd58" style="text-align: left;"&gt;&lt;br /&gt; &lt;img src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_25c8psbtdq_b" style="width: 391px; height: 531px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;* Server에서는 데이터만을 JSON format으로 변경하여 Client로 전송&lt;br&gt;&lt;br /&gt;* Client에서는 데이터를 재가공하여 화면 표시&lt;br&gt;&lt;br /&gt;* 서버는 경량의 데이터만을 Handling&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 3.5 DOM Request - JSON Response 구조&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div id="o9cn" style="text-align: left;"&gt;&lt;br /&gt; &lt;img src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_26gxmjs5dc_b" style="width: 632px; height: 647px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt; &lt;hr class="pb"&gt;&lt;h2&gt;4 법적이슈&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 4.1 전자금융거래법 시행세칙 29조 2항 3호&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;"이용자 PC에서의 정보유출을 방지하기 위해 이용자의 접속시 우선적으로 이용자 PC에 개인용 침입탐지시스템, 키보드해킹방지 프로그램 등의 보안프로그램을 설치할 것 (다만, 고객의 책임으로 본인이 동의하는 경우에는 보안프로그램 해제가능)"&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;==&amp;gt; 이용자의 선택권 명시&lt;br&gt;&lt;br /&gt;==&amp;gt; 금감원의 공식답변 "이용자 선택권 부여여부를 전자금융업자가 결정할 수 있다" 임.&lt;br&gt;&lt;br /&gt;==&amp;gt; 페이게이트는 전자금융거래법상의 전자금융업자&lt;br&gt;&lt;br /&gt;==&amp;gt; 페이게이트는 개인보안프로그램 이용에 대한 이용자 선택권을 활성화함.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;* 이용자는 전자금융업자가 제공하는 개인보안 프로그램들을 그대로 이용하거나&lt;br&gt;&lt;br /&gt;* 본인이 별도 유료 구매한 개인보안 프로그램을 이용하고 전자금융업자가 제공하는 프로그램을 이용하지 않을 수 있음.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 4.2 키보드 보안&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;- 스크린 키보드 방식으로 키보드 보안을 이용자에게 제공&lt;br&gt;&lt;br /&gt;- 이용자는 키보드 보안방식을 이용할지 여부를 결정&lt;br&gt;&lt;br /&gt;&lt;div id="r0ok" style="text-align: left;"&gt;&lt;br /&gt; &lt;img id="v-gc" src="https://docs.google.com/a/paygate.net/File?id=dhm28v4q_1645g9c83scc_b" style="width: 632px; height: 435px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 4.3 공인인증서&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;- 전자금융거래법 시행세칙 제31조의 공인인증 사용예외 규정에 부합되는 경우 공인인증서 미사용.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; 4.4 공인인증서 미사용시 거래안정성 확보방안&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;- 신용카드 금액인증 + 프로파일 DB&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;h2&gt;&lt;br /&gt;&lt;hr class="pb"&gt;5. 공급자 (Provider)&lt;/h2&gt;&lt;h3&gt;&lt;br /&gt;5.1 분산환경에서의 다양한 공급자들&lt;/h3&gt;&lt;br /&gt;- 쇼핑몰 서비스 공급자&lt;br&gt;&lt;br /&gt;- 신용카드 결제서비스 공급자&lt;br&gt;&lt;br /&gt;- 휴대폰 결제서비스 공급자&lt;br&gt;&lt;br /&gt;- 계좌이체 결제서비스 공급자&lt;br&gt;&lt;br /&gt;- 공인인증 인증서비스 공급자&lt;br&gt;&lt;br /&gt;- i-PIN 인증서비스 공급자&lt;br&gt;&lt;br /&gt;- OpenID 인증 서비스 공급자&lt;br&gt;&lt;br /&gt;- 배송서비스 공급자&lt;br&gt;&lt;br /&gt;- 문자발송서비스 공급자&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;h3&gt;&lt;br /&gt;5.2 이용자와 공급자&lt;/h3&gt;&lt;br /&gt;- 유저가 쇼핑몰(Shopping Service Provider)에 접근하는 경우&lt;br&gt;&lt;br /&gt;- 공급자는 유저에 대항 웹표준 UI만을 신경쓰면 됨.&lt;br&gt;&lt;br /&gt;- 공급자는 자신과 전용으로 연결되어 있는 각각의 서비스 제공자와 별도 연결.&lt;br&gt;&lt;img alt=""&gt;&lt;div id="rx-0" style="text-align: left;"&gt;&lt;img style="width: 476px; height: 293px;" src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_27c6fx2zct_b"&gt;&lt;/div&gt;&lt;br&gt;==&amp;gt; 각 공급자간의 표준 데이터 송수신 방법 부재&lt;br&gt;&lt;br&gt;&lt;h3&gt;&lt;hr class="pb"&gt;5.3 이용자와 다수의 공급자&lt;/h3&gt;- 각 공급자가 이용자와 직접 통신이 필요한 경우들이 다수 존재함.&lt;br&gt;- 결제서비스 제공자는 주요 결제정보(카드번호 등)를 이용자로부터 직접 받아야함.&lt;br&gt;- 인증서비스 제공자는 주요 인증정보(주민번호 등)을 이용자로부터 직접 받아야함.&lt;br&gt;- 공급자간에 상호 교류가 필요한 경우가 아주 많음.&lt;div id="oej2" style="text-align: left;"&gt;&lt;img style="width: 523px; height: 488px;" src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_28dvdcrx3p_b"&gt;&lt;br&gt;==&amp;gt; 공급자간의 데이터는 XML 메세지 표준을 이용&lt;br&gt;&lt;br&gt;&lt;h3&gt;5.4 다수 공급자간의 Use Case Diagram&lt;/h3&gt;&lt;div id="v1bz" style="text-align: left;"&gt;&lt;div id="bj4f" style="text-align: left;"&gt;&lt;img style="width: 648px; height: 425.333px;" src="http://docs.google.com/a/paygate.net/File?id=dd4mkptq_30cngb49hk_b"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;h3&gt;5.5 기준이 되는 표준 기술들&lt;/h3&gt;&lt;h4&gt;5.5.1 DOM&lt;/h4&gt;- W3C 표준&lt;br&gt;- DOM Request는 Google AdSense, Yahoo API등 광범위하게 사용되는 비동기 통신 방법임.&lt;br&gt;&lt;br&gt;&lt;h4&gt;5.5.2 XML Messaging&lt;/h4&gt;- XML Schema, XML Signature, XML Encryption으로 W3C 권고사항.&lt;br&gt;- Application Layer에서 데이터 암복호화에 대한 구조적 접근 가능하게 함.&lt;br&gt;- 다수의 XML 암호화 관련 제품들이 소개되고 있음.&lt;br&gt;- Luna XML : XML Messaging 처리 HSM&lt;br&gt;- OpenOCES : XML Messaging 처리 서버 및 클라이언트 오픈소스 프로젝트&lt;br&gt;- OpenSigner : XML Messaging처리하는 자바 및 공인인증서 기반 오픈소스 프로젝트&lt;br&gt;&lt;br&gt;&lt;h4&gt;5.5.3 JSON&lt;/h4&gt;- XML data와 상호 변환 호환성 제공&lt;br&gt;- www.json.org&lt;br&gt;&lt;br&gt;&lt;h4&gt;5.5.4 SAML&lt;/h4&gt;- Security Assertion Markup Language&lt;br&gt;- http://en.wikipedia.org/wiki/SAML&lt;br&gt;- http://blog.sdnkorea.com/blog/501 : SAML을 이용한 SSO 구현&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-1436690522023940939?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/1436690522023940939/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=1436690522023940939' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/1436690522023940939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/1436690522023940939'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2009/04/new-payment-identity-infrastructure.html' title='New Payment &amp;amp; Identity Infrastructure'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-8341641250385293318</id><published>2008-12-25T20:33:00.001-08:00</published><updated>2008-12-25T20:33:15.951-08:00</updated><title type='text'>삼성생명 보험계약종합안내</title><content type='html'>&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;p&gt;아래 내용으로 삼성생명에 메일을 보냈더니&lt;/p&gt;&lt;p&gt;담당자가 직접 수정한 메일을 보냈습니다.&lt;/p&gt;&lt;p&gt;그리고 앞으로 될때까지 직접 챙기겠다고 합니다.&lt;/p&gt;&lt;p&gt;담당자 메일을 웹사이트 접속이 불가하여&lt;/p&gt;&lt;p&gt;인터넷 검색엔진에서 이용자 약관내용을 찾았고 그 안의 담당자 메일이 있어 거길로 발송하였습니다.&lt;/p&gt;&lt;p&gt;-----------&lt;br&gt;&lt;/p&gt;&lt;h1&gt;삼성생명 보험계약종합안내 메일 오류 관련 개선 요청&lt;/h1&gt;&lt;br&gt;안녕하세요.&lt;br&gt;저는 삼성생명 고객인 이*산입니다&lt;br&gt;&lt;br&gt;IT산업에 종사하고 있고&lt;br&gt;주로 Mac OSX에서 Firefox browser를 사용합니다.&lt;br&gt;&lt;br&gt;최근 삼성생명에서 발송하는 보험계약종합안내 메일에서&lt;br&gt;파이어폭스나 리눅스 유저를 고려하여 &lt;b&gt;일반메일 재발행 신청하기&lt;/b&gt;라는 기능이 추가되었는데&lt;br&gt;&lt;br&gt;아래와 같은 &lt;u&gt;문제가 있어서 자세하게 안내해드립니다&lt;/u&gt;.&lt;br&gt;&lt;br&gt;기왕 파이어폭스나 리눅스, 매킨토시 유저를 지원하기로 하였으면&lt;br&gt;그 &lt;u style="color: rgb(0, 0, 255);"&gt;&lt;font size="3"&gt;&lt;b&gt;유저입장에서 정확하게 동작하는지 확인후 안내하고 실제로 동작할 수 있도록 조치해주십시오&lt;/b&gt;&lt;/font&gt;&lt;/u&gt;.&lt;br&gt;&lt;br&gt;1. 아래 그림처럼 삼성생명에서 메일을 받았습니다.&lt;br&gt;&lt;div id="fg4w" style="padding: 1em; text-align: center;"&gt;&lt;img style="width: 100%;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2079js9m72f6_b"&gt;&lt;/div&gt;&lt;br&gt;2. 저는 Mac OSX에서 파이어폭스를 주로 사용하고 있는데&lt;br&gt;메일 내용중 "보안프로그램(Active-X)은 일부 운영체계(윈도우비스타, 파이어폭스, 리눅스, 매킨토시 등) 및 일부 회사 메일의 경우 첨부파일이 개봉되지 않을 수 있으니 아래 [일반메일 재발행 신청하기]에서 일반메일을 신청하시기 바랍니다"라고 하는 안내문구가 보여서 [일반메일 재발행 신청하기] 링크를 클릭하였습니다.&lt;br&gt;몇단계 확인 alert 창이 뜬 이후 일반메일 신청 화면이 아래 그림처럼 나옵니다.&lt;br&gt;&lt;div id="y_7z" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 526px; height: 566px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2080rvmczs3b_b"&gt;&lt;/div&gt;&lt;br&gt;3. 주민번호 뒤번호 7자리를 입력하면 아무런 반응이 없습니다.&lt;br&gt;혹시나해서 Firefox의 JavaScript 오류 정보 창을 열어보니 아래와 같은 사이트 오류가 확인되었습니다.&lt;br&gt;&lt;div id="prsr" style="padding: 1em; text-align: center;"&gt;&lt;img style="width: 100%;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2082fxzxfv97_b"&gt;&lt;/div&gt;&lt;br&gt;4. 혹시나 해서 [에러 발생시 신청방법] 링크를 클릭하면 아래 그림처럼 ActiveX 설치를 시도하고 다음 단계로 진행을 할 수 없습니다.&lt;br&gt;&lt;div id="qg4q" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 525px; height: 567px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2083hgsw4n5f_b"&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-8341641250385293318?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/8341641250385293318/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=8341641250385293318' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/8341641250385293318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/8341641250385293318'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/12/blog-post_25.html' title='삼성생명 보험계약종합안내'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-8147799014291148221</id><published>2008-12-18T00:32:00.000-08:00</published><updated>2008-12-18T00:33:42.719-08:00</updated><title type='text'>PCI DSS Guide관련 블로그 오픈</title><content type='html'>PCI DSS 안내하는 블로그를 오픈하였습니다.&lt;br /&gt;&lt;a href="http://pcidssguide.blogspot.com"&gt;http://pcidssguide.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;살펴보세요&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-8147799014291148221?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/8147799014291148221/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=8147799014291148221' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/8147799014291148221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/8147799014291148221'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/12/pci-dss-guide.html' title='PCI DSS Guide관련 블로그 오픈'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-523645549334415338</id><published>2008-12-18T00:19:00.001-08:00</published><updated>2008-12-18T00:38:50.277-08:00</updated><title type='text'>웹표준과 지불결제</title><content type='html'>&lt;h1 id="y7xc0"&gt;웹표준과 지불결제 &lt;/h1&gt;&lt;h1 id="y7xc1"&gt;1. 웹표준 &lt;/h1&gt;&lt;h2 id="lfp40"&gt;1.1 전세계 브라우저 점유율 (by NetApplications) &lt;/h2&gt;&lt;div id="esh-" style="padding: 1em 0pt;"&gt;&lt;img id="x2my0" style="width: 804px; height: 669px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1564dg6zjqdp_b" /&gt;&lt;br /&gt;&lt;div id="a47j0" style="text-align: left;"&gt;&lt;br /&gt;&lt;div id="t33y" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="nv3n" style="width: 806px; height: 673px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1639cd6smpht_b" /&gt;&lt;/div&gt;* MSIE점유율은 줄어들고 있고 Firefox는 상승중 &lt;/div&gt;&lt;br /&gt;&lt;h2 id="lfp41"&gt;1.2 대한민국 브라우저 점유율 종합 (by NetApplications) &lt;/h2&gt;&lt;div id="deom" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="hp960" style="width: 804px; height: 586px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1565f9swqfmw_b" /&gt; &lt;/div&gt;&lt;div id="r9sc" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="b870" style="width: 806px; height: 573px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1640ghj4vxhf_b" /&gt;&lt;/div&gt; * 국내 MSIE점유율 종합은 96.59%(4월), 95.65%(5월)  &lt;/div&gt;&lt;br /&gt;&lt;h2 id="lfp42"&gt;1.3 지불결제가 필요한 쇼핑분야 점유율(by internettrend) &lt;/h2&gt;&lt;div id="ei6p" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="d5u60" style="width: 813px; height: 480px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1566dhqw4rwk_b" /&gt; &lt;/div&gt;&lt;p id="le-20"&gt; &lt;/p&gt;&lt;br /&gt;&lt;div id="igvw" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="n5vw" style="width: 731px; height: 481px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1641fqshxwhb_b" /&gt;&lt;/div&gt;* 쇼핑분야는 국가평균보다 점유율이 더 높음&lt;br /&gt;&lt;p id="le-21"&gt;* 기간별 변화율 추이는 점차 줄어들고 있음.  &lt;/p&gt;&lt;br /&gt;&lt;h2 id="lfp43"&gt;1.4 국가별 MSIE Market Share 비율 (by NetApplications) &lt;/h2&gt;&lt;div id="tekx" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="lipp0" style="width: 806px; height: 1011px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1567wfp44ghp_b" /&gt; &lt;/div&gt;&lt;div id="inuw" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="h2t5" style="width: 805px; height: 708px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1642gkv9gfgt_b" /&gt;&lt;/div&gt;* 오차율을 감안한다면 "South Korea"는 세계 최고의 MSIE Market Share 비율을 보이고 있음.&lt;br /&gt;&lt;h2 id="ul1z0"&gt;1.5 페이게이트 결제를 사용하는 특정 업체의 브라우저 점유율 (by analytics.google.com) &lt;/h2&gt;&lt;div id="c6:w" style="padding: 1em 0pt; text-align: left;"&gt;누적5월까지 &lt;img id="h6vj0" style="width: 770px; height: 329px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1568pn9vbzg8_b" /&gt; &lt;/div&gt;&lt;div id="m1y5" style="padding: 1em 0pt; text-align: left;"&gt;누적6월까지 &lt;img id="o_gu" style="width: 680px; height: 373px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1643m3tbn8f9_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="o0640"&gt;1.6 웹표준 이전과 이후&lt;br /&gt;&lt;/h2&gt;&lt;div id="iwm90"&gt;&lt;table id="o8zp" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="iwm91"&gt;&lt;tr id="iwm92"&gt;&lt;br /&gt;&lt;td id="iwm93" width="50%"&gt;&lt;p id="k0l40" align="center"&gt;웹표준 이전 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="iwm95" width="50%"&gt;&lt;p id="k0l41" align="center"&gt;웹표준 이후 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="iwm97"&gt;&lt;br /&gt;&lt;td id="iwm98" width="50%"&gt;유저환경에 대한 기술적 별도 대응 - IPTV환경 따로 - 모바일환경 따로 - PC환경 따로 &lt;/td&gt;&lt;br /&gt;&lt;td id="iwm910" width="50%"&gt;동일한 하나의 기술로 모든 시장환경에 대응 PC, 모바일, IPTV 환경의 구분 불필요 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="o0641"&gt;1.7 웹표준은 돈이되는 기술&lt;br /&gt;&lt;/h2&gt;&lt;div id="jde-0"&gt;&lt;table id="ebs2" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="jde-1"&gt;&lt;tr id="jde-2"&gt;&lt;br /&gt;&lt;td id="jde-3" width="33%"&gt;&lt;p id="k0l42" align="center"&gt;구분 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="jde-5" width="33%"&gt;&lt;p id="k0l43" align="center"&gt;웹표준 미준수업체 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="jde-7" width="33%"&gt;&lt;p id="k0l44" align="center"&gt;웹표준 준수업체 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="jde-9"&gt;&lt;br /&gt;&lt;td id="jde-10" width="33%"&gt;MSIE PC Market (95%) &lt;/td&gt;&lt;br /&gt;&lt;td id="jde-12" width="33%"&gt;유저의 95% 수용, but 시장이 점점 줄어들고 있음. &lt;/td&gt;&lt;br /&gt;&lt;td id="jde-14" width="33%"&gt;(좌동) &lt;/td&gt;&lt;/tr&gt;&lt;tr id="wrj40"&gt;&lt;br /&gt;&lt;td id="wrj41" width="33%"&gt;Non-MSIE PC Market (5%) &lt;/td&gt;&lt;br /&gt;&lt;td id="wrj43" style="text-align: center;" width="33%"&gt;X &lt;/td&gt;&lt;br /&gt;&lt;td id="wrj45" width="33%"&gt;숨어있는 새로운 5% 유저 수용, 매출 5% 증대 가능성 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="l4d40"&gt;&lt;br /&gt;&lt;td id="l4d41" width="33%"&gt;Mobile Full Browsing Market (00%) &lt;/td&gt;&lt;br /&gt;&lt;td id="l4d43" style="text-align: center;" width="33%"&gt;X &lt;/td&gt;&lt;br /&gt;&lt;td id="l4d45" width="33%"&gt;무한 가능성 가진 새로운 유저층 수용, 매출 증대 가능성 가늠불가 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="prel0"&gt;&lt;br /&gt;&lt;td id="prel1" width="33%"&gt;IPTV Setup Market (00%) &lt;/td&gt;&lt;br /&gt;&lt;td id="prel3" style="text-align: center;" width="33%"&gt;X &lt;/td&gt;&lt;br /&gt;&lt;td id="prel5" width="33%"&gt;무한 가능성 가진 새로운 유저층 수용, 매출증대 가느성 가늠불가 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="uh-20"&gt;&lt;br /&gt;&lt;td id="uh-21" width="33%"&gt;냉장고에 붙은 embeded device &lt;/td&gt;&lt;br /&gt;&lt;td id="uh-23" style="text-align: center;" width="33%"&gt;X &lt;/td&gt;&lt;br /&gt;&lt;td id="uh-25" width="33%"&gt;숨어있는 새로운 유저 수용, 매출증대 가능성 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="uh-27"&gt;&lt;br /&gt;&lt;td id="uh-28" width="33%"&gt;기타 웹표준 순수 device(iphone, PSP, XBox...) &lt;/td&gt;&lt;br /&gt;&lt;td id="uh-210" style="text-align: center;" width="33%"&gt;X &lt;/td&gt;&lt;br /&gt;&lt;td id="uh-212" width="33%"&gt;숨어있는 새오운 유저 수용, 매출증대 가능성 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="o0642"&gt;1.8 Mobile Device에서 결제 demo&lt;/h2&gt;&lt;ul id="dw7s1"&gt;&lt;li id="li811"&gt;LGT 아르고 via OZ Service : &lt;a id="ckpd" href="http://kr.youtube.com/watch?v=aPFSvEVEnLw"&gt;http://kr.youtube.com/watch?v=aPFSvEVEnLw&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li id="l9vs"&gt;PayGate Payment flow : &lt;a id="uqv-" title="http://docs.google.com/a/paygate.net/Doc?docid=dhm28v4q_1634dfbqbvdq" href="http://docs.google.com/a/paygate.net/Doc?docid=dhm28v4q_1634dfbqbvdq"&gt;http://docs.google.com/a/paygate.net/Doc?docid=dhm28v4q_1634dfbqbvdq&lt;/a&gt; &lt;/li&gt;&lt;li id="l9vs0"&gt;iPod touch 결제 : &lt;a id="ur4g" title="http://video.google.com/videoplay?docid=3754602460068350773" href="http://video.google.com/videoplay?docid=3754602460068350773" target="_blank"&gt;http://video.google.com/videoplay?docid=3754602460068350773&lt;/a&gt;&lt;/li&gt;&lt;li id="dw7s2"&gt;iPhone : &lt;a id="is9o" title="http://kr.youtube.com/watch?v=HgUkpHiHH2w" href="http://kr.youtube.com/watch?v=HgUkpHiHH2w" target="_blank"&gt;http://kr.youtube.com/watch?v=HgUkpHiHH2w&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div id="holm0"&gt;&lt;br /&gt;&lt;h2 id="o0643"&gt;1.9 지불결제분야의 웹표준 활성화를 위한 요건&lt;br /&gt;&lt;/h2&gt;&lt;div id="utcp0"&gt;&lt;table id="v.ck" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="utcp1"&gt;&lt;tr id="utcp2"&gt;&lt;br /&gt;&lt;td id="utcp3" width="50%"&gt;&lt;p id="k0l45" align="center"&gt;사업적 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="utcp5" style="text-align: left;" width="50%"&gt;&lt;p id="k0l46"&gt;매우 매력적 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="utcp7"&gt;&lt;br /&gt;&lt;td id="utcp8" width="50%"&gt;&lt;p id="r0yy0" align="center"&gt;기술적 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="utcp10" width="50%"&gt;제약 없음. &lt;/td&gt;&lt;/tr&gt;&lt;tr id="utcp12"&gt;&lt;br /&gt;&lt;td id="utcp13" width="50%"&gt;&lt;p id="r0yy1" align="center"&gt;제도적 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="utcp15" width="50%"&gt;공인인증서 의무사용 개인보안프로그램 의무사용 기타등등. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1 id="o0644"&gt;2. 지불결제 및 보안에 대한 이해 &lt;/h1&gt;&lt;h2 id="o0645"&gt;2.1 보안방식의 변화 필요&lt;/h2&gt;&lt;div id="btrb0"&gt;&lt;table id="z6d9" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="btrb1"&gt;&lt;tr id="btrb2"&gt;&lt;br /&gt;&lt;td id="btrb3" width="50%"&gt;&lt;p id="r0yy2" align="center"&gt;현재 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="btrb5" width="50%"&gt;&lt;p id="r0yy3" align="center"&gt;희망사항 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="btrb7"&gt;&lt;br /&gt;&lt;td id="btrb8" width="50%"&gt;보안당국이 국민 개개인의 보안을 모두 책임지려는 불가능한 자세&lt;br /&gt;&lt;div id="y0d2" style="text-align: center;"&gt;&lt;span id="y0d20"  style="font-size:180%;"&gt;&lt;b id="yd04"&gt;국가가 전국민을 보호&lt;/b&gt;&lt;/span&gt; &lt;/div&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="btrb10" width="50%"&gt;&lt;span id="jvjy0" style="color: rgb(0, 0, 255);"&gt;&lt;b id="xgkw0"&gt;&lt;u id="xgkw1"&gt;개인의 선택권(자율성, 권한)을 존중하는 방향으로 개선 필요&lt;/u&gt;&lt;/b&gt;&lt;/span&gt; 국가의 보호도 필요하지만 내 PC를 내가 보호할 수 있도록 개인의 선택권 존중.&lt;br /&gt;&lt;div id="pso1" style="text-align: center;"&gt;&lt;span id="pso10"  style="font-size:180%;"&gt;&lt;b id="pso11"&gt;국가가 전국민을 보호 + 자신을 내가 추가로 보호&lt;/b&gt;&lt;/span&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; * 전자금융거래법 시행세칙 29조 2항 3절 : 전자금융업자에게 국민 개개인의 이용자 PC에 프로그램을 설치하도록 요구함. 본질적으로 이용자의 동의 및 허용이 있어야 가능한 조항&lt;br /&gt;&lt;div id="pvjw" style="padding: 1em 0pt; text-align: center;"&gt;&lt;img id="hp2c0" style="width: 571px; height: 46px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1569gmcnjs48_b" /&gt;&lt;br /&gt;&lt;div id="wi13" style="padding: 1em 0pt; text-align: center;"&gt;&lt;img id="g_gs" style="width: 548px; height: 482px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1644zff84c4c_b" /&gt;&lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;h2 id="k1hh0"&gt;2.2 사용자에 대한 관점 변화 필요&lt;/h2&gt;&lt;div id="t7u_0"&gt;&lt;table id="fvz0" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="t7u_1"&gt;&lt;tr id="t7u_2"&gt;&lt;br /&gt;&lt;td id="t7u_3" width="50%"&gt;&lt;p id="r0yy4" align="center"&gt;현행 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="t7u_5" width="50%"&gt;&lt;p id="r0yy5" align="center"&gt;희망사항 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="t7u_7"&gt;&lt;br /&gt;&lt;td id="t7u_8" width="50%"&gt;사용자는 무지하고 피동적이고 잠재적인 범죄자이다. &lt;/td&gt;&lt;br /&gt;&lt;td id="t7u_12" width="50%"&gt;사용자는 똑똑하고 능동적이고 선량하다 ==&amp;gt; &lt;b id="m.eq"&gt;개인의 선택권 존중해야함&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="ro9o0"&gt;2.3 전자금융거래와 전자서명법의 공인인증서&lt;/h2&gt;&lt;div id="dm6s0"&gt;&lt;div id="pbcf0"&gt;&lt;div id="x7q30"&gt;&lt;table id="dfg1" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="x7q31"&gt;&lt;tr id="x7q32"&gt;&lt;br /&gt;&lt;td id="x7q33" width="33%"&gt;&lt;p id="r0yy6" align="center"&gt;구분 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="x7q35" width="33%"&gt;&lt;p id="r0yy7" align="center"&gt;전자금융거래법 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="x7q37" width="33%"&gt;&lt;p id="r0yy8" align="center"&gt;전자서명법 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="x7q39"&gt;&lt;br /&gt;&lt;td id="x7q310" width="33%"&gt;공인 전자서명/서명검증 &lt;/td&gt;&lt;br /&gt;&lt;td id="x7q312" width="33%"&gt;요구됨 &lt;/td&gt;&lt;br /&gt;&lt;td id="x7q314" width="33%"&gt;요구됨 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="rsn80"&gt;&lt;br /&gt;&lt;td id="rsn81" width="33%"&gt;데이터 암복호화 &lt;/td&gt;&lt;br /&gt;&lt;td id="rsn83" width="33%"&gt;요구됨 &lt;/td&gt;&lt;br /&gt;&lt;td id="rsn85" width="33%"&gt;요구되지 않음. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;/div&gt;==&amp;gt; 데이터 암복호화와 서명 /서명검증의 명확한 분리 필요 ==&amp;gt; 현재는 전자금융거래시 사용되는 공인인증서가 사실상 데이터 암복호화를 포함하여 사용.&lt;br /&gt;&lt;h1 id="ro9o1"&gt;3. 전자서명법과 공인인증서 &lt;/h1&gt;&lt;h2 id="ro9o2"&gt;3.1 인감제도와 공인인증서 비교&lt;/h2&gt;&lt;div id="bl4m0"&gt;&lt;table id="v1tm" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="bl4m1"&gt;&lt;tr id="bl4m2"&gt;&lt;br /&gt;&lt;td id="bl4m3" width="33%"&gt;&lt;p id="krdf0" align="center"&gt;구분 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="bl4m5" width="33%"&gt;&lt;p id="krdf1" align="center"&gt;인감제도 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="bl4m7" width="33%"&gt;&lt;p id="krdf2" align="center"&gt;공인인증서 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="bl4m9"&gt;&lt;br /&gt;&lt;td id="bl4m10" width="33%"&gt;취지 &lt;/td&gt;&lt;br /&gt;&lt;td id="bl4m12" width="33%"&gt;오프라인에서 국민 누구든지 자유롭게 상대방의 신원 및 의사 확인 &lt;/td&gt;&lt;br /&gt;&lt;td id="bl4m14" width="33%"&gt;온라인에서 국민 누구든지 자유롭게 상대방의 신원 및 의사 확인 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="l5js0"&gt;&lt;br /&gt;&lt;td id="l5js1" width="33%"&gt;본인의 표시 &lt;/td&gt;&lt;br /&gt;&lt;td id="l5js3" width="33%"&gt;인감도장 &lt;/td&gt;&lt;br /&gt;&lt;td id="l5js5" width="33%"&gt;공인인증서 Private Key &lt;/td&gt;&lt;/tr&gt;&lt;tr id="tv4x0"&gt;&lt;br /&gt;&lt;td id="tv4x1" width="33%"&gt;본인의 표시에 대한 제3자 증명 &lt;/td&gt;&lt;br /&gt;&lt;td id="tv4x3" width="33%"&gt;인감증명서 &lt;/td&gt;&lt;br /&gt;&lt;td id="tv4x5" width="33%"&gt;공인인증서 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="f06l0"&gt;&lt;br /&gt;&lt;td id="f06l1" width="33%"&gt;본인의사 표시 &lt;/td&gt;&lt;br /&gt;&lt;td id="f06l3" width="33%"&gt;인감 날인 &lt;/td&gt;&lt;br /&gt;&lt;td id="f06l5" width="33%"&gt;공인 전자서명 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="xz4w0"&gt;&lt;br /&gt;&lt;td id="xz4w1" width="33%"&gt;신원확인 &lt;/td&gt;&lt;br /&gt;&lt;td id="xz4w3" width="33%"&gt;인감증명서 대조 &lt;/td&gt;&lt;br /&gt;&lt;td id="xz4w5" width="33%"&gt;공인전자서명 서명검증 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="xz4w7"&gt;&lt;br /&gt;&lt;td id="xz4w8" width="33%"&gt;누구나 자유롭게 &lt;/td&gt;&lt;br /&gt;&lt;td id="xz4w10" width="33%"&gt;날인하고 대조 &lt;/td&gt;&lt;br /&gt;&lt;td id="xz4w12" width="33%"&gt;서명하고 검증 불가능 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="xz4w14"&gt;&lt;br /&gt;&lt;td id="xz4w15" width="33%"&gt;어떠한 영역에 대해서도 &lt;/td&gt;&lt;br /&gt;&lt;td id="xz4w17" width="33%"&gt;적용 &lt;/td&gt;&lt;br /&gt;&lt;td id="xz4w19" width="33%"&gt;불가능 (금융거래등에만 제한적 사용) &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="ro9o3"&gt;3.2 전자서명법상의 공인인증기관의 의무 &lt;/h2&gt;- 전자서명 가입자 설비 제공 의무 : 전자서명 생성을 위한 소프트웨어 제공 - 서명검증을 위한 쉬운 수단 제공 의무 : 전자서명 검증을 위한 쉬운 수단 제공&lt;br /&gt;&lt;h2 id="mmzw0"&gt;3.3 공인인증기관이 가입자 설비를 제공하면 기존 보안업체들은 모두 다 망하는가?&lt;/h2&gt;&lt;div id="tnpu0"&gt;&lt;table id="bvm1" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="tnpu1"&gt;&lt;tr id="tnpu2"&gt;&lt;br /&gt;&lt;td id="tnpu3" width="50%"&gt;&lt;p id="krdf3" align="center"&gt;현재 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="tnpu5" width="50%"&gt;&lt;p id="krdf4" align="center"&gt;희망사항 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="tnpu7"&gt;&lt;br /&gt;&lt;td id="tnpu8" width="50%"&gt;아주 많은 업체들(공인인증기관 포함)이 기초적인 공인인증서 전자서명, 서명검증 소프트웨어 반복하여 제작 =&amp;gt; 리소스 낭비 &lt;/td&gt;&lt;br /&gt;&lt;td id="tnpu10" width="50%"&gt;6개 공인인증기관이 검증된 가입자 설비 제공, 기존보안업체들은 좀더 창의적인 업무에 집중가능(데이터 암복호화, 키관리, 기타 응용 서비스 분야) 기존 보안업체뿐만 아니라 다양한 사업체들이 참여로 인한 활성화 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="g4510"&gt;&lt;br /&gt;&lt;td id="g4511" width="50%"&gt;공인전자서명/서명검증을 할 수 있는 소프트웨어를 만들기 위해서는 돈이 많거나 기술이 뛰어나거나 시간이 아주 많아야함. &lt;/td&gt;&lt;br /&gt;&lt;td id="g4513" width="50%"&gt;구멍가게 쇼핑몰 아저씨도 이용가능 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1 id="ctoo0"&gt;4. 웹표준 지불결제처리를 위한 기술적/제도적 대안 &lt;/h1&gt;&lt;h2 id="ctoo1"&gt;4.1 주요 이슈 및 대안 요약&lt;/h2&gt;&lt;div id="qa6v0"&gt;&lt;table id="wflh" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="qa6v1"&gt;&lt;tr id="qa6v2"&gt;&lt;br /&gt;&lt;td id="qa6v3" width="33%"&gt;&lt;p id="krdf5" align="center"&gt;구분 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="qa6v5" width="33%"&gt;&lt;p id="krdf6" align="center"&gt;현행 &lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;td id="qa6v7" width="33%"&gt;&lt;p id="krdf7" align="center"&gt;대안 &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="qa6v9"&gt;&lt;br /&gt;&lt;td id="qa6v10" width="33%"&gt;키보드보안 &lt;/td&gt;&lt;br /&gt;&lt;td id="qa6v12" width="33%"&gt;ActiveX Control 자동설치 &lt;/td&gt;&lt;br /&gt;&lt;td id="qa6v14" width="33%"&gt;OnScreen Keyboard &lt;/td&gt;&lt;/tr&gt;&lt;tr id="n2lp0"&gt;&lt;br /&gt;&lt;td id="n2lp1" width="33%"&gt;개인보안프로그램(방화벽, 안티바이러스) &lt;/td&gt;&lt;br /&gt;&lt;td id="n2lp3" width="33%"&gt;ActiveX Control 자동설치 &lt;/td&gt;&lt;br /&gt;&lt;td id="n2lp5" width="33%"&gt;유저가 능동적으로 사전 설치, 기설치 유저는 추가설치 없이 진행허용 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="tesf0"&gt;&lt;br /&gt;&lt;td id="tesf1" width="33%"&gt;공인인증서 &lt;/td&gt;&lt;br /&gt;&lt;td id="tesf3" width="33%"&gt;ActiveX Control 가입자설비 &lt;/td&gt;&lt;br /&gt;&lt;td id="tesf5" width="33%"&gt;- 사용안함(예외규정 준용) - Java Applet (KLDP OpenSigner) - XPCOM (전자정부) - 신용카드 금액인증 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="ctoo2"&gt;4.2 키보드보안 방안 &lt;/h2&gt;- &lt;u id="xgkw2"&gt;유저가 원하는 경우 사용하지 않고 진행가능하도록 선택권 부여해야함. (시행세칙 29조 기 명시)&lt;/u&gt; - Auto Form Filler 활성화 - OnScreen keyboard : 광범위하게 사용되는 검증된 방식, 국내 다수 금융기관에서 이용 - Smart Card등 PKCS#11 device이용한 보완 - 기타 : http://en.wikipedia.org/wiki/Keystroke_logging 참조  *국민은행 온스크린 키보드 보안 적용 화면&lt;br /&gt;&lt;div id="r0ok" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="v-gc" style="width: 632px; height: 435px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1645g9c83scc_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="ctoo3"&gt;4.3 개인보안프로그램 &lt;/h2&gt;- &lt;u id="xgkw3"&gt;유저가 원하는 경우 사용하지 않고 진행가능하도록 선택권 부여해야함. (시행세칙 29조 기 명시)&lt;/u&gt; - 유저가 능동적으로 사전 설치할 수 있도록 프로그램 목록 제시  * 페이게이트의 경우&lt;br /&gt;&lt;div id="p3y." style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="c7xk" style="width: 403px; height: 402px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1646ffdvvccm_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="ctoo4"&gt;4.4 공인인증서 사용예외 (시행세칙 31조) &lt;/h2&gt;- &lt;span class="text" id="zr7s1"&gt;본인 계좌에 대한 조회 업무 - &lt;/span&gt;&lt;span class="text" id="zr7s12"&gt;전화, CD/ATM 등과 같이 공인인증서의 설치·운용이 불가능한 수단을 이용한 전자금융거래 - &lt;/span&gt;&lt;span class="text" id="zr7s23"&gt;등록금, 원서접수비 등 본인확인이 가능하고 입금계좌가 지정되어 있는 경우 - &lt;/span&gt;&lt;span class="text" id="zr7s34"&gt;전자상거래에서 지급결제로서 30만원 미만의 신용카드 결제 또는 온라인 계좌이체 - &lt;/span&gt;&lt;span class="text" id="zr7s45"&gt;전자화폐, 선불전자지급수단을 온라인상에서 사용하는 경우 - &lt;/span&gt;&lt;span class="text" id="zr7s56"&gt;금융기관 등이 범위를 정하여 공인인증서 적용을 제외할 것을 감독원장에게 요청하고 감독원장이 이를 승인하는 경우  &lt;/span&gt;&lt;br /&gt;&lt;h2 id="iax-0"&gt;&lt;span class="text" id="l9vs1"&gt;4.5 신용카드 금액인증&lt;/span&gt; &lt;/h2&gt;&lt;h2 id="iax-1"&gt;&lt;/h2&gt;&lt;span class="text" id="l9vs2"&gt;- 이용자(페이게이트도 이용자임)의 자유로운 창의력을 저해하지 않았을때 도출될 수 있는 결과물의 한 예.&lt;br /&gt;- 시행세칙 31조의 "본인 계좌에 대한 조회업무"에 대한 공인인증서 적용예외 규정을 기반으로 공인인증서를 사용하지 않음.&lt;br /&gt;- 공인인증서 미사용시 발생할 수 있는 신원확인 요구사항을  "신용카드 금액인증"이라는 기술로 보완&lt;br /&gt;&lt;div id="jaau0"&gt;&lt;br /&gt;&lt;table id="khnx" style="color: rgb(0, 0, 0);" border="1" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody id="jaau1"&gt;&lt;tr id="jaau2"&gt;&lt;br /&gt;&lt;td id="jaau3" width="100%"&gt;&lt;span class="text" id="l9vs3"&gt;[신용카드 금액인증 50만원 결제예시] 1) 서버에서 1회용 비밀번호 생성로직으로 난수 발생하여 신용카드 거래 1차승인 (237698원) 2) 승인금액을 고객에게 안내하지는 않음. 3) 고객은 자신의 카드발행사에서 승인금액이 얼마인지 확인 (다양한 확인방식 병행, SMS문자, 웹사이트조회, 팩스조회, 전화조회, 방문조회 등) 4) 승인금액을 인증코드로 입력하면 서버에서 1차 승인금액과 비교 5) 나머지 잔액 추가승인하여 결제 완료&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; 신용카드 금액인증에 관한 보다 자세한 내용은 아래 URL 참조 &lt;/span&gt;&lt;a class="tabcontent" id="publishedDocumentUrl" href="http://docs.google.com/a/paygate.net/Doc?id=dhm28v4q_1631cd5kj9dk" target="_blank"&gt;&lt;/a&gt;&lt;a id="e72f" title="http://docs.google.com/a/paygate.net/Doc?id=dhm28v4q_1631cd5kj9dk" href="http://docs.google.com/a/paygate.net/Doc?id=dhm28v4q_1631cd5kj9dk"&gt;http://docs.google.com/a/paygate.net/Doc?id=dhm28v4q_1631cd5kj9dk&lt;/a&gt;&lt;br /&gt;&lt;p id="udd60"&gt; &lt;/p&gt;&lt;br /&gt;&lt;h2 id="l9vs4"&gt;4.6 ActiveX Control이용방식 개선&lt;/h2&gt;&lt;p id="l9vs5"&gt;- ActiveX Control 사용이 꼭 필요한 경우가 여전히 존재함&lt;/p&gt;- 꼭 ActiveX를 사용해야한다면 아래와 같이 사용방식을 개선&lt;br /&gt;&lt;br /&gt;&lt;div id="fhfx"&gt;&lt;table id="xhlc" bgcolor="#ffffff" border="1" bordercolor="#000000" cellpadding="1" cellspacing="0" width="100%"&gt;&lt;tbody id="fhfx0"&gt;&lt;tr id="fhfx1"&gt;&lt;br /&gt;&lt;td id="fhfx2" style="text-align: center;" width="50%"&gt;현행 &lt;/td&gt;&lt;br /&gt;&lt;td id="fhfx4" style="text-align: center;" width="50%"&gt;개선 &lt;/td&gt;&lt;/tr&gt;&lt;tr id="fhfx6"&gt;&lt;br /&gt;&lt;td id="fhfx7" width="50%"&gt;- Page Head에 걸어버리거나 &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &amp;lt;OBJECT ....&amp;gt;...&amp;lt;/OBJECT&amp;gt; &amp;lt;/head&amp;gt;  - 사이트 전역에 반영되는 Hidden frame에 넣어버리면  IE가 아닌 브라우저들은 접근자체가 불가해짐.  &lt;/td&gt;&lt;br /&gt;&lt;td id="fhfx9" width="50%"&gt;- ActiveX가 꼭 필요할때만 DIV tag 안에서 선언하여 이용. &amp;lt;div id=forActiveX&amp;gt;&amp;lt;/div&amp;gt;  document.getElementById('forActiveX').innerHTML = '&amp;lt;OBJECT...&amp;gt;...&amp;lt;/OBJECT&amp;gt;';  - 이용후에는 Div tag내용 삭제 document.getElementById('forActiveX').innerHTML = ''; &lt;/td&gt;&lt;/tr&gt;&lt;tr id="g9w4"&gt;&lt;br /&gt;&lt;td id="g9w40" width="50%"&gt;ActiveX를 이용하여 Client와 Server간의 세션 보호 &lt;/td&gt;&lt;br /&gt;&lt;td id="g9w42" width="50%"&gt;SSL이용 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-523645549334415338?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/523645549334415338/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=523645549334415338' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/523645549334415338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/523645549334415338'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/12/blog-post.html' title='웹표준과 지불결제'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-7171801659346260398</id><published>2008-12-17T18:36:00.001-08:00</published><updated>2008-12-17T18:36:01.563-08:00</updated><title type='text'>Latest Browser MarketShare</title><content type='html'>&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;h1&gt;최신 브라우저 마켓쉐어&lt;/h1&gt;&lt;br&gt;netapplications 유료 계정 만료가 얼마안남아서&lt;br&gt;최신 브라우저 마켓쉐어 자료를 뽑아보았습니다.&lt;br&gt;&lt;br&gt;자료 발췌시기 : 2008년 12월 18일&lt;br&gt;&lt;br&gt;&lt;h2&gt;1. 전세계 브라우저 마켓쉐어&lt;/h2&gt;MSIE가 69%입니다.&lt;br&gt;Firefox가 20%를 넘어섰고 Safari도 많이 늘었군요. &lt;br&gt;&lt;div id="vw34" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 807px; height: 495px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2098dxkfvxdf_b"&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;2. 대한민국 브라우저 마켓쉐어&lt;/h2&gt;MSIE가 90%로 줄었습니다.&lt;br&gt;&lt;div id="eu67" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 805px; height: 556px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2099g5j2pxcv_b"&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;3. 전세계 브라우저 점유율 변화추이입니다.&lt;/h2&gt;IE는 계속 떨어지고 다른 브라우저는 계속 올라가는군요.&lt;br&gt;국가별 추이도 뽑아볼수 있으면 좋은데 그건 아직 없습니다.&lt;br&gt;&lt;div id="zqpg" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 807px; height: 476px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2100dg88nffn_b"&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;4. 전세계 MSIE 국가별 점유율 순위입니다&lt;/h2&gt;대한민국이 드디어 소말리아에게 MSIE 점유율 1위를 내줬습니다.(ㅠㅠ)&lt;br&gt;&lt;div id="mrrz" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 805px; height: 785px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2101c73fs5g3_b"&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt;5. 전세계 OS 통계입니다.&lt;/h2&gt;&lt;div id="nk29" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 806px; height: 605px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_2102gdwmz9d3_b"&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-7171801659346260398?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/7171801659346260398/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=7171801659346260398' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7171801659346260398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/7171801659346260398'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/12/latest-browser-marketshare.html' title='Latest Browser MarketShare'/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-5057770118925128197</id><published>2008-06-18T06:49:00.000-07:00</published><updated>2010-01-04T02:13:18.138-08:00</updated><title type='text'></title><content type='html'>&lt;h1 id="ogdn"&gt;CreditCard Amount Authentication&lt;/h1&gt;&lt;h1 id="ogdn0"&gt;신용카드 금액인증.&lt;/h1&gt;&lt;br /&gt;&lt;h2 id="ogdn1"&gt;1. Basic Concept&lt;/h2&gt;&lt;ul id="eucv"&gt;&lt;li id="eucv0"&gt;Credit Card Amount Authentication authenticates card holder with the approval amount.&lt;/li&gt;&lt;li id="eucv1"&gt;The AA(Amount Authentication) server generate random unique amount (AA code) and get the approval with it.&lt;/li&gt;&lt;li id="eucv2"&gt;The card holder have to find the approved amount from his card issuer&lt;/li&gt;&lt;li id="eucv3"&gt;If the amount (submitted from card holder) is same to AA code, the authentiation is  completed.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2 id="ogdn2"&gt;2. Basic Concept Flow&lt;/h2&gt;&lt;div id="bo1p" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img id="ii300" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1632c6tsbdhk_b" style="height: 606px; width: 935px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 id="ogdn3"&gt;2.1 Basic Concept Flow2&lt;/h2&gt;&lt;div id="i24z" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img height="205" id="gxf1" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1633dfw6v5hh_b" style="height: 600px; width: 935px;" width="320" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id="rnez"&gt;3. Benefit&lt;/h2&gt;&lt;ul id="vfex"&gt;&lt;li id="vfex0"&gt;&lt;br /&gt;&lt;h3 id="dw7y"&gt;It’s Easy and Strong&lt;/h3&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul id="vfex1"&gt;&lt;li id="vfex2"&gt;It is very easy to understand and implement&lt;/li&gt;&lt;li id="vfex3"&gt;But it’s also strong&lt;/li&gt;&lt;/ul&gt;&lt;li id="vfex4"&gt;&lt;br /&gt;&lt;h3 id="dw7y0"&gt;Issuer independent&lt;/h3&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul id="vfex5"&gt;&lt;li id="vfex6"&gt;AA mechanism covers 100% card issuers &lt;/li&gt;&lt;li id="vfex7"&gt;even if they are not yet ready.&lt;/li&gt;&lt;/ul&gt;&lt;li id="vfex8"&gt;&lt;br /&gt;&lt;h3 id="dw7y1"&gt;Platform independent&lt;/h3&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul id="vfex9"&gt;&lt;li id="vfex10"&gt;With the minimal authentication value (Amount)&lt;/li&gt;&lt;li id="vfex11"&gt;AA works on any platforms (PC, Mac, Wireless Phone, etc)&lt;/li&gt;&lt;/ul&gt;&lt;li id="vfex12"&gt;&lt;br /&gt;&lt;h3 id="dw7y2"&gt;Fraud free&lt;/h3&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul id="vfex13"&gt;&lt;li id="vfex14"&gt;AA mechanism is strong enough to down fraud rate to 0%&lt;br id="ii304" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2 id="dw7y3"&gt;4. General Information about AA&lt;/h2&gt;&lt;ul id="hgg:0"&gt;&lt;li id="hgg:1"&gt;AA operator have to meet the PCIDSS compliant&lt;/li&gt;&lt;li id="hgg:2"&gt;Initiated from PayGate Inc.&lt;/li&gt;&lt;ul id="qg8h"&gt;&lt;li id="hgg:2"&gt;PayGate Inc., Seoul, Korea&lt;br id="qg8h0" /&gt;www.paygate.net&lt;/li&gt;&lt;/ul&gt;&lt;li id="hgg:2"&gt;If any questions, send mail to Mountie Lee (mountie@paygate.net)&lt;br id="eucv5" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-5057770118925128197?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/5057770118925128197/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=5057770118925128197' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/5057770118925128197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/5057770118925128197'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/06/creditcard-amount-authentication.html' title=''/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-4961517626959181610</id><published>2008-01-30T07:50:00.000-08:00</published><updated>2008-12-18T00:22:00.594-08:00</updated><title type='text'></title><content type='html'>&lt;h1 class="documentFirstHeading"&gt;Cross-Domain 문제 해결 방법&lt;/h1&gt;              &lt;div&gt;      &lt;div class="documentByLine"&gt;                                           by           &lt;a href="http://docs.paygate.net/author/mountie"&gt;이동산&lt;/a&gt;                       —                    최종 수정일:         2006-04-25 10:53                                                              &lt;/div&gt;  &lt;/div&gt;          &lt;p class="documentDescription"&gt;Cross-Domain 문제 해결방법에 대한 조사결과&lt;/p&gt;                            &lt;div class="plain"&gt;             &lt;p&gt;AJAX를 살펴보면서 Cross-Domain 제한의 문제점에 봉착함.&lt;/p&gt; &lt;p&gt;Cross-Domain의 Pattern은 아래 3가지로 나눠볼 수 있음.&lt;/p&gt; &lt;p&gt;1. from one single domain to many targets&lt;/p&gt; &lt;p&gt;2. from many sources to one single target&lt;/p&gt; &lt;p&gt;3. from many sources to many targets.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;지금 고민하는것은 2번항목임.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;b&gt;[지금까지 찾은 해결방법]&lt;/b&gt;&lt;/p&gt; &lt;p&gt;(1) Proxy Server 이용 : 최초 시도한 방법인데 이건 사실상 위 1번 항목에 해당하는것으로 적당하지 않고 또한 cookie나 session문제등이 있어서 몇번 사용해보다고 취소함.&lt;/p&gt; &lt;p&gt;(2) SignedJavaScript : Netscape계열에서만 되며 JavaScript에 대한 전자서명시 서명된 javascript는 cross-domain 제약을 극복하여 자유롭게 다른 사이트와 통신가능함. MSIE에서는 동작하지 않는다는 문제점이 있고 아직 테스트해보지 못함. &lt;/p&gt; &lt;p&gt;(3) Flash4AJAX : 지금까지 찾은 최상의 방법인데 ActiveX/Plugin을 사용하기는 하지만 광범위하게 배포된 Flash를 이용하여 구현함으로 Cross-Browser문제는 쉽게 극복가능함. 그러나 Flash에 대해서 잘 모르기 때문에 좀더 살펴보고 있음.&lt;/p&gt; &lt;p&gt;(4) JSON + WebServices : 야후 API에서 사용하고 있는데 Target서버에서 JSON Format으로 Output을 뿌려줘야하는 문제 있음. 아직 테스트 못함.&lt;/p&gt; &lt;p&gt;(5) ActiveX : 어떻게 보면 가장 손쉬운 방법인데 일단 하나 만들어 사용중이기는 하지만 Cross-Browser 문제해결에는 적절치 못함.&lt;/p&gt; &lt;p&gt;(6) Windows TrustedZone 등록 : Source Domain상의 유저가 해당 Source Domain을 Windows TrustedZone에 등록해버리면 어디든 나갈 수 있는데 사실 말이 안됨. 보안상 엄청 위험하기도함.&lt;/p&gt; &lt;p&gt;(7) IFrame 이용 : iframe이용하면 일단 AJAX Cross-Domain 문제는 해결되지만 frame간의 cross-domain 문제가 새롭게 대두됨. cross-domain cookie등 Security issue가 꾸준하게 제기되어온 사항임. 일단 target server로 Get Method로 데이터를 넘기기만 하는 형태로는 쓸만함. (결과수신은 아주 어려움)&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;b&gt;[ 최종 선택한 방법 : JSON ]&lt;/b&gt;&lt;/p&gt; &lt;p&gt;JSON Format으로 결과 전달하고 Callback method로 해당 결과 수신하는 방법이 정답임.&lt;/p&gt; &lt;p&gt;우선 단점 : Request시 GET Method에 해당하는 정보만 전달가능하므로 정보전달 양이 한계가 있음. 그리고 미동기 통신이 안되는 문제점 있음.&lt;/p&gt; &lt;p&gt;그리고 장점 : 대용량 Response를 받을 수 있음. 사실상 브라우저 및 네트웍 성능에 달려 있음. 아무런 ActiveX나 Plugin이 필요치 않음. Cross-Browser 사실상 지원. JavaScript Tag가 먹히는지 여부 실제 확인 필요&lt;/p&gt; &lt;p&gt;(Concept)&lt;/p&gt; &lt;p&gt;1) Client에서 JSon Request URL 생성&lt;/p&gt; &lt;p&gt;2) Javascript createElement tag로 script 객체 생성&lt;/p&gt; &lt;p&gt;3) DOM에 해당 객체 추가하여 실제 반영. 객체추가시 즉각 Remote Server의 CGI/JSP/PHP 호출&lt;/p&gt; &lt;p&gt;4) Remote Server에서는 Request에 따른 업무 처리 후 결과를 callback method로 둘러싼 JSON Format으로 생성하여 화면 송출&lt;/p&gt; &lt;p&gt;5) Browser에서는 결과가 실제로는 script tag 내에 위치하면서 callback method를 호출한것과 동일한 효과발생.&lt;/p&gt; &lt;p&gt;6) callback method내에서 필요한 client측의 업무 처리.&lt;/p&gt; &lt;p&gt;JSON은 AJAX 통신은 아님 사실상 Dynamic Script Creation에 해당되며 script creation시 Remote Server의 script를 불러오는 형태임.&lt;/p&gt; &lt;p&gt;실제 업무에서 JSON과 AJAX를 적절히 섞어 쓸 필요 있음. &lt;br&gt;&lt;/p&gt;         &lt;/div&gt;      &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-4961517626959181610?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/4961517626959181610/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=4961517626959181610' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/4961517626959181610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/4961517626959181610'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/01/cross-domain-by-2006-04-25-1053-cross.html' title=''/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-454344194403730457.post-5120026790578087115</id><published>2008-01-30T07:43:00.000-08:00</published><updated>2008-01-30T07:44:55.423-08:00</updated><title type='text'></title><content type='html'>                                                                                    &lt;h1 style="text-align: center; font-family: Verdana;"&gt;   SAML을 이용한 SSO Service의 구현 &lt;/h1&gt;&lt;div style="text-align: right;"&gt;&lt;br&gt;이동산, Mountie Lee &lt;br&gt;mountie@paygate.net&lt;br&gt;&lt;/div&gt;&lt;br&gt; &lt;h1&gt;1. 개요&lt;/h1&gt;SAML은 웹 브라우저에서의 SSO문제를 해결하기 위해서 OASIS의 연구결과로 탄생하였다.&lt;div&gt;인트라넷 레벨에서의 SSO는 다양한 방식들이 이용되어왔고 구현에 있어서도 크게 문제될요소는 적다.&lt;/div&gt;&lt;div&gt;예를 들어 Cookie 기반의 SSO, LDAP기반의 SSO, 인증서 기반의 SSO등이 있다.&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;그러나 도메인간의 SSO 구현을 위한 방식은 통제할 수 없는 외부 환경을 포함하므로 통일된 하나의 표준방식이 필요하게 되었고&lt;/div&gt;&lt;div&gt;SAML은 이러한 도메인간의 SSO구현을 가능하게하는 XML 표준이다.&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;사용되는 용어에 대해서 알아보자.&lt;/div&gt;&lt;div&gt;SAML : Security Asserting Markup Language, http://en.wikipedia.org/wiki/SAML 참조&lt;/div&gt;&lt;div&gt;SSO : Single Sign On 하나의 일관된 인증방식으로 여러 서비스에 로그온할 수 있는 방법&lt;/div&gt;&lt;div&gt;ACS : Assertion Consumer Service, Identity Provider에 의하여 인증된 사용자에 대한 정보가 담긴 SAML response정보를 verify 하고 서비스를 제공할 수 있도록 포워딩 한다&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;SAML에는 3가지 중요한 구성원이 존재한다.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Service Provider : 서비스를 제공하는 주체&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;유저 : 서비스를 이용하는 사용자&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Identify Provider : 유저에 대한 인증을 담당하는 주체&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;SAML의 특징은 Cross domain상황에서 표준화된 방식으로 SSO를 구현할 수 있으면서 &lt;br&gt;Platform에 관계없이 다양한 환경에서 표준적인 방법으로 SSO 구현이 가능하다는 것이다.&lt;br&gt;실제 다양한 iPhone등 다양한 플랫폼에서 테스트해본 결과 잘 동작한다.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;2. SAML Basic Steps&lt;/h1&gt;&lt;div&gt;아래 그림은 Wikipedia에서 제시한 흐름도이다. &lt;br&gt;&lt;div id="zga6" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 660px; height: 453px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1357cg75pqgk"&gt;&lt;/div&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;Google에서도 아래 그림을 제시하고 있다.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="padding: 1em 0px; text-align: left;" id="u2pf"&gt;&lt;div id="r6v5" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 661px; height: 620px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_13582m6534gr"&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;각 단계별 과정을 설명하면 아래와 같다.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;1단계 : 유저는 서비스 제공자(Service Provider)에게 접근한다. (서비스 이용을 위하여)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;2단계 : 서비스 제공자는 SAMLRequest를 생성한다. 생성된 SAMLRequest은 XML format의 텍스트로 구성된다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;3단계 : 유저의 브라우저를 이용하여 인증 제공자(Identity Provider)로 Redirect 한다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;4단계 : 인증 제공자(Identity Provider)는 SAMLRequest를 파싱하고 유저인증을 진행한다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;5단계 : 인증제공자(Identity Provider)는 SAML Response를 생성한다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;6단계 : 인증제공자(Identity Provider)는 유저 브라우저를 이용하여 SAMLResponse data를 ACS로 전달한다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;7단계 : ACS는 Service Provider가 운영하게 되는데 SAMLResponse를 확인하고 실제 서비스 사이트로 유저를 Forwarding한다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;8단계 : 유저는 로그인에 성공하고 서비스를 제공받는다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;위 단계중 SAMLResponse가 중요한 역할을 하는데 Identity Provider로서 SAMLResponse에 대하여 전자서명하고 ACS가 전자서명을 검증하여 유효한 Response인지를 확신할 수 있게 된다.&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;Identity Provider는 자체적인 다양한 방식으로 유저인증을 진행할 수 있으며 서비스 제공자는 Identity Provider를 신뢰하여 인증의 전권을 Identity Provider에 의존하게 되어 Identity Provider의 신뢰 및 책임부분이 중요한 요소이다.&lt;/div&gt;&lt;div&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;3. SAML SSO 실제 구현&lt;/h1&gt;&lt;div&gt;SAML SSO를 실제 구현해가면서 어떻게 동작하는지 살펴보자.&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;h2&gt;3.1 사전 준비&lt;/h2&gt;&lt;div&gt;구현은 Service Provider로서의 단계와 Identity Provider로서의 단계를 모두 포함하여 Full Cycle을 순환할 수 있도록 하지만&lt;/div&gt;&lt;div&gt;실제로는 대부분 Service Provider나 Identity Provider의 역할중 어느 한 역할을 주로 하게 될것이다.&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;필요한 핵심 Library는 아래와 같다.&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;OpenSAML 2.0 Library&lt;/li&gt;&lt;ul&gt;&lt;li&gt;download from http://www.opensaml.org&lt;/li&gt;&lt;li&gt;OpenSAML 2.0은 JDK1.5에서 동작&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;xmldsig, xmlsec library, &lt;br&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;from sun java web services development pack, &lt;br&gt;&lt;/li&gt;&lt;li&gt;http://java.sun.com/webservices/downloads/previous/webservicespack.jsp&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;JDOM library&lt;/li&gt;&lt;ul&gt;&lt;li&gt;http://www.jdom.org&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;기타 apache commons의 유용한 Library들을 필요에 맞게 사용한다.&lt;br&gt;&lt;br&gt;&lt;h3&gt;RSA Keypair를 준비한다.&lt;/h3&gt;openssl을 이용한 keypair 생성 command&lt;br&gt;&lt;div&gt;&lt;table id="inmm" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;$ openssl genrsa -out sso_private.pem 1024&lt;br&gt;$ openssl rsa -in sso_private.pem -pubout -ourform DER -out sso_public.der&lt;br&gt;$ openssl pkcs8 -topk8 -inform PEM -outform DER -in sso_private.pem -out sso_private.der -nocrypt&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;생성된 2개의 파일은 sso_private.der, sso_public.der이다.&lt;br&gt;&lt;br&gt;한가지 주의할점은 sso_public.der은 우리가 통상적으로 알고 있는 인증서(certificate)가 아니다.&lt;br&gt;certifificate는 인증기관으로부터 public key의 유효성을 인정받은 경우에 인증기관의 전자서명이 첨부되어 발행되는데&lt;br&gt;여기서는 original rsa public key만으로 SSO를 구현한다.&lt;br&gt;&lt;br&gt;대신 신뢰성을 확보하기 위하여 identity provider의 public key는 신뢰성 있는 방식으로 service provider에게 전달되어야하며&lt;br&gt;이 전달과정이나 identity provider의 private key 관리에는 주의를 기울여야한다.&lt;br&gt;&lt;br&gt;SAML에서 이용하는 xmldsig spec이나 구현 사례를 봐도 인증서를 탑재하여 SAML SSO를 분명히 진행할 수 있다.&lt;br&gt;이 경우에는 identity provider의 public key를 특별한 방법으로 전달할 필요 없이&lt;br&gt;service provider는 신뢰할 수 있는 CA(Certificate Authority)가 보장하는 전자인증서를 확보하고 인증서 CRL 또는 OCSP checking등을 추가할 수 있을것이다.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;h2&gt;3.2 SAMLRequest 생성 및 redirect&lt;/h2&gt;&lt;div&gt;이 단계에서는 유저가 서비스 제공자의 사이트에 접속하고 SAML SSO 로그인을 진행하기 위해 SAMLRequest 생성 및 redirect의 과정을 설명한다.&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;h3&gt;3.2.1 ServiceProviderForm : 실제 유저가 최초로 접근하는 페이지이다. 여기서부터 시작&lt;br&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;table id="c62h" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 128);"&gt;&lt;font color="#000000" size="2"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 128, 0); font-family: 'Courier New'; font-size: 10px;"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;form&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;name=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"ServiceProviderForm"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt; &lt;span class="Apple-style-span" style="color: rgb(0, 128, 0); font-family: 'Courier New'; font-size: 10px;"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;action=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"https://api.paygate.net/t/sso/saml/CreateRequestServlet.jsp"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;method=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"post"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 128, 0);"&gt;  &lt;font color="#000000" size="2"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;input&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;type=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"hidden"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;name=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"loginForm"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;value=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"https://api.paygate.net/t/sso/saml/login_form.jsp"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 128, 0);"&gt;  &lt;font color="#000000" size="2"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;input&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;type=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"hideen"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;name=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"providerName"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;value=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"paygate.net"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 128, 0);"&gt;  &lt;font color="#000000" size="2"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;input&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;type=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"hidden"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;name=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"RelayState"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;value=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"https://api.paygate.net/t/sso/saml/result_view.jsp"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 128, 0);"&gt;  &lt;font color="#000000" size="2"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;input&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;type=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"hidden"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;name=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"acsURI"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;value=&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"https://api.paygate.net/t/sso/saml/ACS.jsp"&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 128);"&gt;&lt;font color="#000000" size="2"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;  &lt;span class="Apple-style-span" style="color: rgb(0, 0, 128); font-family: 'Courier New'; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;input&lt;/font&gt;&lt;/span&gt; &lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;type=&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"submit"&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;value=&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;"Sign On"&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0px; font-family: Courier New; font-variant: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 128);"&gt;&lt;font color="#000000" size="2"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 128); font-family: 'Courier New'; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;font class="Apple-style-span" face="Tahoma"&gt;&amp;lt;/form&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;   * loginForm : Identity Provider에 위치하는 인증을 위한 로그인 폼&lt;/div&gt;&lt;div&gt;   * providerName : 서비스를 제공하는 Service Provider Name&lt;/div&gt;&lt;div&gt;   * RelayState : ACS에서 인증을 마친후 최종적으로 Redirecting하게 되는 서비스 제공 페이지 URL&lt;/div&gt;&lt;div&gt;   * acsURI : Identity Provider가 보낸 SAMLResponse를 검증(Verify)하고 실제 서비스 제공사이트로 Forwarding하게 되는 URL&lt;/div&gt;&lt;div&gt;&lt;br class="webkit-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;3.2.2 CreateRequestServlet : SAMLRequst 데이터 생성 단계&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;먼저 Parameter를 받고&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String ssoURL = request.getParameter("loginForm");&lt;br&gt;    String providerName = request.getParameter("providerName");&lt;br&gt;     String RelayState = request.getParameter("RelayState");&lt;br&gt;     String acsURI = request.getParameter("acsURI");&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;table id="h265" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;   public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br&gt;            throws ServletException, IOException {&lt;br&gt;        String ssoURL = request.getParameter("loginForm");&lt;br&gt;        String providerName = request.getParameter("providerName");&lt;br&gt;        String RelayState = request.getParameter("RelayState");&lt;br&gt;        String acsURI = request.getParameter("acsURI");&lt;br&gt;        .....&lt;br&gt;    }&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SAMLRequest xml data를 생성&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String SAMLRequest = createAuthnRequest(acsURI, providerName);&lt;br&gt;&lt;div&gt;&lt;table id="sf3:" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    private String &lt;b&gt;createAuthnRequest&lt;/b&gt;(String acsURL, String providerName)&lt;br&gt;            throws SamlException {&lt;br&gt;        String filepath = getServletContext().getRealPath("t/sso/saml/templates/" + SAML_REQUEST_TEMPLATE);&lt;br&gt;        String authnRequest = Util.readFileContents(filepath);&lt;br&gt;        authnRequest = StringUtils.replace(authnRequest, "##PROVIDER_NAME##", providerName);&lt;br&gt;        authnRequest = StringUtils.replace(authnRequest, "##ACS_URL##", acsURL);&lt;br&gt;        authnRequest = StringUtils.replace(authnRequest, "##AUTHN_ID##", Util.createID());&lt;br&gt;        authnRequest = StringUtils.replace(authnRequest, "##ISSUE_INSTANT##", Util.getDateAndTime());&lt;br&gt;        return authnRequest;&lt;br&gt;    }&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Identity Provider로 redirect할 URL생성&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String redirectURL = computeURL(ssoURL, SAMLRequest, RelayState);&lt;br&gt;&lt;div&gt;&lt;table id="bz38" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    private String &lt;b&gt;computeURL&lt;/b&gt;(String ssoURL, String authnRequest,&lt;br&gt;            String RelayState) throws SamlException {&lt;br&gt;        StringBuffer buf = new StringBuffer();&lt;br&gt;        try {&lt;br&gt;            buf.append(ssoURL);&lt;br&gt;&lt;br&gt;            buf.append("?SAMLRequest=");&lt;br&gt;            buf.append(RequestUtil.encodeMessage(authnRequest));&lt;br&gt;&lt;br&gt;            buf.append("&amp;amp;RelayState=");&lt;br&gt;            buf.append(URLEncoder.encode(RelayState));&lt;br&gt;            return buf.toString();&lt;br&gt;        } catch (UnsupportedEncodingException e) {&lt;br&gt;            throw new SamlException(&lt;br&gt;                    "Error encoding SAML Request into URL: Check encoding scheme - "&lt;br&gt;                            + e.getMessage());&lt;br&gt;        } catch (IOException e) {&lt;br&gt;            throw new SamlException(&lt;br&gt;                    "Error encoding SAML Request into URL: Check encoding scheme - "&lt;br&gt;                            + e.getMessage());&lt;br&gt;        }&lt;br&gt;    }&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;CreateRequestServlet.java 구현 종합&lt;br&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;table id="y5rr" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;/*&lt;br&gt; * CreateRequestServlet&lt;br&gt; */&lt;br&gt;public class CreateRequestServlet extends HttpServlet {&lt;br&gt;&lt;br&gt;    private static final String SAML_REQUEST_TEMPLATE = "AuthnRequestTemplate.xml";&lt;br&gt;&lt;br&gt;    public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br&gt;            throws ServletException, IOException {&lt;br&gt;&lt;br&gt;        String returnPage = "&lt;b&gt;service_proc.jsp&lt;/b&gt;"; // 실제 forwarding수행할 JSP&lt;br&gt;        response.setHeader("Content-Type", "text/html; charset=UTF-8");&lt;br&gt;        response.setContentType("text/html; charset=UTF-8");&lt;br&gt;        &lt;br&gt;        // get PARAMETERS&lt;br&gt;        String ssoURL = request.getParameter("loginForm");&lt;br&gt;        String providerName = request.getParameter("providerName");&lt;br&gt;        String RelayState = request.getParameter("RelayState");&lt;br&gt;        String acsURI = request.getParameter("acsURI");&lt;br&gt;&lt;br&gt;        String SAMLRequest;&lt;br&gt;        String redirectURL;&lt;br&gt;&lt;br&gt;        try {&lt;br&gt;            // create SAMLRequest&lt;br&gt;            &lt;b&gt;SAMLRequest = createAuthnRequest(acsURI, providerName);&lt;/b&gt;&lt;br&gt;            request.setAttribute("authnRequest", SAMLRequest);&lt;br&gt;&lt;br&gt;            // compute URL to forward AuthnRequest to the Identity Provider&lt;br&gt;            &lt;b&gt;redirectURL = computeURL(ssoURL, SAMLRequest, RelayState);&lt;/b&gt;&lt;br&gt;            request.setAttribute("redirectURL", redirectURL);&lt;br&gt;&lt;br&gt;        } catch (SamlException e) {&lt;br&gt;            request.setAttribute("error", e.getMessage());&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        request.getRequestDispatcher(returnPage).include(request, response);&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;AuthnRequestTemplate.xml 참조&lt;br&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;table id="upd6" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br&gt;&amp;lt;samlp:AuthnRequest &lt;br&gt;    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"&lt;br&gt;    ID="##AUTHN_ID##" &lt;br&gt;    Version="2.0"&lt;br&gt;    IssueInstant="##ISSUE_INSTANT##"&lt;br&gt;    ProtocolBinding="urn:oasis:names.tc:SAML:2.0:bindings:HTTP-Redirect"&lt;br&gt;    ProviderName="##PROVIDER_NAME##"&lt;br&gt;    AssertionConsumerServiceURL="##ACS_URL##"/&amp;gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;3.2.3 service_proc.jsp : Identity Provider로 SAMLRequest를 forward&lt;/h3&gt; &lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;table id="eiqj" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&amp;lt;%@page import="net.paygate.saml.util.RequestUtil"%&amp;gt;&lt;br&gt;&amp;lt;%@page import="java.net.*"%&amp;gt;&lt;br&gt;&amp;lt;% &lt;br&gt;      String error = (String) request.getAttribute("error");&lt;br&gt;      String authnRequest = (String) request.getAttribute("authnRequest");&lt;br&gt;      String redirectURL = (String) request.getAttribute("redirectURL");&lt;br&gt;%&amp;gt;&lt;br&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt; &amp;lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&amp;gt;&amp;lt;title&amp;gt;SAML-based Single Sign-On Service &amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;% &lt;br&gt;    if (error != null) {&lt;br&gt;%&amp;gt;&lt;br&gt;        &amp;lt;body&amp;gt;&amp;lt;center&amp;gt;&amp;lt;font color="red"&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= error %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;p&amp;gt;&lt;br&gt;&amp;lt;%&lt;br&gt;    } else {&lt;br&gt;        if (authnRequest != null &amp;amp;&amp;amp; redirectURL != null) {        &lt;br&gt;%&amp;gt;&lt;br&gt;        &lt;b&gt;&amp;lt;body onload="document.location = '&amp;lt;%=redirectURL%&amp;gt;';return true;"&amp;gt;&lt;/b&gt;&lt;br&gt;          &amp;lt;h1 style="margin-bottom:6px"&amp;gt;Submitting login request to Identity provider&amp;lt;/h1&amp;gt;&lt;br&gt;     &amp;lt;%&lt;br&gt;       } else {&lt;br&gt;       %&amp;gt;&lt;br&gt;       &amp;lt;body&amp;gt;&lt;br&gt;          &amp;lt;center&amp;gt;&amp;lt;font color="red"&amp;gt;&amp;lt;b&amp;gt;no SAMLRequest or redirectURL&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;p&amp;gt;&lt;br&gt;          &amp;lt;%&lt;br&gt;       }&lt;br&gt;     }&lt;br&gt;     %&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;h2&gt;3.3 SAMLRequest를 받고 유저인증 진행 단계&lt;/h2&gt;이 단계는 Identity Provider에서 진행하게 된다.&lt;br&gt;유저인증은 각 Identity Provider별로 다양한 방법을 취할 수 있고 여기서는 LDAP 인증을 사용하고 있다.&lt;br&gt;&lt;br&gt;&lt;h3&gt;3.3.1 login_form.jsp : 기본적인 유저 인증 정보를 입력받는다.&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Parameter를 받고&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String SAMLRequest = request.getParameter("SAMLRequest");&lt;br&gt;    String RelayState = request.getParameter("RelayState");&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SAMLRequest를 Parsing한다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String requestXmlString = ProcessResponseServlet.decodeAuthnRequestXML(SAMLRequest);&lt;br&gt;    String[] samlRequestAttributes = ProcessResponseServlet.getRequestAttributes(requestXmlString);&lt;br&gt;        &lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;사용자 이름과 비밀번호를 입력받고&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    &amp;lt;input type="text" name="username" id="username" size="18"&amp;gt;&lt;br&gt;    &amp;lt;input type="password" name="password" id="password" size="18"&amp;gt;&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;IdentityProviderForm을 생성한다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    &amp;lt;form name="IdentityProviderForm" action="....." method="post"&amp;gt;&lt;br&gt;    ....&lt;br&gt;    &amp;lt;/form&amp;gt;&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;login_form.jsp 구현 종합&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;&lt;table id="l7:1" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&amp;lt;%&lt;br&gt;    &lt;b&gt;String SAMLRequest = request.getParameter("SAMLRequest");&lt;/b&gt;&lt;br&gt;    &lt;b&gt;String RelayState = request.getParameter("RelayState");&lt;/b&gt;&lt;br&gt;    String ServiceProvider = "";&lt;br&gt;    if (SAMLRequest == null || SAMLRequest.equals("null")) {&lt;br&gt;        ServiceProvider = "";&lt;br&gt;    } else {&lt;br&gt;        &lt;b&gt;String requestXmlString = ProcessResponseServlet.decodeAuthnRequestXML(SAMLRequest);&lt;/b&gt;&lt;br&gt;        &lt;b&gt;String[] samlRequestAttributes = ProcessResponseServlet.getRequestAttributes(requestXmlString);&lt;/b&gt;&lt;br&gt;        String issueInstant = samlRequestAttributes[0];&lt;br&gt;        &lt;b&gt;ServiceProvider = samlRequestAttributes[1];&lt;/b&gt;&lt;br&gt;        String acsURL = samlRequestAttributes[2];&lt;br&gt;    }&lt;br&gt;%&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;SSO Login Page&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;lt;h1&amp;gt;&amp;lt;%=ServiceProvider%&amp;gt; Service Login&amp;lt;/h1&amp;gt;&lt;br&gt;&amp;lt;form name="IdentityProviderForm" action="https://api.paygate.net/t/sso/saml/&lt;b&gt;ProcessResponseServlet.jsp&lt;/b&gt;" method="post"&amp;gt;&lt;br&gt;      &amp;lt;input type="hidden" name="SAMLRequest" value="&lt;b&gt;&amp;lt;%=SAMLRequest%&amp;gt;&lt;/b&gt;"/&amp;gt;&lt;br&gt;      &amp;lt;input type="hidden" name="RelayState" value="&lt;b&gt;&amp;lt;%=RelayState%&amp;gt;&lt;/b&gt;"/&amp;gt;&lt;br&gt;      &amp;lt;input type="hidden" name="returnPage" value="&lt;b&gt;./login_proc.jsp&lt;/b&gt;"&amp;gt;&lt;br&gt;username : &lt;b&gt;&amp;lt;input type="text" name="username" id="username" size="18"&amp;gt;&lt;/b&gt;&lt;br&gt;&amp;lt;br&amp;gt;&lt;br&gt;password : &lt;b&gt;&amp;lt;input type="password" name="password" id="password" size="18"&amp;gt;&lt;br&gt;&lt;/b&gt;&amp;lt;br&amp;gt;&lt;br&gt;&amp;lt;input type="submit" value="로그인"&amp;gt;&lt;br&gt;&amp;lt;/form&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;h2&gt;3.4 유저 확인후 SAMLResponse 생성&lt;/h2&gt;&lt;h3&gt;3.4.1 ProcessResponseServlet&lt;br&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;login_form.jsp에서 parameter를 받는다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String SAMLRequest = request.getParameter("SAMLRequest");&lt;br&gt;    String returnPage = request.getParameter("returnPage");&lt;br&gt;    String username = request.getParameter("username");&lt;br&gt;    String password = request.getParameter("password");&lt;br&gt;    String RelayState = request.getParameter("RelayState");&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;table id="u9.h" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br&gt;             throws ServletException, IOException {&lt;br&gt;         &lt;b&gt;String SAMLRequest = request.getParameter("SAMLRequest");&lt;/b&gt;&lt;br&gt;         &lt;b&gt;String returnPage = request.getParameter("returnPage");&lt;/b&gt;&lt;br&gt;         &lt;b&gt;String username = request.getParameter("username");&lt;/b&gt;&lt;br&gt;         &lt;b&gt;String password = request.getParameter("password");&lt;/b&gt;&lt;br&gt;         &lt;b&gt;String RelayState = request.getParameter("RelayState");&lt;/b&gt;&lt;br&gt;         ...&lt;br&gt;    }&lt;br&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SAMLRequest를 parsing한다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String requestXmlString = decodeAuthnRequestXML(SAMLRequest);&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;table id="h_cd" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    public static String decodeAuthnRequestXML(String encodedRequestXmlString) throws SamlException {&lt;br&gt;        try {&lt;br&gt;            Base64 base64Decoder = new Base64();&lt;br&gt;            byte[] xmlBytes = encodedRequestXmlString.getBytes("UTF-8");&lt;br&gt;            byte[] base64DecodedByteArray = base64Decoder.decode(xmlBytes);&lt;br&gt;            try {&lt;br&gt;&lt;br&gt;                Inflater inflater = new Inflater(true);&lt;br&gt;                inflater.setInput(base64DecodedByteArray);&lt;br&gt;                byte[] xmlMessageBytes = new byte[5000];&lt;br&gt;                int resultLength = inflater.inflate(xmlMessageBytes);&lt;br&gt;&lt;br&gt;                if (!inflater.finished()) {&lt;br&gt;                    throw new RuntimeException("didn't allocate enough space to hold decompressed data");&lt;br&gt;                }&lt;br&gt;&lt;br&gt;                inflater.end();&lt;br&gt;                return new String(xmlMessageBytes, 0, resultLength, "UTF-8");&lt;br&gt;&lt;br&gt;            } catch (DataFormatException e) {&lt;br&gt;&lt;br&gt;                ByteArrayInputStream bais = new ByteArrayInputStream(base64DecodedByteArray);&lt;br&gt;                ByteArrayOutputStream baos = new ByteArrayOutputStream();&lt;br&gt;                InflaterInputStream iis = new InflaterInputStream(bais);&lt;br&gt;                byte[] buf = new byte[1024];&lt;br&gt;                int count = iis.read(buf);&lt;br&gt;                while (count != -1) {&lt;br&gt;                    baos.write(buf, 0, count);&lt;br&gt;                    count = iis.read(buf);&lt;br&gt;                }&lt;br&gt;                iis.close();&lt;br&gt;&lt;br&gt;                return new String(baos.toByteArray());&lt;br&gt;            }&lt;br&gt;&lt;br&gt;        } catch (UnsupportedEncodingException e) {&lt;br&gt;            throw new SamlException("Error decoding AuthnRequest: Check decoding scheme - " + e.getMessage());&lt;br&gt;        } catch (IOException e) {&lt;br&gt;            throw new SamlException("Error decoding AuthnRequest: Check decoding scheme - " + e.getMessage());&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SAMLRequest에서 Attribute을 발췌한다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String[] samlRequestAttributes = getRequestAttributes(requestXmlString);&lt;br&gt;    String issueInstant = samlRequestAttributes[0];&lt;br&gt;    String providerName = samlRequestAttributes[1];&lt;br&gt;    String acsURL = samlRequestAttributes[2];&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;table id="cend" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    public static String[] getRequestAttributes(String xmlString) throws SamlException {&lt;br&gt;        Document doc = Util.createJdomDoc(xmlString);&lt;br&gt;        if (doc != null) {&lt;br&gt;            String[] samlRequestAttributes = new String[3];&lt;br&gt;            samlRequestAttributes[0] = doc.getRootElement().getAttributeValue("IssueInstant");&lt;br&gt;            samlRequestAttributes[1] = doc.getRootElement().getAttributeValue("ProviderName");&lt;br&gt;            samlRequestAttributes[2] = doc.getRootElement().getAttributeValue("AssertionConsumerServiceURL");&lt;br&gt;            return samlRequestAttributes;&lt;br&gt;        } else {&lt;br&gt;            throw new SamlException("Error parsing AuthnRequest XML: Null document");&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;User 인증을 진행한다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    boolean isValiduser = login(username, password);&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;table id="jk82" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    private boolean login(String username, String password) {&lt;br&gt;        LdapLoginHandler ldaplh = new LdapLoginHandler();&lt;br&gt;&lt;br&gt;        if (password.length() &amp;lt; 1) return false;&lt;br&gt;        if (ldaplh.isValidOfficeUser(username, password)) {&lt;br&gt;            return true;&lt;br&gt;        } else {&lt;br&gt;            return false;&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;    * 실제 인증은 Identity Provider의 사정에 맞게 다양한 방식으로 진행한다.&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;RSA Keypair loading&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String publicKeyFilePath = keysDIR + "paygate_public.der";&lt;br&gt;    String privateKeyFilePath = keysDIR + "paygate_private.der";&lt;br&gt;    RSAPrivateKey privateKey = (RSAPrivateKey) Util.getPrivateKey(privateKeyFilePath, "RSA");&lt;br&gt;    RSAPublicKey publicKey = (RSAPublicKey) Util.getPublicKey(publicKeyFilePath, "RSA");&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SAMLResponse의 유효기간정보 설정, 현시점부터 24시간 유효하게 설정함&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    long now = System.currentTimeMillis();&lt;br&gt;    long nowafter = now + 1000*60*60*24;&lt;br&gt;    long before = now - 1000*60*60*24;&lt;br&gt;&lt;br&gt;    SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");&lt;br&gt;    java.util.Date pTime = new java.util.Date(now);&lt;br&gt;    String notBefore = dateFormat1.format(pTime);&lt;br&gt;    java.util.Date aTime = new java.util.Date(nowafter);&lt;br&gt;    String notOnOrAfter = dateFormat1.format(aTime);&lt;br&gt;&lt;br&gt;    request.setAttribute("notBefore", notBefore);&lt;br&gt;    request.setAttribute("notOnOrAfter", notOnOrAfter);&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;인증을 거친 로그인 유저네임과 유효기간을 포함한 전자서명전의 SAMLResponse XML data생성&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String responseXmlString = createSamlResponse(username, notBefore, notOnOrAfter);&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;table id="hsi-" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;    private String createSamlResponse(&lt;br&gt;            String authenticatedUser,&lt;br&gt;            String notBefore, &lt;br&gt;            String notOnOrAfter) throws SamlException {&lt;br&gt;        String filepath = getServletContext().getRealPath("t/sso/saml/templates/" + samlResponseTemplateFile);&lt;br&gt;        String samlResponse = Util.readFileContents(filepath);&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##USERNAME_STRING##", authenticatedUser);&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##RESPONSE_ID##", Util.createID());&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##ISSUE_INSTANT##", Util.getDateAndTime());&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##AUTHN_INSTANT##", Util.getDateAndTime());&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##NOT_BEFORE##", notBefore);&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##NOT_ON_OR_AFTER##", notOnOrAfter);&lt;br&gt;        samlResponse = StringUtils.replace(samlResponse, "##ASSERTION_ID##", Util.createID());&lt;br&gt;        return samlResponse;&lt;br&gt;    }&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;    * createID()는 UniqueID를 생성하는 함수임.&lt;br&gt;    * getDateAndTime()은 SAML date format에 맞게 날짜시간정보를 생성하는 함수임.&lt;br&gt;    * SAML date format : yyyy-MM-ddThh:mm:ssZ (예: 2008-01-30T23:05:23Z)&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SAMLResponse에 대하여 전자서명&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;     String signedSamlResponse = SAMLSigner.signXML(responseXmlString, privateKey, publicKey);&lt;br&gt;    * 이때 publicKey는 SAMLResponse message에 포함되지만 데이터 암호화에는 사용되지 않는다.&lt;br&gt;    * xmldsig.jar, xmlsec.jar가 필요함&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;서명된 SAMLResponse를 포함하여 ACS로 forwarding한다.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    request.setAttribute("samlResponse", signedSamlResponse);&lt;br&gt;    request.getRequestDispatcher(returnPage).include(request, response);&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;ProcessResponseServlet.java 구현 종합&lt;br&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;table id="bmrn" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;/*&lt;br&gt; * ProcessResponseServlet&lt;br&gt; */&lt;br&gt;&lt;br&gt;public class ProcessResponseServlet extends HttpServlet {&lt;br&gt;&lt;br&gt;    private final String keysDIR = System.getProperty("PGV3_HOME")&lt;br&gt;            + SystemUtils.FILE_SEPARATOR + "SSO"&lt;br&gt;            + SystemUtils.FILE_SEPARATOR + "keys" + SystemUtils.FILE_SEPARATOR;&lt;br&gt;&lt;br&gt;    &lt;b&gt;private final String samlResponseTemplateFile = "SamlResponseTemplate.xml"; &lt;/b&gt;&lt;br&gt;    private static final String domainName = "paygate.net";&lt;br&gt;&lt;br&gt;    public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br&gt;            throws ServletException, IOException {&lt;br&gt;        &lt;b&gt;String SAMLRequest = request.getParameter("SAMLRequest");&lt;/b&gt;&lt;br&gt;        &lt;b&gt;String returnPage = request.getParameter("returnPage");&lt;/b&gt;&lt;br&gt;        &lt;b&gt;String username = request.getParameter("username");&lt;/b&gt;&lt;br&gt;        &lt;b&gt;String password = request.getParameter("password");&lt;/b&gt;&lt;br&gt;        &lt;b&gt;String RelayState = request.getParameter("RelayState");&lt;/b&gt;&lt;br&gt;        &lt;br&gt;        boolean continueLogin = true;&lt;br&gt;&lt;br&gt;        if (SAMLRequest == null || SAMLRequest.equals("null")) {&lt;br&gt;            continueLogin = false;&lt;br&gt;            request.setAttribute("error","ERROR: Unspecified SAML parameters.");&lt;br&gt;            request.setAttribute("authstatus","FAIL");&lt;br&gt;            &lt;br&gt;        } else if (returnPage != null) {&lt;br&gt;            try {&lt;br&gt;                &lt;br&gt;                &lt;b&gt;String requestXmlString = decodeAuthnRequestXML(SAMLRequest); &lt;/b&gt;&lt;br&gt;                &lt;b&gt;String[] samlRequestAttributes = getRequestAttributes(requestXmlString); &lt;/b&gt;&lt;br&gt;                String issueInstant = samlRequestAttributes[0];&lt;br&gt;                String providerName = samlRequestAttributes[1];&lt;br&gt;                String acsURL = samlRequestAttributes[2];&lt;br&gt;&lt;br&gt;                &lt;b&gt;boolean isValiduser = login(username, password); // 유저인증&lt;/b&gt;&lt;br&gt;                &lt;br&gt;                if (!isValiduser) {&lt;br&gt;                    request.setAttribute("error", "Login Failed: Invalid user.");&lt;br&gt;                    request.setAttribute("authstatus","FAIL");&lt;br&gt;                } else {&lt;br&gt;                    request.setAttribute("issueInstant", issueInstant);&lt;br&gt;                    request.setAttribute("providerName", providerName);&lt;br&gt;                    request.setAttribute("acsURL", acsURL);&lt;br&gt;                    request.setAttribute("domainName", domainName);&lt;br&gt;                    request.setAttribute("username", username);&lt;br&gt;                    request.setAttribute("RelayState", RelayState);&lt;br&gt;&lt;br&gt;                    &lt;b&gt;String publicKeyFilePath = keysDIR + "paygate_public.der";&lt;/b&gt;&lt;br&gt;                    &lt;b&gt;String privateKeyFilePath = keysDIR + "paygate_private.der";&lt;/b&gt;&lt;br&gt;                    &lt;b&gt;RSAPrivateKey privateKey = (RSAPrivateKey) Util.getPrivateKey(privateKeyFilePath, "RSA"); &lt;/b&gt;&lt;br&gt;                    &lt;b&gt;RSAPublicKey publicKey = (RSAPublicKey) Util.getPublicKey(publicKeyFilePath, "RSA"); &lt;/b&gt;&lt;br&gt;&lt;br&gt;                    long now = System.currentTimeMillis();&lt;br&gt;                    long nowafter = now + 1000*60*60*24;&lt;br&gt;                    long before = now - 1000*60*60*24;&lt;br&gt;                    &lt;br&gt;                    &lt;b&gt;SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'"); &lt;/b&gt;&lt;br&gt;                    java.util.Date pTime = new java.util.Date(now);&lt;br&gt;                    String notBefore = dateFormat1.format(pTime);&lt;br&gt;                    &lt;br&gt;                    java.util.Date aTime = new java.util.Date(nowafter);&lt;br&gt;                    String notOnOrAfter = dateFormat1.format(aTime);&lt;br&gt;                    &lt;br&gt;                    request.setAttribute("notBefore", notBefore);&lt;br&gt;                    request.setAttribute("notOnOrAfter", notOnOrAfter);&lt;br&gt;&lt;br&gt;                    if (!&lt;b&gt;validSamlDateFormat(issueInstant)&lt;/b&gt;) {&lt;br&gt;                        continueLogin = false;&lt;br&gt;                        request.setAttribute("error", "ERROR: Invalid NotBefore date specified - " + notBefore);&lt;br&gt;                        request.setAttribute("authstatus","FAIL");&lt;br&gt;                    } else if (!validSamlDateFormat(notOnOrAfter)) {&lt;br&gt;                        continueLogin = false;&lt;br&gt;                        request.setAttribute("error", "ERROR: Invalid NotOnOrAfter date specified - " + notOnOrAfter);&lt;br&gt;                        request.setAttribute("authstatus","FAIL");&lt;br&gt;                    }&lt;br&gt;&lt;br&gt;                    if (continueLogin) {&lt;br&gt;                        // 서명전의 SAMLResponse Message 생성&lt;br&gt;                        &lt;b&gt;String responseXmlString = createSamlResponse(username, notBefore, notOnOrAfter); &lt;br&gt;&lt;/b&gt;&lt;br&gt;                        // SAMLResponse에 대한 전자서명&lt;br&gt;                        &lt;b&gt;String signedSamlResponse = SAMLSigner.signXML(responseXmlString, privateKey, publicKey); &lt;/b&gt;&lt;br&gt;                        request.setAttribute("samlResponse", signedSamlResponse);&lt;br&gt;                        request.setAttribute("authstatus","SUCCESS");&lt;br&gt;                    } else {&lt;br&gt;                        request.setAttribute("authstatus","FAIL");&lt;br&gt;                    }&lt;br&gt;                }&lt;br&gt;            } catch (SamlException e) {&lt;br&gt;                request.setAttribute("error", e.getMessage());&lt;br&gt;                request.setAttribute("authstatus","FAIL");&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        // Forward SAML response to ACS&lt;br&gt;        response.setContentType("text/html; charset=UTF-8");&lt;br&gt;        &lt;b&gt;request.getRequestDispatcher(returnPage).include(request, response); &lt;/b&gt;&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SamlResponseTemplate.xml 참조&lt;br&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;table id="fyxa" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&amp;lt;samlp:Response ID="##RESPONSE_ID##" IssueInstant="##ISSUE_INSTANT##" Version="2.0"&lt;br&gt;    xmlns="urn:oasis:names:tc:SAML:2.0:assertion"&lt;br&gt;    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"&lt;br&gt;    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"&amp;gt;&lt;br&gt;    &amp;lt;samlp:Status&amp;gt;&lt;br&gt;        &amp;lt;samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/&amp;gt;&lt;br&gt;    &amp;lt;/samlp:Status&amp;gt;&lt;br&gt;    &amp;lt;Assertion ID="##ASSERTION_ID##"&lt;br&gt;        IssueInstant="2003-04-17T00:46:02Z" Version="2.0"&lt;br&gt;        xmlns="urn:oasis:names:tc:SAML:2.0:assertion"&amp;gt;&lt;br&gt;        &amp;lt;Issuer&amp;gt;https://www.opensaml.org/IDP&lt;br&gt;        &amp;lt;/Issuer&amp;gt;&lt;br&gt;        &amp;lt;Subject&amp;gt;&lt;br&gt;            &amp;lt;NameID&lt;br&gt;                Format="urn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress"&amp;gt;&lt;br&gt;                ##USERNAME_STRING##&lt;br&gt;            &amp;lt;/NameID&amp;gt;&lt;br&gt;            &amp;lt;SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/&amp;gt;&lt;br&gt;        &amp;lt;/Subject&amp;gt;&lt;br&gt;        &amp;lt;Conditions NotBefore="##NOT_BEFORE##"&lt;br&gt;            NotOnOrAfter="##NOT_ON_OR_AFTER##"&amp;gt;&lt;br&gt;        &amp;lt;/Conditions&amp;gt;&lt;br&gt;        &amp;lt;AuthnStatement AuthnInstant="##AUTHN_INSTANT##"&amp;gt;&lt;br&gt;            &amp;lt;AuthnContext&amp;gt;&lt;br&gt;                &amp;lt;AuthnContextClassRef&amp;gt;&lt;br&gt;                    urn:oasis:names:tc:SAML:2.0:ac:classes:Password&lt;br&gt;                &amp;lt;/AuthnContextClassRef&amp;gt;&lt;br&gt;            &amp;lt;/AuthnContext&amp;gt;&lt;br&gt;        &amp;lt;/AuthnStatement&amp;gt;&lt;br&gt;    &amp;lt;/Assertion&amp;gt;&lt;br&gt;&amp;lt;/samlp:Response&amp;gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;3.5 SAMLResponse Message를 Service Provider의 ACS로 forward&lt;/h2&gt;&lt;h3&gt;3.5.1 login_proc.jsp : forwarding을 담당&lt;br&gt;&lt;/h3&gt;&lt;div&gt;&lt;table id="ewlq" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;&amp;lt;%@ page contentType="text/html; charset=UTF-8"%&amp;gt;&lt;br&gt;&amp;lt;%&lt;br&gt;    String acsURL = (String) request.getAttribute("acsURL");&lt;br&gt;    String samlResponse = (String) request.getAttribute("samlResponse");&lt;br&gt;    String RelayState = (String) request.getAttribute("RelayState");&lt;br&gt;    String authstatus = (String) request.getAttribute("authstatus");&lt;br&gt;    if (authstatus == null) authstatus = "FAIL";&lt;br&gt;    if (RelayState == null) RelayState = "";&lt;br&gt;%&amp;gt;&lt;br&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;&amp;lt;title&amp;gt;forward to ACS&amp;lt;/title&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;%&lt;br&gt;    if (samlResponse != null &amp;amp;&amp;amp; authstatus.equals("SUCCESS")) {&lt;br&gt;%&amp;gt;&lt;br&gt;&lt;b&gt;&amp;lt;body onload="javascript:document.acsForm.submit();"&amp;gt;&lt;/b&gt;&lt;br&gt;    &amp;lt;form name="acsForm" action="&amp;lt;%=acsURL%&amp;gt;" method="post"&amp;gt;&lt;br&gt;        &amp;lt;div style="display: none"&amp;gt;&lt;br&gt;          &amp;lt;textarea rows=10 cols=80 name="SAMLResponse"&amp;gt;&amp;lt;%=samlResponse%&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br&gt;          &amp;lt;textarea rows=10 cols=80 name="RelayState"&amp;gt;&amp;lt;%=RelayState%&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br&gt;        &amp;lt;/div&amp;gt;&lt;br&gt;    &amp;lt;/form&amp;gt;&lt;br&gt;&amp;lt;%&lt;br&gt;    } else {&lt;br&gt;        %&amp;gt;&amp;lt;script&amp;gt;alert('Login error'); history.back(-2); &amp;lt;/script&amp;gt;&amp;lt;%&lt;br&gt;    }&lt;br&gt;%&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;3.6 Service Provider이 ACS에서 SAMLResponse를 verify&lt;/h2&gt;&lt;h3&gt;3.6.1 PublicACSServlet : Service Provider측의 ACS&lt;br&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Parameter를 받고&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    String SAMLResponse = request.getParameter("SAMLResponse");&lt;br&gt;    String RelayState = request.getParameter("RelayState");&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Identity Provider의 public Key를 load&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    RSAPublicKey publicKey;&lt;br&gt;    publicKey = (RSAPublicKey) Util.getPublicKey(publicKeyFilePath,"RSA");&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Identity Provider가 보내온 SAMLResponse를 서명검증(verify)&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    boolean isVerified = SAMLVerifier.verifyXML(SAMLResponse, publicKey);&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;검증을 거친이후 실제 서비스 사이트로 forward 요청&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;    request.getRequestDispatcher("./acs_proc.jsp").include(request, response);&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;PublicACSServlet.java 구현 종합&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;table id="eoll" border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="100%"&gt;public class PublicACSServlet extends HttpServlet {&lt;br&gt;    private final String keysDIR = System.getProperty("PGV3_HOME")&lt;br&gt;            + SystemUtils.FILE_SEPARATOR + "CryptoServer"&lt;br&gt;            + SystemUtils.FILE_SEPARATOR + "keys" + SystemUtils.FILE_SEPARATOR;&lt;br&gt;    &lt;br&gt;    public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br&gt;            throws ServletException, IOException {&lt;br&gt;        doPost(request, response);&lt;br&gt;    }&lt;br&gt;    &lt;br&gt;    public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br&gt;            throws ServletException, IOException {&lt;br&gt;        String SAMLResponse = request.getParameter("SAMLResponse");&lt;br&gt;        String RelayState = request.getParameter("RelayState");&lt;br&gt;&lt;br&gt;        // acs knows public key only.&lt;br&gt;        String publicKeyFilePath = keysDIR + "paygate_public.der";&lt;br&gt;&lt;br&gt;        RSAPublicKey publicKey;&lt;br&gt;        try {&lt;br&gt;            publicKey = (RSAPublicKey) Util.getPublicKey(publicKeyFilePath,"RSA");&lt;br&gt;&lt;br&gt;            boolean isVerified = SAMLVerifier.verifyXML(SAMLResponse, publicKey);&lt;br&gt;&lt;br&gt;            if (isVerified) {&lt;br&gt;&lt;br&gt;                String loginid = null;&lt;br&gt;                Document doc = Util.createJdomDoc(SAMLResponse);&lt;br&gt;&lt;br&gt;                Iterator itr = doc.getDescendants();&lt;br&gt;&lt;br&gt;                itr = doc.getDescendants(new ElementFilter());&lt;br&gt;                while (itr.hasNext()) {&lt;br&gt;                    Content c = (Content) itr.next();&lt;br&gt;                    if (c instanceof Element) {&lt;br&gt;                        Element e = (Element) c;&lt;br&gt;                        System.out.println("Element:" + e.getName());&lt;br&gt;                        &lt;br&gt;                        if ("NameID".equals(e.getName())) {&lt;br&gt;                            loginid = e.getText().trim();&lt;br&gt;                            break;&lt;br&gt;                        }&lt;br&gt;                    }&lt;br&gt;                }&lt;br&gt;                request.setAttribute("mid", loginid);&lt;br&gt;                request.setAttribute("RelayState", RelayState);&lt;br&gt;                &lt;br&gt;                response.setContentType("text/html; charset=UTF-8");&lt;br&gt;                request.getRequestDispatcher("./acs_proc.jsp").include(request, response);&lt;br&gt;            } else {&lt;br&gt;                System.out.println("SAMLResponse is modified!!");&lt;br&gt;                return;&lt;br&gt;            }&lt;br&gt;&lt;br&gt;        } catch (SamlException e) {&lt;br&gt;            e.printStackTrace();&lt;br&gt;        } catch (Exception e) {&lt;br&gt;            e.printStackTrace();&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;3.7 완전하게 동작하는 WAR file&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;화면상의 제약으로 인해 완전하게 동작하는 WAR File을 별도 준비하였다.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;파일이 필요한 분은 dev@paygate.net으로 메일요청하십시오.&lt;/li&gt;&lt;li&gt;또한 아래 링크를 통해서 file download 위치를 확인할 수 있다.&lt;br&gt;http://docs.google.com/Doc?id=dcxqxct2_4dsh8w4dt&lt;/li&gt;&lt;/ul&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;/div&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;4. SAML SSO 적용 실제 사이트&lt;/h1&gt;&lt;h2&gt;4.1 PayGate Admin Login&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;PayGate가 Service Provider 역할을 함.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h3&gt;4.1.1 최초 Service Login Page&lt;/h3&gt;&lt;div id="px8t" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 522px; height: 446px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1352gxp2mzfs"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;이 단계는 SAMLRequest를 생성하기전 서비스 제공자가 제시하는 화면이다.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h3&gt;4.1.2 Identity Provider로서 Login Form 제시&lt;/h3&gt;&lt;div id="xw_y" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 522px; height: 446px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1353f795zt3g"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;이 화면이 보이기까지 서비스 제공자는 SAMLRequest를 생성하고&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Identity Provider로 SAMLRequest를 redirect하면&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;유저인증을 위해서 보여지는 화면이다.&lt;/li&gt;&lt;li&gt;이 화면 이후 로그인 버튼을 누르게 되면 SAMLResponse 메세지를 생성하여 Service Provider의 ACS Site로 forwarding하게 된다.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h3&gt;4.1.3 Service Provider ACS verify를 거친후 마지막 페이지&lt;/h3&gt;&lt;div id="vm-q" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 522px; height: 446px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1354d4q2fbdp"&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Service Provider에 위치하는 ACS가 SAMLResponse를 verify한 이후 실제 서비스 제공 사이트로 forwarding한 결과이다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;4.2 Google Apps Service&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;google은 service provider역할을 하며&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;paygate는 identity provider역할을 한다.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h3&gt;4.2.1 gmail 서비스 로그인을 위한 인증 화면&lt;/h3&gt;&lt;div id="jcvb" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 523px; height: 447px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1355c7vp6mc5"&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;google에서 SAMLRequest를 생성하여 identity provider인 페이게이트로 redirect하면&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;페이게이트에서 유저 인증을 위하여 생성한 화면이다.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3&gt;4.2.2 identity provider의 인증을 거친후 로그인된 화면&lt;/h3&gt;&lt;div id="m29g" style="padding: 1em 0pt; text-align: left;"&gt;&lt;img style="width: 522px; height: 446px;" src="http://docs.google.com/a/paygate.net/File?id=dhm28v4q_1356fp5cdmf3"&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Identity Provider가 SAMLResponse를 생성하여&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;google acs로 forwarding하면 verify한 이후 실제 서비스 제공 사이트로 연결한다.&lt;/li&gt;&lt;/ul&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;5. SAML의 확장&lt;/h1&gt;&lt;h2&gt;5.1 공인인증기관과 Identity Provider&lt;/h2&gt;SAML SSO는 국내에서는 공인인증기관이 Identity Provider역할을 한다면 아주 적당한 business model이 될것 같다.&lt;br&gt;&lt;br&gt;공인인증기관의 신뢰성을 바탕으로 인증서 발행한 유저에 대한 확인을 직접 수행하고&lt;br&gt;Service Provider는 공인인증기관의 확인만을 검증하여 그 결과를 신뢰할 수 있다.&lt;br&gt;&lt;br&gt;더 나아가서는 꼭 공인인증기관이 Identity Provider역할을 하지 않더라도&lt;br&gt;공인인증서 기반의 Public Identity Provider는 쉽게 예상할 수 있다.&lt;br&gt;&lt;br&gt;&lt;h2&gt;5.2 Payment Gateway와 Identity Provider&lt;/h2&gt;결제대행사(Payment Gateway)사가 Identity Provider역할을 하고&lt;br&gt;쇼핑몰이 Service Provider가 되는 구조를 생각해볼 수 있다.&lt;br&gt;&lt;br&gt;SAMLRequest는 충분히 확장가능한 구조이므로 Payment 요청에 필요한 필수정보 (상품명, 가격 등)을 포함하여&lt;br&gt;PG사에 대하여 Identity Provider로서 요청하고&lt;br&gt;PG사 사이트에서 안전하게 Payment를 처리하고 그 결과를 SAMLResponse format으로 돌려주는 구조이다.&lt;br&gt;&lt;br&gt;이는 Cross Domain간에 Payment Protocol에 대한 표준이 부재한 현 상황에서 &lt;br&gt;의미있게 시도해봄직한 목표이다.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;6. 참고자료&lt;/h1&gt;&lt;h2&gt;SAML Single Sign On Service for Google Apps&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;http://code.google.com/apis/apps/sso/saml_reference_implementation.html&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h2&gt;OpenSAML&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;http://www.opensaml.org/&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h2&gt;SAML at Wikipedia&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;http://en.wikipedia.org/wiki/SAML&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/454344194403730457-5120026790578087115?l=mountieit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mountieit.blogspot.com/feeds/5120026790578087115/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=454344194403730457&amp;postID=5120026790578087115' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/5120026790578087115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/454344194403730457/posts/default/5120026790578087115'/><link rel='alternate' type='text/html' href='http://mountieit.blogspot.com/2008/01/saml-sso-service-mountie-lee.html' title=''/><author><name>mountie</name><uri>http://www.blogger.com/profile/07961110506462494185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_rOgPuFv9ibE/SlHCzF8k0OI/AAAAAAAAACU/2v2z5OSrNro/S220/mountie_picture2.png'/></author><thr:total>0</thr:total></entry></feed>
