2008. 10. 3. 22:06

블로그 업데이트 후~~좌절

기존 블로그에서 그냥 마구잡이로 붙여쓰다가...막상 보니..거의 모든 사진이 엑박으로 뜨네요...ㅜㅁㅜ;;;;

익스플로어가 그냥 꺼질때도 있고.헐..ㅡㅡ;

이런 좌절이!!!!!!!!!!!!!!!

하나하나..다시 붙이기 너무 빡실듯...

일단 이 카테고리는 나중에 다시 수정하도록 하겠습니다..ㅡㅡ;;;;;;;;;;

설마하니...ㅋㅋㅋ 혹시나...궁금하신거 있으면 메일이나 방명록 글 남겨주세요~
2008. 10. 3. 22:03

[펌] 암호와 PKI, 전자서명 기초강좌



성우 암호응용팀 연구원

 

 

암호란 무엇일까? 암호는 왠지 베일에 싸인 정부 기관에서 사용하는 일상 생활과 동떨어진 것이라는 선입견이 든다. 물론, 과거를 돌이켜 보면 암호는 특수한 목적으로 특정한 조직에서 사용되었던 것도 사실이다. 이제 암호는 최첨단 정보 통신 사회로 변화함에 따라 더욱 우리의 일상생활로 다가오고 있다. 그러나, 흔히 암호라는 말을 이해하고 사용하는 경우도 있다. 예를 들면, 카드 비밀번호나 한글 문서 등에서 사용하는 각종 패스워드를 암호라고 생각하기도 하고, 암호를 단순히 정보를 암호화하는 것만으로 인식하기도 한다. 따라서 강좌에서는 암호의 기본적인 개념과 암호의 사용 등에 대한 내용을 다루려 한다.

 

암호(cryptography) 기밀성, 데이터 무결성, 데이터 인증 객체 인증 등의 기능을 제공하기 위해 수학적 이론에 근거한 정보보호 기반 기술을 의미한다. 이러한 암호는 고대 시대부터 주로 전쟁 정보 교환이나 국가간 비밀통신 등을 위한 수단으로 사용되어 왔다. 초기 암호는 사용된 모든 정보를 비밀로 취급하여 암호문을 생성하고 해독하였다. 그러나, 이러한 과정은 데이터를 안전하게 전달하기 위해 암호화하는 과정 전체를 비밀로 해야 하는 문제점이 있어 현대로 넘어오면서 비밀정보를 최소화 하게 된다. 현재 암호학에서는 비밀 키를 제외한 알고리즘 등을 포함한 모든 정보는 공개된 정보로 간주하고 있다. 따라서 암호에서 가장 중요하고 핵심적인 비밀 요소는 암호 키가 되고 안전하게 관리되어야 한다.

 

암호키는 방식에 따라 공개된 키도 존재하고 비공개되는 키도 존재하게 된다. 암호는 사용 방식에 따라 대칭키 암호 방식과 공개키 암호 방식으로 구분된다. 대칭키 암호는 송신자와 수신자가 안전한 채널 또는 접촉 등을 통해 비공개로 비밀키를 사전에 공유한 , 암호화·복호화 과정을 진행하게 된다. 대칭키 암호 방식은 사용되는 비밀키 길이가 짧고 처리 속도가 비교적 빠르다는 장점을 갖고 있으나, 대칭키 암호 방식은 암호키와 복호키가 동일해야 하기 때문에 송신자와 수신자가 통신전에 비공개 채널을 통해 비밀키를 공유해야 한다는 문제점을 갖고 있다. 대칭키 암호의 대표적인 것으로 현재 안전성과 효율성 측면에서 우수한 블록암호를 많이 사용하고 있다. 블록암호는 1977 미국 상무성 표준국(NIST) 계산기 데이터 보호를 위해 암호 알고리즘을 공개 모집하여 IBM사가 제안한 DES(Data Encryption Standard) 채택하여 상업용으로 사용하기 시작했다. 이러한 DES 출현으로 블록암호에 대한 연구 개발이 급격하게 증가하게 되었다.

 



 

블록암호는 전송되는 데이터의 비밀성 제공, 데이터 무결성, 난수생성기 다양한 기능으로 사용되고 있다. 현재 대표적으로 많이 사용되고 있는 블록암호로는 AES(FIPS 197), SEED(TTAS.KO-12.0004) 등이 있다. 특히, 1999년에 개발된 국내 표준 암호 알고리즘인 SEED 국내·외 업체, 학교, 연구소 820 (2005 2 현재) 배포되어 스마트카드, SSL 등에서의 데이터 보호를 위해 사용되고 있다. 반면, 스트림암호는 군사 목적이나 무선 통신 등에서 비공개로 사용되어 많은 연구가 진행되지 않았다. 그러나, 최근에는 RFID, 센서네트워크, 무선통신 등의 발달로 인해 스트림암호에 대한 관심이 증대되고 있다. 이러한 대칭키 암호 방식은 현재의 컴퓨터 계산 능력을 고려하여 블록암호의 경우는 적어도 비밀키의 길이가 80비트 이상, 스트림암호는 128비트 이상은 되어야 안전하다고 있다.

 

비밀키 사전에 공유해야한다는 대칭키 암호의 문제점을 해결하기 위해 개발된 방식이 공개키 암호 방식이다. 공개키 암호 방식은 서로 다른 개인키와 공개키 쌍의 암호키를 이용하여 데이터를 암호화 또는 복호화를 한다. 개인키는 수신자만이 알고 있는 비밀정보로써, 암호화되어 전송된 정보를 비밀키로 복호화 있다. 공개키는 암호화를 원하는 사람은 누구든지 획득할 있으며, 이를 이용하여 데이터를 암호화하여 수신자에게 전송하게 된다. 공개키 암호 방식은 소인수분해 문제, 이산대수 문제 수학적 난제에 기반하여 처리속도가 대칭키 암호에 비해 상대적으로 느리고, 안전성을 보장하기 위해서는 충분한 길이의 암호키가 요구된다. 따라서, 공개키 암호 방식은 암호화보다는 키분배, 전송 등에서 주로 사용된다. 대표적인 공개키 암호 방식은 RSA, 타원곡선 암호, ElGamal 방식 등이 있다. 현재의 컴퓨터 계산 능력을 고려하면 적어도 RSA 1024비트 이상, 타원곡선 암호 시스템은 160비트 이상은 되어야 안전하다고 있다.


 

또한, 암호기술은 사용되는 용도에 따라 다양하게 분류할 있다. 암호는 정보의 비밀성을 제공하는 기밀성 기능, 전송 저장된 정보의 위·변조 방지를 위한 무결성 기능, 접근하는 객체에 대한 승인 문서 등에 대한 합법성을 제공하는 인증 기능, 부인방지 기능, 의사난수 생성 등으로 구분할 있다.

 

암호에서 가장 중요한 기능이 기밀성을 제공하는 것이다. 암호화는 개인 정보, 중요 데이터 등과 같은 비밀정보를 수신자를 제외하고 3자가 확인할 없도록 데이터를 없는 문자의 형태로 변화하는 것을 말한다. 데이터 암호화는 블록암호, 스트림 암호, 공개키 암호 방식을 이용하여 비밀키 또는 공개키로 암호화하여 전송하게 된다.

 

전송되거나 저장되는 중요 정보는 다양한 내·외부 원인에 의해 변형되거나 손상될 우려가 있다. 따라서 이러한 문제를 암호학적으로 해결하기 위해 해쉬함수 MAC 알고리즘을 사용하여 데이터 변형 무결성을 검증하게 된다. 해쉬함수는 임의의 길이의 메시지를 고정된 길이(, 160 비트) 출력하는 변환을 말하며, 비밀키와 같은 비밀정보가 있지 않기 때문에 누구든지 쉽게 해쉬값을 만들 있다는 특징을 갖고 있다. 해쉬함수는 전자서명, 무결성 검증 등에서 주로 사용되고 있다. 해쉬함수의 안전성은 Birthday Attack 고려하여 적어도 160비트 이상의 출력값을 가져야 한다. 대표적인 해쉬함수로는 SHA-1/256/384, 52, HAS-160 등이 있다. 그러나, SHA-1 최근에 충돌쌍이 발견되었다는 등의 안정성에 문제점이 계속 제기되고 있으나 아직 공식적으로 관련 문서가 공개되지 않은 상태이다.

 

통신 사용자가 중요 데이터가 저장된 Server 객체 상호간의 신뢰성을 제공하기 위해 합법적인지를 인증하는 암호기술이 필요하게 된다. 이러한 문제는 전자서명이나 MAC 알고리즘을 이용할 있다. 전자서명은 공개키 암호 방식의 반대로 진행되는 방식으로 서명자만이 갖고 있는 개인키를 이용하여 서명하여 전송하면 공개키를 갖고 있는 모든 수신자는 전자서명이 타당한지 체크하게 된다. MAC 알고리즘의 경우는 사전에 공유된 비밀키를 이용하여 동일한 MAC 값을 갖는지를 확인한다.

 

또한, 자신이 행위에 대해 부인을 하지 못하도록 하기 위한 부인방지 기능이 있으며, 이는 전자 서명을 이용하여 제공하게 된다. 암호는 비밀키와 같이 난수적 특성을 갖는 문자열을 생성해야 하기 때문에 난수를 생성하는 데에도 사용되고 있다.

 

지금까지는 암호알고리즘 자체에 대한 안전성을 중심으로 설명하였다. 그러나, 암호는 알고리즘 자체에 대한 안전성 아니라, 암호에 사용되는 암호키의 생성, 사용, 저장, 폐기 등의 암호키 관리도 매우 중요하게 고려해야 한다. 아무리 좋은 알고리즘이라도 암호키를 안전하게 관리하지 않는다면 암호가 유명무실화 밖에 없다. 또한, 개발된 표준 암호 알고리즘의 S/W H/W 측면에서의 구현 효율성에 대한 연구도 중요하게 고려해야 한다.

 

 

 

 

정찬주 기반기획팀 연구원

 

 

지난 강좌에서는 암호가 기밀성, 데이터 무결성, 데이터 인증 객체 인증 등의 기능을 제공한다 것에 대해 다뤘다. 암호는 인터넷을 통해 통신하는 송신자와 수신자 사이에 전송되는 정보(전자메일, 전자문서, 전자화된 거래 내용 ) 유출되지 않도록 전송 정보를 보호하는 역할을 한다. 그렇다면 송신자는 전송정보가 의도된 수신자에게 전송되는지, 그리고 수신자는 나에게 전송정보를 보낸 송신자가 정말로 송신자인지를 확인할 있는 방법이 필요하다.

 


[그림 1]에서 갑돌이는 갑순이에게 사과를 전달하려 했지만, 용팔이가 갑순이로 가장하여 사과를 받았다. 갑돌이는 수신자를 확인할 필요가 있다. [그림 2]에서는 용팔이가 갑돌이로 가장하여 갑순이에게 메시지를 보냈다. 갑순이는 메시지를 보낸 송신자를 확인할 필요가 있다.

그림 1 2에서와 같이 실생활에서 벽을 사이에 두고 사람이 있는 경우는 목소리 또는 억양 등의 정보를 통해 사람을 확인할 있다. 하지만 사이버 세상에서는 사람을 확인하기 위한 부가적인 정보가 없기 때문에, 사람의 진위 여부를 판단하기 위한 정보를 어떻게 전달하여 신뢰 관계를 형성시킬 것인가가 중요하다.

 

사람들은 거리를 걸어 다니다 보면 가끔 경찰의 검문을 받는다. 이때 경찰에게 자신의 신분을 증명하기 위하여 국가기관으로부터 발급 받은 신분증을 제시하게 된다. 이런 신분증으로는 주민등록증, 자동차운전면허증, 여권 등이 있다. 이와 같은 신분증에는 사진, 이름, 주민번호, 주소, 발급 날짜, 발급 기관명 직인 등의 정보가 있다. 신분증에 적혀 있는 정보를 신뢰하는 것은 신뢰된 국가기관에서 발급한 신분증이기 때문이다. 사이버 세상에서도 신뢰된 기관이 사용자들에게 사이버 신분증을 발급해 준다면 사용자를 신뢰할 있게 것이다. 이와 같이 사이버 세상에서 사용자를 신뢰할 있게 해주는 것이 공개키기반구조 (Public Key Infrastructure)이다. 공개키기반구조는 암호 기술이 제공하는 데이터 무결성, 데이터 인증, 객체 인증 등의 기능을 이용하여 완성된다. 암호 기술을 이용하여 공개키기반구조를 구축한다.

 

[그림 3] 인감과 전자서명 비교

 

 

실생활에서 사람들은 집을 사고 계약서에 인감 도장을 찍는다. 그리고 계약서에 공인 중개사의 도장을 찍어 계약이 법적 효력을 갖도록 한다.

인감 도장은 국가 기관에 등록을 해야 인감 도장으로서 효력을 갖는다. 사람들은 자신이 사용하는 인감도장이 원본이라는 것을 주장하기 위하여 인감 증명서를 국가 기관으로부터 발급 받아 제출한다. 인감 증명서를 받은 사람은 인감 도장이 인감 증명서에 등록된 도장과 동일한 지를 확인해야 한다. 마찬가지로 사이버 세상에서도 이와 같은 역할을 하는 것이 필요하다.

지난 강좌에서 공개키 암호 시스템은 공개키와 비밀키 쌍이 존재한다고 했다. 공개키는 누구든지 확인할 있고, 비밀키는 소유자만이 갖고 있는 정보이다. 비밀키는 실세계에서 인감도장과 같은 역할을 한다. 공개키에 대응하는 비밀키는 누가 소유하고 있는지를 확인할 있는 방법이 필요하다. 공개키는 신뢰된 기관(인증기관) 등록하여 공개키 인증서를 발급받게 되면 인감 증명서와 같은 역할을 하여 누구든지 공개키의 정당성을 확인할 있게 된다. 여기서 인증기관의 역할은 공개키가 특정인의 것임을 확인하고 증명해 주는 것이다.

공개키 인증서에는 공개키가 누구의 소유라는 것을 증명하기 위하여 공개키 소유자 이름, 유효기간, 일련번호, 공개키 정보 인증 기관의 전자서명값 등이 포함되어 있다. 인증기관의 전자 서명값은 인감증명서에서 발급 기관의 직인에 해당한다. [그림 3] 실세계의 인감도장과 사이버 세상에서의 전자서명을 계약이라는 환경에 적용하여 비교한 것이다.

 

현실 세계를 사이버 세계로 바꿀 있도록 하는 공개키 기반구조 구성 객체 대하여 우리나라의 구축 현황을 통해 알아보자. 1999 7월부터 시행된 전자서명법에 의해, 정보통신부 장관이 공인인증기관을 지정하고, 한국정보보호진흥원의 전자서명인증관리센터를 통하여 공인인증이관을 관리·감독한다.

 

전자서명인증관리센터가 하는 일은 공인인증기관의 정보를 관리하고 운영상태를 감독하며, 공인인증기관에게 공개키 인증서를 발급한다. 뿐만 아니라 공인인증기관이 업무폐지, 지정취소 등의 사유로 업무를 계속할 없고 이를 다른 공인인증기관이 인수하지 않는 경우 인증서 관리에 필요한 정보를 인수받아 대신 관리한다. 또한, 전자서명 인증기술을 개발하고 보급하는 일도 수행한다.

 

공인인증기관은 다음과 같은 업무를 수행한다.

첫째, 인증서 발급 신청자로부터 신상정보를 제출받아 본인여부를 확인하고, 제출한 공개키가 신청자의 비밀키와 합치하고 안전한지 확인한다. 둘째, 인증서 신청자에 대한 필요정보를 기재한 공개키 인증서를 발급한다. 이때 공개키 인증서에는 신청자의 공개키 정보가 포함되어 있다. 셋째, 공인인증기관은 공개키 인증서를 보안장치가 인증기관의 저장소(디렉토리) 저장하고 관리한다. 넷째, 공인인증기관은 공개키 인증서를 공개하고 효력정지 또는 폐지 사실을 관련 공개키 인증서 이용자에게 통지하고 공표하며, 3자의 문의에 대하여 확인하여 알려준다. 다섯째, 공개키 인증서 발급 공인인증기관 운영에 관련된 자료들을 법적인 분쟁이 발생할 경우에 대비해 보관하여 증거로 제시한다

 

등록대행기관은 공인인증기관을 대신하여 공개키 인증서 발급 신청자로부터 신상정보를 받아 본인여부를 확인하고, 신청자에게 온라인으로 공개키 인증서를 신청하는데 필요한 참조번호와 인가코드를 부여한다. 참조번호와 인기코드는 온라인으로 사용자의 공개키를 등록하는데 필요한 사용자 등록용 정보로서, 가지는 다른 사람에게 보여주지 말아야 한다. 왜냐하면 온라인으로 자신을 나타내는 공개키를 등록하기 위해 신청자에게만 제공된 정보이므로 이를 다른 사용자가 알게 된다면 신청자가 아닌 다른 사람이 신청자로 가장하여 공개키 인증서를 신청할 있기 때문이다.

 

사용자는 공인인증기관 또는 공인인증기관과 계약 관계에 의해 신청 업무를 대신 수행하는 등록대행기관에 가서 본인임을 증명하는 신상정보를 제출하고, 참조번호와 인가코드를 부여받는다. 그리고, 공인인증기관의 인증서 신청 사이트에 접속하여 참조번호와 인가코드를 입력하여, 공개키와 비밀키 쌍을 자신의 컴퓨터에서 생성한 공개키, 참조번호, 인가코드를 포함한 메시지를 자신의 생성한 비밀키로 전자서명하고, 공인인증기관으로 전송하여, 공개키 인증서를 발급 받는다.

이때 공인인증기관은 사용자가 전자서명한 메시지를 메시지 안에 포함되어 있는 공개키를 사용하여 위·변조가 되지 않았고, 공개키에 합치하는 비밀키로 전자서명되어 있음을 확인하게 된다.

공개키 인증서를 사용하다 보면 비밀키를 분실하거나 또는 하드 디스크 포맷 등으로 삭제되는 경우가 발생한다. 이런 경우에는 어떻게 해야 하는 것일까? 신용카드 분실의 예와 비교하여 알아보자. 신용카드를 사용하다 분실하게 되면 카드사로 전화를 걸어 카드 소유자임을 전화를 통해 증명하고 분실신고를 하게 된다. 분실 신고된 카드는 카드사의 거래불가 카드목록에 올라가 있어 이상 결제하는데 사용할 없게 된다는 것을 우리는 알고 있다

마찬가지로 공개키 인증서의 비밀키가 분실 또는 삭제된 경우에 사실을 자신의 공개키 인증서가 등록된 공인인증기관에 신고하여야 한다. 공인인증기관은 해당 공개키 인증서를 사용하는 모든 사용자에게 사실을 알려주기 위해 공개키 인증서 효력정지 폐지목록(Certificate Revocation List: CRL) 발행하여 공개된 저장소인 디렉토리에 공고한다. [그림 4] 우리나라 공개키기반구조를 간략히 나타낸 것이다.

 

사용자들은 비밀키를 이용하여 전자문서에 전자서명을 수행하여 수신자에게 전자문서, 전자서명 , 그리고 자신의 공개키 인증서를 전달한다. 전자문서, 전자서명 , 공개키 인증서를 받은 수신자는 공개키 인증서가 정당한 공개키 인증서인지 확인하기 위하여, 디렉토리에 공개된 CRL 해당하는 공개키 인증서가 존재하는지 여부를 확인한다. 만약 해당 공개키 인증서가 CRL 안에 존재한다면 인증서를 신뢰하지 않게 되고, 존재하지 않는다면 신뢰하게 된다. 또한 수신자는 공개키 인증서 내에 공개키 정보를 이용하여 전자문서의 전자서명값을 검증하고, 검증이 성공한다면 전자문서를 공개키 인증서의 소유자가 보냈다는 것을 신뢰하게 된다. 예는 이번 강좌의 처음에 소개한 송신자를 확인하는 과정이라고 있다.

 

수신자를 확인하는 방법을 공개키 기반구조에서는 어떻게 제공하는가? 이것도 앞의 예와 마찬가지로 공개키 인증서를 이용한다. 공개키 인증서에는 공개키 소유자의 정보가 있으며, 공개키에 대응하는 비밀키는 소유자만이 알고 있는 정보이다. 전자문서를 공개키 인증서의 공개키로 암호화하여 소유자에게 전송한다면, 공개키 인증서 소유자 이외에 어떤 누구도 전자문서의 내용을 없다. 송신자는 보내려고 하는 전자문서를 해당 수신자에게만 보내기 위하여 공개키 인증서의 소유자가 수신자와 같다는 것만 확인하면 된다. 여기서 명심해야 것은 공개키 인증서가 신뢰된 기관으로부터 발급되었는지를 확인하는 것이다. 신뢰되지 않은 기관으로부터 발급된 공개키 인증서는 위조되어 있을 있기 때문이다.

 

이와 같이 공개키 기반구조는 송신자 확인과 수신자 확인을 공개키 인증서를 통하여 있기 때문에 현실 세계의 신뢰관계를 사이버 세계에서 가능하도록 해준다는 것을 있다. 이번 강좌는 공개키 기반구조가 어떻게 신뢰관계를 형성해주는지를 현실 세계와 비교하면서 설명하였다. 다음 강좌에서는 공개키 인증서를 만드는데 사용되는 전자서명 기술과 이용 분야에 대하여 알아볼 것이다.

 

 

 

정찬주 기반기획팀 연구원

  

 

지난 강좌에서는 공개키 기반구조가 사이버 세상에서 신뢰관계를 형성해 주는 역할을 한다는 것을 알아보았다. 공개키 기반구조에서 개인에게 발급되는 사이버 신분증인 공개키 인증서도 신뢰기관이 전자 서명한 데이터이다. 이번 강좌에서는 신뢰 관계를 형성하는데 있어 기반 기술로 활용되고 있는 전자서명 기술의 원리, 전자서명 생성 검증 절차, 그리고 이용 분야에 대하여 알아보자.

 

TV 드라마를 보면 부모와 어린 자식이 헤어지는 경우 거울이나 동전을 2개로 쪼개어 부모와 어린 자식이 하나씩 나눠 가진 , 세월이 흐른 쪼개진 거울이나 동전을 붙여 서로를 확인하는 것을 있다. 여기서 쪼개진 2개의 거울(동전) 상대방의 신원을 확인하기 어려운 사이버 공간에서 서로를 알아볼 있는 쌍의 정보(공개키와 비밀키) 사용하여 신원을 증명하는 전자서명의 원리와 비슷하다. 쪼개진 2개의 거울(동전) 전자서명을 생성하고 검증하는데 사용되는 2개의 정보인 비밀키 (전자서명 생성키) 공개키 (전자서명 검증키) 비유할 있다.

 

[그림 1] 동전을 통한 전자서명 원리를 이해하도록 돕는다. 공개키와 비밀키는 수학적으로 합치하는 하나의 쌍이라는 것을 지난 공개키 암호방식에 대한 설명을 통해 알아봤다.

 

 



 

송신자가 전자문서를 수신자에게 인터넷을 통해 전달하는 과정을 예로 들어 전자서명 생성 검증 절차에 대하여 알아보자. [그림2] 전자문서에 대하여 전자서명을 생성하는 절차를 나타낸 것이다.


 

 

송신자는 자신이 작성한 전자문서에 대한 전자서명을 생성하기 위하여 송신자의 공개키 인증서의 공개키와 수학적으로 일치하는 비밀키를 갖고 있어야 한다. [그림 2]에서 보는 것과 같이 자물쇠를 비밀키라고 한다면, 자물쇠에 맞는 열쇠를 공개키라고 하자. 송신자는 전자문서를 해쉬 함수에 넣어 압축된 유일한 값을 만든다. 해쉬 함수는 임의의 길이의 메시지를 고정된 길이(, 160 비트) 출력하는 함수이다.

해쉬 함수의 특성으로는 일방향성, 충돌회피성 등이 있다. 일방향성은 해쉬 값으로부터 해쉬되기 전의 원본데이터로 복구할 없다는 특성이다. 충돌회피성은 동일한 해쉬 값을 갖는 서로 다른 원본데이터를 찾을 없다는 특성이다. 이러한 특성 때문에 [그림 2]에서 해쉬 함수로부터 압축되어 나온 해쉬 값을 사람마다 다른 유일한 정보인 지문으로 표현하였다. 해쉬 값과 송신자의 비밀키를 전자서명 알고리즘에 입력하여 전자서명 값을 얻는 과정이 전자서명 생성 절차이다. 이렇게 생성된 전자서명 값과, 전자서명 하고자 했던 원본 전자문서, 그리고 전자서명을 생성하는데 사용한 비밀키에 수학적으로 일치하는 공개키 인증서를 수신자에게 인터넷을 통해 전달한다.

 

[그림 3] 전달받은 전자문서의 전자서명을 공개키 인증서를 이용하여 검증하는 절차이다.

 

 

수신자는 전달받은 정보(전자문서, 전자서명 , 송신자의 공개키 인증서) 전자문서를 해쉬 함수에 넣어 수신자가 압축한 해쉬 값을 계산한다. 그리고 전달받은 정보 전자서명 값과 송신자의 공개키 인증서를 전자서명 알고리즘에 입력하여 송신자가 보내온 원본 해쉬 값을 계산한다. 마지막으로 공개키 인증서의 소유자인 송신자가 전자서명을 수행했는지 확인하기 위하여 수신자가 계산한 해쉬 값과 원본 해쉬 값을 비교한다. 개의 값이 동일할 수신자는 공개키 인증서의 소유자가 해당 전자문서에 대한 전자서명을 생성한 것으로 믿는다. 만약 개의 값이 다르다면, 수신자는 위·변조된 전자문서로 인식하여 전자서명을 믿지 않게 된다.

 

지난 강좌에서 공개키 인증서도 신뢰된 인증기관의 비밀키를 사용하여 전자서명 되어 있다고 하였다. 어떤 절차에 따라 공개키 인증서가 전자서명 되는지 알아보자.

 

강좌를 읽고 있는 독자의 컴퓨터 운영체제가 Windows 계열이라면, C:\\Program Files\\NPKI 라는 폴더를 열어보기 바란다. NPKI 하위 폴더에는 KISA, SignGate, SignKorea, yessign 등의 폴더가 있을 것이다. 만약 이런 폴더가 없다면 전자서명을 이용하는 전자거래 사이트에 접속하지 않은 것이다. KISA라는 폴더는 국내 전자서명인증관리체계 최상위 인증기관인 한국정보보호 진흥원의 공개키 인증서가 들어 있는 폴더이다. SignGate, SignKorea, yessign 등의 폴더는 국내 공인인증기관의 폴더이고, 해당 공인인증기관으로부터 공개키 인증서를 발급받았다면, 하위에 User라는 폴더가 있다. User 폴더를 열어보면 CN=홍길동(Hong Kildong)xxxx, ou=XXX, ou=xxxx, o=yessign, c=kr라는 폴더가 있다. 폴더를 열어보면, 해당 공인인증기관으로부터 발급 받은 독자의 공개키 인증서(signCert.der) 암호화된 비밀키(signPri.key) 파일이 있다. 공개키 인증서를 발급 받지 않은 독자들의 이해를 돕기 위하여 최상위인증기관의 인증서를 가지고 설명하도록 한다. 최상위인증기관의 공개키 인증서는 C:\\Program Files\\NPKI\\KISA\\KISA.der 파일형태로 저장되어 있다.



[그림 4] 최상위인증기관 공개키 인증서의

 

[그림 4] 왼쪽은 KISA.der 파일을 더블 클릭하면 나타나고, 오른쪽은 왼쪽 그림의 메뉴 자세히라는 탭을 선택하면 나타나게 된다. 왼쪽의 그림을 보면, 발급 대상이 공개키 인증서의 소유자에 해당하고, 발급자는 공개키 인증서를 발급한 기관을 알려준다. 위의 예와 같이 발급 대상과 발급자가 같은 공개키 인증서를 자체 서명된(Self-Signed) 공개키 인증서라고 한다. 일반적으로 최상위인증기관 인증서는 인증서를 발급해주는 상위 기관이 없어 자체 서명된 공개키 인증서를 사용한다. 유효기간은 공개키 인증서를 사용할 있는 기간을 의미한다. 실제로 공개키 인증서가 어떻게 전자서명 되어 저장되는 지를 알아보자. [그림 4] 오른쪽 그림에서 필드 해당하는 버전, 일련번호, 서명 알고리즘, 발급자, 유효기간, 주체 등에 해당하는 각각의 값들이 해쉬 함수에 입력되고, [그림 2]에서처럼 해쉬된 값과 공개키에 대응하는 비밀키를 전자서명 알고리즘에 입력하여 전자서명 값이 나온다. 전자서명 값을 공개키 인증서의 전자서명 필드에 저장하여 완전한 하나의 공개키 인증서가 나오게 된다.

 

공개키 인증서에 대한 전자서명 검증은 [그림 4] 오른쪽에 있는 모든 필드의 값을 해쉬 함수에 입력하여 얻은 해쉬 값과 공개키 인증서의 전자서명 값과 공개키를 전자서명 알고리즘에 입력하여 계산한 해쉬 값이 동일한지를 비교하여 동일하다면 올바른 공개키 인증서로 받아들이고, 값이 틀리다면 위조 또는 변조된 공개키 인증서로 받아들이게 된다. 이와 같은 전자서명 생성 검증 과정은 사용자가 공개키 인증서를 이용하여 은행, 증권 등의 사이트에 로그인, 이체 주문할 때마다 일어난다.

 

전자서명은 인터넷을 이용한 은행업무, 증권업무, 쇼핑, 민원서비스 일상생활의 대부분의 업무에 이용할 있다. 전자서명을 이용한 은행업무의 경우 은행을 직접 방문하지 않고도 인터넷을 통하여 계좌이체, 송금 대출 등과 같은 은행 업무를 안전하게 처리할 있다. [그림 5] 전자서명을 이용한 은행 업무를 나타낸 것이다.


 

 

 

인터넷을 통해 이용자는 은행 사이트에 접속하게 된다. 접속한 이용자는 로그인 과정을 전자서명 과정을 통하여 수행한다. 일반적인 사이트에서 이용자는 아이디와 패스워드를 이용하여 접속하지만, 공개키 인증서를 이용하여 접속하는 사용자는 은행 사이트로부터 전달받은 난수 (random value) [그림 2]에서와 같은 방식으로 전자서명을 수행하여 전자서명 값을 은행사이트로 전달한다. 은행은 전달받은 전자서명 값과 사용자의 공개키 인증서를 전자서명 알고리즘에 입력하여 얻은 해쉬 값과 은행사이트가 사용자에게 전달한 난수 값을 해쉬 값과 비교하여 동일하다면 정당한 사용자로 받아들여 해당 이용자의 계좌정보를 보여주게 된다. 위와 같은 사용자 확인 과정을 거친 이용자가 계좌이체를 전자서명을 통하여 수행하는 경우에는 원본문서(출금계좌번호, 출금계좌비밀번호, 입금계좌번호, 입금은행명, 이체금액 ) 대하여 전자서명을 [그림 2] 같이 수행하고, 원본문서, 전자서명 값과 공개키 인증서를 은행사이트로 전달한다. 정보를 받은 은행 사이트는 [그림 3]에서와 같이 전자서명 검증을 수행하고, 공개키 인증서에 대한 검증도 수행하여 올바른 값이라면 은행은 입금계좌로 이체금액을 이체 해준다.

증권사 객장을 방문하거나 전화 이용 없이도 투자자의 신원확인과 거래 사실이 증명할 있는 증권업무에도 전자서명이 이용된다. [그림 6] 전자서명을 이용한 증권업무를 나타낸 것이다. 로그인 주문 신청의 상세 과정은 은행업무의 설명과 비슷하다. 또한, 주민등록등본, 호적등본 발급 각종 행정민원서비스를 위해 해당기관(구청, 동사무소 ) 방문하지 않고도 쉽게 처리할 있는 민원업무에도 전자서명이 이용된다. [그림 7] 전자서명을 이용한 민원업무를 나타낸 것이다. 

 


 

 

 

 

이외에도 인터넷 쇼핑, 온라인 게임, 인터넷 보험, 전자계약, 온라인 세무신고 납부 다양한 분야에서 전자서명이 사용되고 있다.

 

전자서명이 앞으로 실생활에서 쓰임새가 더욱 확대될 것이고, 나아가 안전한 인터넷 세상을 만드는데 중요한 역할을 것이다. 지난 번의 강좌가 독자들이 암호, PKI 전자서명에 대한 기본적인 개념을 이해하는 기회가 되었기를 바란다.

 

출처 : http://www.coconut.co.kr/

2008. 10. 3. 21:55

5.25 프로그램 베타버젼 작업 완료





 




인터페이스는 95프로 완성되었다..컬러코드 바꾸는 수정함수만 만들면 된다..

그외에도..각 방의 컬러코드들을 인쇄하는 기능을 넣을까 말까..고민중이다...

대충..인터페이스..버그도 수정되었고....