SSL없이 무료로 쉽게 보안서버 구축하기 (SST v1.0)
Simple Secure Transfer v1.0
  • 개요
    2005년 시행된 "정보통신망 이용 촉진 및 정보보호 등에 관한 법률" 및 "개인정보의 기술적,관리적 보호조치 기준" 법안에 따라, 영리목적의 모든 사이트에서는 개인정보(비밀번호 혹은 주민번호, 전화번호 등 개인신상정보)의 보안을 위해 보안서버를 구축해야합니다.
    이에 따라 한국정보보호진흥원(KISA)에서는 보안서버 구축을 위해 SSL과 응용프로그램(예를들어 ActiveX)방식중 한가지는 설치되어야 한다고 권고하고 있습니다.
    보안수준으로선 키로거까지 보안 가능한 응용프로그램방식이 우수하나, 구축비용이 비싸며 ActiveX설치를 기피하는 유저성향때문에 SSL을 이용한 보안서버 구축이 많은 관심을 받고 있습니다. 하지만 SSL역시 호스팅계정을 이용중인 영세 사이트에서 구축하기엔 만만치 않은 비용과 불편함을 감수해야합니다.
    따라서 본 프로그램은 SSL보호수준의 데이터 암호화 송수신을 인증서 설치 없이 구현할 수 있도록 만들어졌습니다.


  • 환경
    SSL의 암호화 수준에 최대한 근접하기 위하여 전자서명에서 많이 사용중인 RSA 비대칭 암호화 알고리즘(기본 512bit)을 사용하였습니다.
    암호화 모듈 (JavaScript)
    복호화 모듈 (ASP.NET 2.0 - C#)


  • 동작원리

    본 프로그램의 예제소스처럼, 아이디와 패스워드를 입력한 후 버튼클릭시 정보를 서버에 전송하는 화면을 기준으로 프로세스를 설명하도록 하겠습니다.

    1.보안이 필요한 데이터를 암호화 - 사용자가 아이디와 패스워드를 입력한 후 "전송"버튼을 클릭하면 JavaScript를 통해 WebServer에 있는 공개키(PublcKey)를 XML로 읽어와, 공개키를 이용하여 아이디와 패스워드를 암호화하고 HiddenField에 입력합니다. (이때 원본 TextBox의 값을 공백처리하여 암호화되지 않은 데이터가 전송되지 않게 주의하십시오.)

    2.암호화된 데이터 전송 - 1번에서 문제없이 암호화가 완료되었다면 Form Submit을 발생시켜 암호화된 데이터가 서버로 전송됩니다.

    3.암호화된 데이터를 복호화 - 비밀키(PrivateKey)를 이용하여 클라이언트로부터 전송받은 암호화된 HiddenField의 값을 복호화하여 원하는 처리를 합니다.


  • 예제파일안내
    /Web.Config공개키와 비밀키파일 경로를 세팅합니다.
    /Default.aspx로그인폼으로 디자인된 예제파일입니다.
    /GenerateKey.aspx공개키와 비밀키를 생성하는 파일입니다. (생성된키를 PublicKey.xml과 PrivateKey.config파일에 각각 저장해 주십시오.)
    /SST/SST.js클라이언트에서 사용하는 암호화 스크립트 파일입니다.
    /SST/SimpleSecureTransfer.cs서버에서 사용하는 복호화 클래스 파일입니다.
    /SST/PublicKey.xml클라이언트에서 사용하는 공개키 XML파일입니다.
    /SST/PrivateKey.config서버에서 사용하는 비밀키 XML파일입니다.(외부접근을 막기위해 .config확장자로 구성되었습니다.)
    참조RSA복호화를 위해 System.Security를 추가참조해야 합니다.


  • 소스다운로드
    http://giman.hosting2003.co.kr/SimpleSecureTransferV1/SimpleSecureTransferV1.zip
    기타 프로그램에 관한 질문이나 건의는 http://kuimoani.egloos.com에 해주십시오.


  • 예제

 

Creative Commons License이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by 귀뫄뉘 | 2007/06/22 19:44 | ┣ work | 트랙백 | 덧글(6)
트랙백 주소 : http://kuimoani.egloos.com/tb/334437
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented at 2007/07/03 20:27
비공개 덧글입니다.
Commented by 귀뫄뉘 at 2007/07/04 18:50
1. 네 php용 복호화 모듈은 직접 제작하셔야합니다.. (제가 php를 다룰줄 몰라서..^^) 하지만 RSA는 언어에 상관없이 많이 사용되는 암호화기법이니 구글같은데서 검색해보시면 php용 암복호화 소스가 분명 있을겁니다.

2. (내용을 수정했습니다.) 개정된 법에 따르면 SSL과 응용프로그램방식을 권고하고 있는데, SSL이나 응용프로그램이나 보안기술의 핵심은 암호화된 패킷을 전송하는 거랍니다. 심지어 현재 시중에 파는 SSL공개키 암호화를 128bit다 256bit다 해서 보안이 우수하다 광고하던데 위의 프로그램은 512bit 부터 가능하기 때문에 암호화 비트로만 따지면 상용 보안 프로그램보다 오히려 우수하다고 할 수 있습니다.

하지만 이번 법안에서 보안서버를 의무화하며 보안협회같은걸 만들어서 사설업체를 가입시키고 있어서 보안업체 돈벌어주기 위한 정치인들의 꽁수가 아니냐 말들이 많죠...
이게 사실이라면 이런저런 말도안되는 이유를 들어 적법하지 않다고 우길 가능성도 없진 않습니다.. 그만큼 이번 법안은 헛점도 많고 비합리적인 부분도 많다는 얘기죠...

개인적으론 영리 목적의 서비스를 하는 사이트라면 유료보안서버를 구축하시길 권하고, 비영리나 커뮤니티 사이트등에서 위 프로그램을 사용하길 하는 바램입니다. ^^
Commented by 김준 at 2007/07/05 16:39
정말 고마운 자료입니다. 근데, ASP.NET 2.0 용이 아니라 그냥 ASP 에서 쓰려는데요..ASP 용으로 만들지 못하더라도..현재의 예제만 가지고 닷넷에서 복호화 처리를 하고 ASP 쪽으로 값들을 넘겨주려는데 방법이 쉽지 않네요..혹시, ASP 용은 계획이 없으신지요 ^^ 감사합니다.
Commented by 귀뫄뉘 at 2007/07/05 18:15
일단 닷넷에서 RSA암복호화는 닷넷에서 기본적으로 지원해줬기에 한거구요.. 다른 환경에선 RSA알고리즘이나 base64string 등을 다 일일이 코딩해줘야헤서 좀 어려울것 같습니다.. ㅎㅎ 하지만 ASP를 쓰시더라도 닷넷프레임웍이 깔려있다면... 닷넷으로 복호화 서비스컴포넌트를 돌리고 ASP에서 객체생성해서 쓰면 좀 쉽지(? 이것도 은근 복잡하네요 ㅋ) 않을까 생각되네요...ㅎㅎ
혹시 구글에서 관련소스를 찾게되면 여기에 올리도록 하겠습니다 ^^
Commented by 해피포터 at 2008/07/15 13:32
너무 감사합니다 ^ 제가 찾던 자료예요. 복 많이 받으세요. 행복하시구용~
Commented by zetbit at 2009/01/20 16:23
http://www.webdeal.kr/secure.webdeal?query=product_wss&content=character
여기 가시면 .. ssl 대체 자료 있어요..

:         :

:

비공개 덧글