정찬주 기반기획팀 연구원

 

 

 

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

 

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 전자서명에 대한 기본적인 개념을 이해하는 기회가 되었기를 바란다.

 

 

 

 

[출처: 정보보호뉴스 2005 4월호]

고난은 잠자던 용기와 지혜를 깨운다.
사실, 고난은 우리에게 없던 용기와 지혜를 창조해 내기도 한다.
우리는 오직 고난을 통해 정신적으로나 영적으로 성숙할 수 있다.

- 정신과의사, 스코트 펙

칼 힐티는
‘고난은 미래의 행복들 뜻하며 그것을 준비해 주는 것이다.
그런 경험을 통하여, 난 고난에 직면했을 때 희망을 품었다’
고 말했습니다.

저는 ‘고난과 역경은 하늘이 내린 선물이다’는 생각을
늘 간직하며 살아가고 있습니다.

[출처 : 조영탁의 행복한경영이야기]

99%의 인간은 현재를 보면서 미래가 어떻게 될지를 예측하고
1%의 인간은 미래를 내다보면서 지금 현재 어떻게 행동해야 될지를 생각한다.
물론 후자에 속하는 1%의 인간만이 성공한다.
그리고 대부분의 인간은 1%의 인간을 이해하기 어렵다고 말한다.

- 일본 경영컨설턴트, 간다 마사노리

하버드 대학 에드워드 밴필드 박사 역시
'우리 사회에서 가장 성공적인 사람은 10년 20년 후의 미래를 생각하는
장기적 시각을 가진 사람들이었다'는 연구결과를 발표한 적이 있습니다.

어려운 때일수록 당장의 편의나 이익만을 생각하는 것이 아니라,
먼 미래적 관점에서 오늘 미리 무엇을 준비해야 할지를
바라보고 행동하는 지혜가 필요합니다.

[출처 : 조영탁의 행복한경영이야기]

각 볼륨에 해당하는 디바이스 오브젝트를 찾기 위해 먼저 볼륨에 할당된 상징적인 이름을 찾아야 한다.

WinObj
http://technet.microsoft.com/en-us/sysinternals/bb896657.aspx



성공하는 사람은
성공하지 못하는 사람들이 하기 싫어하는 일을 하는 습관을 가지고 있다.
물론 그들도 그런 일을 하고 싶지 않기는 마찬가지이다.
그러나 그들은 목적의식이라는 힘으로 그것을 극복하고,
하기 싫은 일을 하고 싶은 일로 만든다.

- 알버트 그레이

2500년 전에 공자는 ‘알기만 하는 사람은 좋아하는 사람만 못하고,
좋아하는 사람은 즐기는 사람보다 못하다’고 설파한 적이 있습니다.

물론, 즐길 수 있는 일을 업(業)으로 삼는 것만큼 행복한 일은 없을 겁니다.
그러나 지금 하고 있는 일을 좋아하게끔 노력하는 것 또한
그만한 가치가 있음에 틀림없습니다.

[출처 : 조영탁의 행복한경영이야기]

뭔가 성취하기를 원한다면 반드시 해야 할 일이 하나있다.
스스로에게 재능이 없다는 믿음을 단호하게 거부하는 것이다.
재능을 갖고 있다는 확고한 신념이 없다면
아무리 놀라운 재능을 갖고 있어도 소용이 없다.
‘나는 재능이 없다’고 믿는 것은 우리에게 치명적인 영향을 끼친다.

- 이민규, ‘1%만 바꿔도 인생이 달라진다’에서

사회학자 로버트 머튼은 '사람들의 신념이 현실로 이루어지는 것,
즉 스스로 자신에게 기대나 암시를 통해 목표를 성취하도록 하는 것'을
자성예언(自成豫言)이라고 명명한 바 있습니다.

뇌는 상상과 현실을 따로 구분하지 않습니다.
원대한 꿈을 꾸고 그 꿈이 현실인 것처럼 생활하면
꿈은 마침내 현실이 됩니다.
신념은 그 자체로 힘을 가지고 있습니다.

[출처 : 조영탁의 행복한경영이야기]

'반대나 저항이 없으면 발전 가능성도 없다.
공기에 저항이 없으면 독수리가 비상할 수 없다.
물에 저항이 없으면 배가 뜰 수 없다.
중력이 없으면 걸을 수 조차 없다.

프랑스 한 마을에서는 포도나무를 심을 때 일부러 좋은 땅에 심지 않는다.
토질이 좋은 땅에 심으면 쉽게 자라
탐스런 포도가 열리긴 하지만 뿌리를 깊이 내리지 않아
땅 거죽의 오염된 물을 흡수하기 때문에 포도의 품질이 떨어지기 때문이다.
그러나 포도나무를 척박한 땅에 심으면 빨리 자라지는 못해도
땅속 깊이 뿌리를 내려 좋은 물을 흡수하기 때문에 오염되지 않고 뛰어난 포도를 얻는다'
차동엽신부의 무지개 원리에 나오는 이야기입니다.

쉽게 이루는 일보다 힘들게 이루는 일이 더 가치가 있음을 알게 하는 이야기입니다.

오늘도 행복한 하루 만드시기 바랍니다.

[출처 : 조영탁 Dream]

세상을 밝게 보는 사람도 있고 세상을 어둡게 보는 사람도 있다.
각자의 관점에서 보면 둘 다 옳다.
그러나 세상을 보는 관점에 따라 즐거운 삶과 고통에 찬 삶,
성공하는 인생과 실패의 인생이 결정된다.
따라서 행복은 자기 안에서 찾아야 하는 것이다.

- 랄프 트라인

외부 환경은 누구에게나 똑같이 주어집니다.
그러나 그것을 긍정적으로 보는 사람에게는 긍정적 결과가,
부정적으로 보는 사람에게는 부정적 결과가 나옵니다.
그런 점에서 외부 조건은 주어지는 것이 아니라, 내가 결정하는 것입니다.
성공과 행복을 꿈꾼다면 먼저 긍정을 심어야 합니다.

[출처 : 조영탁의 행복한경영이야기]

관직에 오른 사람이 태만해지는 것은 업적을 이룬 뒤부터이며,
질병이 심해지는 것은 늘 호전된 직후이고,
화(禍 : 재난, 근심)는 게으르고 삼가지 않는 데서 생기고,
효심이 옅어지는 것은 아내와 자식이 생기고부터다.
이 네 가지를 잘 살펴 시작과 끝이 한결 같아야 한다.

- 한시외전(韓詩外傳), ‘직장 논어’에서 재인용

시경(詩經)에,
'두려워서 벌벌 떨며 조심하기를
마치 깊은 연못에 서 있는 듯 하고, 얇은 얼음을 건너듯이 하라.
(전전긍긍(戰戰兢兢), 여림심연(如臨深淵), 여리박빙(如履薄氷))'
라는 말이 나옵니다.

소홀히 대해도 괜찮은 일은 없습니다.
소홀히 대하는 순간 재앙의 싹은 자라기 시작합니다.
승승장구 하고 있을 때도 또 어려운 상황에 있을 때도
늘 마치 살얼음판을 걷듯이 조심조심하는 태도를 유지해야
잠재적인 우환을 미리 제거할 수 있습니다.

[출처 : 조영탁의 행복한경영이야기]

DDNS라는 방식을 사용하면 되는데 하나로(sk) 인터넷을 사용하는 경우는 80번 포트가 막혀 있어서 다른 포트를 사용해야 합니다.
잊어버리기 전에 정리를 해놓는게 좋을 듯...

1. 도메인을 등록한다.

www.domainclub.kr 에서 등록을 합니다.
(사실 다른 곳에 했다가 이곳으로 바꿨습니다. 이유는 전에 등록했던 곳에선 네임서버 변경하는데 제한이 있는데 이곳은 제한이 없습니다.  제가 가지고 있는 도메인은 true24.org)
도메인 이전에 관한 사항은 도메인 등록 기관에 문의 하세요.
네임서버 변경이 쉬우면 그냥 사용하시구요.

2. www.dnsever.com 에 가입한다.

DDNS를 해주는 사이트입니다. dyndns.org가 많이 쓰이는데 좀 느리고, 유료인것 같아서 dnsever로 하게 됐습니다. dnsever에 가입하면 5개의 네임서버를 제공해 줍니다.

3. 네임서버를 변경합니다.

domainclub에 네임서버 변경으로 가서 dnsever에서 받은 5개의 서버를 입력합니다.
상단 메뉴 -> 정보변경 -> 네임서버 변경
자신이 보유한 도메인 선택하시고 '네임서버 변경하기' 버튼 클릭
네임서버명, IP 모두 입력해 주세요

4. dnsever에서 셋팅하기

도메인 추가에서 도메인을 추가합니다.
웹포워딩을 셋팅합니다.


DDNS를 등록합니다.


 


웹포워딩과 DDNS 모두 www.true24.org를 등록할 수가 없어서 DDNS에는 main.true24.org를 등록합니다. DDNS의 IP주소는 하나로(SK)에서 동적으로 할당한 IP입니다. 최초 셋팅이라고 생각하세요. 나중에 서버가 자동으로 업데이트해 줍니다. 이 값은 공유기에서 가져오면 됩니다.
저는 IPTIME을 사용하는데 관리자로 들어가서 시스템정보 -> 인터넷연결상태에 가면 알 수 있습니다.




5. 잠시 정리하기.

여기까지 됐으면 웹브라우저에서 www.true24.org를 치면 집에 있는 공유기까지는 오는 겁니다. 대신 공유기에 올때는 main.trur24.org:8000으로 오지요. 이렇게 한 이유는 하나로(SK)는 80포트를 막아놨어요. 도메인 등록이나 이전 과정이 몇일이 소요되는데 일단 nslookup이나 ping으로 main.true24.org 해서 되면 도메인설정과 DDNS까지 잘 되었다고 볼 수 있지요.

> nslookup main.true24.org
Address : xxx.xxx.xxx.xxx
가 나오면 된겁니다.

> ping main.true24.org
해서 되면 성공


6. 공유기 셋팅

저는 IPTIME을 사용합니다. 기본적인 기능들이라 어느정도 기능이 있는 공유기라면 모두 가능하리라 생각합니다. 없으면 가격도 요즘 괜찮으니 포트포워딩 되는 것으로 하나 구매하세요.

공유기 내부네트워크 셋팅은 DHCP로 해도 좋은데 서버는 고정으로 주면 좋습니다. 192.168.1.2로 한다고 가정합니다.
공유기 관리자로 들어가서 NAT설정 -> 포트포워딩 설정에 가서 설정을 합니다.

내부IP주소에 모두 192.168.1.2 서버 주소를 써주면 됩니다.
80포트에 Apache2, 22포트에 sshd, 21포트에 ftp, 8080포트에 tomcat, 840포트에 tomcat blazeds가 셋팅되어 있습니다.

7. 유동IP 업데이트 해주기


이 부분은 서버에서 정기적으로 유동 IP를 dnsever쪽에 알려주어 update를 해주는 겁니다.
저는 리눅스를 사용하고 있어서, wget을 사용하는데 윈도우즈용도 있지요.
자세한 설명은 dnsever에 있으니 그것을 참고하시면 됩니다.
dnsever에 가셔서 좌측 중간쯤에 "다이나믹 DNS 사용법" 을 보세요.
이때 공유기로 들어올때 main.true24.org로 오니까 www.true24.org가 아니라 main.true24.org를 업데이트 해주셔야 합니다.

리눅스에서 자동으로 다이나믹DNS 업데이트를 실행하는 방법
  1. 다이나믹DNS업데이트 실행 스크립트를 만듭니다.
    [root]# vi /usr/local/bin/ddns.sh
    #!/bin/sh
    /usr/bin/wget -O - --http-user=아이디 --http-passwd=인증코드 'http://dyna.dnsever.com/update.php?업데이트_인자값'
    위와 같이 하여
    /usr/local/bin/ddns.sh 라는 파일을 편집하여 저장한 다음
    [root]# chmod +x /usr/local/bin/ddns.sh
    로 하여, 스크립트에 실행권한을 부여합니다.
  1. /etc/crontab 파일 편집하여,일정한 시간마다(예:매 5분) 다이나믹DNS 업데이트 스크립트 작동하도록 합니다.
    [root]# vi /etc/crontab
    */5 * * * * root /usr/local/bin/ddns.sh > /dev/null 2>&1
  1. /etc/rc.d/rc.local 파일에 다이나믹DNS 업데이트 스크립트 실행 라인을 추가하여, 시스템 시작시에 스크립트 실행되도록 합니다.
    (리눅스배포판의 종류에 따라 시작스크립트 방식이 다릅니다. Ubuntu 리눅스의 경우 /etc/rc.local 을 사용합니다. Debian 리눅스의 경우 rc.local 파일을 사용하지 않습니다. 자세한 사항은 Debian 리눅스FAQ를 참조하십시오.)
    [root]# vi /etc/rc.d/rc.local
    /usr/local/bin/ddns.sh

 

 


하기 전엔 복잡하더니 적고보니 간단하네요.
80포트가 막혀서 다른 포트로 들어가는건데 혹시 다른 좋은 방법 아시는 분은 알려주세요.

+ Recent posts