메뉴 건너뛰기

infra

2차 강의 분

박영식2002.07.13 12:12조회 수 1854댓글 0

    • 글자 크기
개요

1. 프로토콜의 개념과 종류
   1) 상위 응용 프로토콜 - TCP/IP
   2) TCP/IP 패키지 응용 프로토콜
     1> HTTP
     2> TELNET
     3> FTP
     4> SMTP
     5> SLIP
     6> PPP
     7> POP-POP3
     8> IMAP
     9> SSL
  3) 기타 프로토콜
     IPX
  4) 프로토콜 이용하기(메일 서버)
2. 프로토콜과 보안

내용
1. protocol ; 프로토콜

프로토콜 본래의 의미는 외교에서 의례 또는 의정서를 나타내는 말이지만, 네트웍 구조에서는 표준화된 통신규약으로서 네트웍 기능을 효율적으로 발휘하기 위한 협정이다. 즉, 통신을 원하는 두 개체간에 무엇을, 어떻게, 언제 통신할 것인가를 서로 약속한 규약이다.

컴퓨터 네트웍의 규모가 증가되고 네트웍을 이용한 정보전송 수요가 다양화되며, 소프트웨어와 하드웨어 장비가 계속 증가되는 최근의 환경에서, 효율적인 정보 전달을 하기 위해서는 프로토콜의 기능이 분화되고 복잡해질 수밖에 없다. 따라서 이러한 환경적인 요구를 만족하기 위해서는 프로토콜 계층화의 개념이 필요하게 되었다.

프로토콜 계층화의 개념은 마치 구조적 프로그래밍 개념과 비슷한데, 각 계층은 모듈과 같으며 각 계층의 수직적 상하관계는 top-down 구조와 같다. 즉, 네트웍의 프로토콜 계층화는 하위계층이 상위계층을 서비스하는 것과 같으며 호출 프로그램과 피호출 프로그램의 매개변수 상호전달 방식 또한 상위계층이 하위 계층의 서비스를 받을 때와 같은 매개변수 전달방식과 같다. 이러한 프로토콜 계층화 개념을 받아들여 상품화한 것이, IBM사가 1974년에 내놓은 SNA 이다.

SNA의 목적은 IBM사 제품뿐만 아니라 다른 회사 제품과의 컴퓨터 기기 상호 접속시 발생되는 여러 종류의 호환성 문제를 해결하는 것이었다. SNA 이후 다른 회사들도 각자의 네트웍 구조를 내놓았는데, 이들의 목적 또한 네트웍간의 호환성 유지와 정보 전송 최소화에 있다.

특히 인터넷에서는 TCP/IP라는 프로토콜을 사용하는데 그 내용은 다음과 같다

TCP (Transmission Control Protocol)는 정보 패킷 차원에서 다른 인터넷 노드와 메시지를 상호 교환하는데 필요한 규칙을 사용한다.
IP (Internet Protocol)는 인터넷 주소 차원에서 메시지를 보내고, 받는데 필요한 규칙을 사용한다.

1) TCP/IP (Transmission Control Protocol/Internet Protocol)

TCP/IP[티씨피 아이피]는 인터넷의 기본적인 통신 프로토콜로서, 인트라넷이나 엑스트라넷과 같은 사설 망에서도 사용된다. 사용자가 인터넷에 접속하기 위해 자신의 컴퓨터를 설정할때 TCP/IP 프로그램이 설치되며, 이를 통하여 역시 같은 TCP/IP 프로토콜을 쓰고 있는 다른 컴퓨터 사용자와 메시지를 주고받거나, 또는 정보를 얻을 수 있게된다.

TCP/IP는 2개의 계층으로 이루어진 프로그램이다. 상위계층인 TCP는 메시지나 파일들을 좀더 작은 패킷으로 나누어 인터넷을 통해 전송하는 일과, 수신된 패킷들을 원래의 메시지로 재조립하는 일을 담당한다. 하위계층, 즉 IP는 각 패킷의 주소부분을 처리함으로써, 패킷들이 목적지에 정확하게 도달할 수 있게 한다. 네트웍 상의 각 게이트웨이는 메시지를 어느 곳으로 전달해야할지를 알기 위해, 메시지의 주소를 확인한다. 한 메시지가 여러 개의 패킷으로 나뉘어진 경우 각 패킷들은 서로 다른 경로를 통해 전달될 수 있으며, 그것들은 최종 목적지에서 재조립된다.

TCP/IP는 통신하는데 있어 클라이언트/서버 모델을 사용하는데, 컴퓨터 사용자(클라이언트)의 요구에 대응하여, 네트웍 상의 다른 컴퓨터(서버)가 웹 페이지를 보내는 식의 서비스를 제공한다. TCP/IP는 본래 점대점(点對点) 통신을 하는데, 이는 각 통신이 네트웍 상의 한점(또는 호스트 컴퓨터)으로부터 시작되어, 다른 점 또는 호스트 컴퓨터로 전달된다는 것을 의미한다. TCP/IP와 TCP/IP를 이용하는 상위계층의 응용프로그램들은 모두 "커넥션리스 (connectionless)"라고 불리는데, 이는 각 클라이언트의 요구가 이전에 했던 어떠한 요구와도 무관한 새로운 요구로 간주된다는 것을 의미한다 (일상적인 전화통화가 통화시간 내내 지속적으로 연결되어 있어야 하는 것과는 다르다). 커넥션리스는 네트웍을 독점하지 않으므로, 모든 사람들이 그 경로를 끊임없이 공동으로 사용할 수 있게 한다 (사실 TCP 계층 그 자체는 어떤 한 메시지가 관계되어 있는 한 커넥션리스가 아니라는데 유의해야 한다. TCP 접속은 어떤 한 메시지에 속하는 모든 패킷들이 수신될 때까지 계속 유지된다).

많은 인터넷 사용자들이 TCP/IP를 이용하는 상위계층 응용프로토콜에 대해서는 잘 알고 있다. 이러한 상위계층 프로토콜에는 웹서비스에 사용되는 HTTP를 비롯하여, 멀리 떨어져 있는 원격지의 컴퓨터에 로그온할 수 있게 해주는 Telnet (Telnet), 그리고 파일전송에 사용되는 FTP (File Transfer Protocol)와 메일 전송에 사용되는 SMTP (Simple Mail Transfer Protocol) 등이 있다. 이러한 프로토콜들은 종종 TCP/IP와 함께 패키지로 일괄 판매된다.

PC 사용자들은 보통 인터넷에 접속하기 위해 SLIP (Serial Line Internet Protocol)이나 PPP (Point-to-Point Protocol) 프로토콜을 사용한다. 이러한 프로토콜들은 다이얼업 전화접속을 통해 접속서비스사업자의 모뎀으로 보내질 수 있도록 IP 패킷들을 캡슐화한다.

1>HTTP (Hypertext Transfer Protocol) ; 하이퍼텍스트 전송 규약

HTTP[에치티티피]는 웹 상에서 파일(텍스트, 그래픽 이미지, 사운드, 비디오 그리고 기타 멀티미디어 파일)을 주고받는데 필요한 프로토콜로서 TCP/IP와 관련된 하나의 응용 프로토콜이다.

HTTP의 한 부분을 이루는 중요한 개념들은 - 그 이름에도 내포되어 있듯이 - 모든 파일들이 다른 파일들에 대한 참조 링크를 가질 수 있다는 것이며, 그 링크를 선택하면, 또다른 내용이 추가적으로 전달되는 식의 아이디어로 되어 있다. 웹 서버는 모두 HTTP 데몬을 가지고 있는데, 이 프로그램은 HTTP 요청을 기다리고 있다가 요청이 들어오면 그것을 처리하도록 설계되어 있다. HTTP의 입장에서의 웹 브라우저는 서버에 요구를 전달하는 하나의 클라이언트이다. 사용자가 URL을 입력하거나, 하이퍼텍스트 링크를 클릭 함으로써 파일을 요구하면, 브라우저는 HTTP 요구를 URL에 적혀있는 IP 주소에 전달한다. 지정된 서버상의 HTTP 데몬은 그 요구를 받아서, 필요한 작업이 혹 있다면 처리를 한 뒤에 요구된 파일을 찾아서 보내준다.

2>Telnet ; 텔넷

텔넷은 자신이 사용권한을 가지고 있다는 전제하에 다른 사람의 호스트 컴퓨터를 원격지에서 액세스할 수 있도록 해주는 방법이다. 좀더 기술적으로 말한다면, 텔넷이란 원격지 컴퓨터를 액세스하기 위한 사용자 명령어들과 TCP/IP 기반의 프로토콜을 말한다.

웹 서비스를 해주는 HTTP 프로토콜과, FTP 프로토콜은 원격지 컴퓨터에 특정 파일을 요구하기 위한 것이지만, 실제로 그 컴퓨터의 사용자가 되어 로그온하는 것은 아니다. 그러나, 텔넷을 이용하면 정식 사용자로서 로그온하여, 자신에게 부여된 권한에 따라 그 컴퓨터 상에 있는 특정한 응용프로그램이나 데이터를 이용할 수 있다. 텔넷접속을 위한 명령어는 다음과 같다.

telnet syatt.terms.co.kr

이 명령어가 제대로 수행되면 로그온 절차가 시작되며, 사용자아이디와 패스워드를 넣으라는 프롬프트가 화면에 나타나게 되는데, 성공적으로 로그온되면, 여느 다른 사용자들과 마찬가지로 그 컴퓨터를 이용할 수 있다.

텔넷은 프로그램 개발자나 특정한 호스트 컴퓨터에 있는 응용프로그램이나 데이터를 사용할 필요가 있는 사람들에게 주로 사용된다.
3> FTP (File Transfer Protocol) ; 파일 전송 프로토콜

FTP[에프 티 피]는 인터넷상의 컴퓨터들간에 파일을 교환하기 위한 표준 프로토콜로서 가장 간단한 방법이기도 하다. 화면에 표시할 수 있는 웹 페이지와 관련 파일들을 전송하는 HTTP (Hypertext Transfer Protocol), 전자우편을 전송하는 SMTP (Simple Mail Transfer Protocol)등과 같이, FTP도 역시 인터넷의 TCP/IP 응용 프로토콜 중의 하나이다. FTP는 웹 페이지 파일들을 인터넷상에서 모든 사람이 볼 수 있도록 하기 위해 저작자의 컴퓨터로부터 서버로 옮기는 과정에서 사용된다. 또한, 다른 서버들로부터 자신의 컴퓨터로 프로그램이나 파일들을 다운로드 하는 데에도 많이 사용된다.

사용자 입장에서는 간단한 명령어를 통하여 FTP를 쓰거나, 또는 그래픽 사용자 인터페이스를 제공하는 상용 프로그램을 쓸 수도 있다. 보통은 웹 브라우저도 웹 페이지로부터 선택한 프로그램을 다운로드 하는데 FTP를 사용한다. FTP를 사용하여 서버에 있는 파일을 지우거나 이름을 바꾸거나 옮기거나 복사하는 등 갱신작업을 할 수도 있다. FTP 서버에는 로그온을 해야하지만, 익명의 FTP를 사용하여 모든 사람들에게 공개된 파일들을 쉽게 접근할 수 있도록 하고 있다.
4> SMTP (Simple Mail Transfer Protocol) ; 단순 우편전송 규약

SMTP[에셈티피]는 전자우편을 보내고 받는데 사용되는 TCP/IP 프로토콜이다. 그러나, 수신 측에서의 큐 메시지능력의 제한으로 인해, 대개 수신을 위해서는 POP3나 IMAP 중의 하나의 프로토콜을 쓰는 것이 보통이며, 이러한 프로토콜은 서버에 각자의 우편함을 두고 사용자 메시지를 저장한 다음, 주기적으로 서버에 접속하여 편지를 다운로드 하는 식으로 운영된다. 다른 말로 설명하면, 사용자들은 SMTP를 메일을 보내는데 주로 사용하며, POP3나 IMAP 프로토콜은 자신의 서버에 수신되어 있는 메시지를 받아보는데 사용한다는 말이다. 유도라와 같은 대부분의 메일 프로그램은 SMTP 서버와 POP 서버를 모두 설정할 수 있도록 허용한다. 유닉스 기반의 시스템에서 sendmail은 전자우편용으로 가장 광범위하게 사용되는 SMTP 서버이다. 상용 패키지인 Sendmail에는 POP3 서버가 포함되어 있으며, 윈도우NT 버전도 나온다.

5>SLIP (Serial Line Internet Protocol)

SLIP[슬립]은 TCP/IP 네트웍에 다이얼업 접속을 할 수 있도록 해주는 데이터링크 프로토콜이다. 예를 들면, 인터넷 서비스 제공업체의 서버가 사용자의 요구를 인터넷에 전달하고, 사용자의 요구에 따른 인터넷의 응답을 다시 사용자에게 되돌려주는 SLIP 접속을 제공할 수 있다. 서버에 다이얼업 접속을 하면 대개 직렬회선을 사용하므로 병렬회선이나 T-1과 같은 다중화 회선에 비해 느리다. SLIP은 PPP보다 오래되고 단순한 프로토콜이다. 그러나 실제적인 측면에서 보면 SLIP을 이용하든, PPP를 통해 인터넷에 접속하든 큰 차이는 없다. SLIP은 IP 패킷들을 다이얼업과 같은 직렬 링크를 통해 전달한다.

6>PPP (Point-to-Point Protocol)

PPP[피피피]는 두 대의 컴퓨터가 직렬 인터페이스를 이용하여 통신을 할 때 필요한 프로토콜로서, 특히 전화회선을 통해 서버에 연결하는 PC에서 자주 사용된다. 예를 들면, 대부분의 ISP (Internet server provider)들은 자신들의 가입자를 위해 인터넷 PPP 접속을 제공함으로써, 사용자의 요구에 서버가 응답하고, 그 서버를 통해 인터넷으로 나아갈 수 있도록 하며, 사용자 요구에 따른 응답을 다시 사용자에게 보내주는 등의 일을 할 수 있도록 한다. PPP는 IP를 사용하며, 때로 TCP/IP 프로토콜 군(群)의 하나로 간주된다. PPP는 OSI (Open Systems Interconnection) 참조모델과 비교하면 제 2계층에 해당하는 데이터링크 서비스를 제공한다. 본래 PPP는 컴퓨터의 TCP/IP 패킷들을 포장해서 그것들이 실제로 인터넷으로 보내어질 수 있도록 서버로 전달한다.

PPP는 전이중 통신 프로토콜로서 twisted pair나 광케이블 또는 위성통신 등 다양한 물리적인 매체 상에서 사용될 수 있다. PPP는 패킷의 캡슐화를 위해 HDLC의 변형 중의 하나를 사용한다.

PPP는 그 이전에 사실상의 표준이었던 SLIP (Serial Line Internet Protocol) 보다 낫다고 평가되고 있는데, 그 이유는 PPP가 비동기식 통신 뿐 아니라 동기식 통신까지도 처리할 수 있기 때문이다. PPP는 다른 사용자와 하나의 회선을 공유할 수 있으며, SLIP에는 없는 기능인 에러검출 기능까지 가지고 있으므로, 선택이 가능하다면 PPP가 더 낫다할 수 있다.

7>POP3
POP란 Post Office Protocol의 약자로서 사용자가 서버로부터 전자우편을 읽을 수 있도록 고안된 통신규약이다. POP3 이메일 계정이란 WSP의 웹서버 메일박스(mailbox)에 저장되는 실제 이메일주소를 의미한다.  

8> IMAP
IMAP는 "Internet Message Access Protocol"의 약자로서 로컬 서버로부터 e-mail을 읽기 표준 프로토콜을 말합니다.
최신 버전은 IMAP4이며 POP와는 달리 메일의 제목이나 보낸 사람만 보고 메일을 다운로드할 것인지 선택할 수 있습니다.
IMAP서버를 사용하면 폴더나 메일함을 서버에 만들수 있으며 메일함의 메시지에 직접 접근하여 지우거나 검색을 할 수도 있습니다.
IMAP는 리모트 파일 서버(메일 서버에 접속하여 메시지를 관리하는)로 비유할 수 있고, POP는 "저장하고 전달하는" (다운로드만 하는) 메일 서비스로 비유할 수 있습니다. IMAP는 이런 경우에 매우 효과적입니다.
만약 학교나 직장에서는 인터넷에 항상 접속된 컴퓨터를 사용하며 메일을 체크하고 집에서는 전화로 전자우편을 체크한다면, POP3는 불편할때가 많습니다. 받았던 메일을 또 받아야되고, 또한 답신을 한 것인지 그렇지 않은 것인지 체크하기도 어렵기 때문입니다.
혹은 POP3 서버에서 메일을 받은 후 서버에서 삭제해 버렸다면 메일 박스나 개별 메일을 FTP등으로 전송해야 하는 불편함이 있습니다.
IMAP는 이런 POP의 단점을 보완하기 위해 제안되었습니다.
POP 대신 IMAP를 받는 메일 서버로 사용할 경우 계층적 폴더 관리와 원격 폴더 조작이나 메일 폴더 공유가 가능합니다.
IMAP가 POP를 대체하는 인터넷의 새로운 전자우편 이용을 위한 프로토콜로 부상하고 있기는 하지만, 아직은 이를 지원하는 메일 서비스가 그리 많은 편은 아닙니다. 그럼에도 불구하고 최근에 나오는 대부분의 메일 클라이언트들은 IMAP 서비스를 지원하고 있습니다.
IMAP를 제대로 사용하려면 최신의 IMAP4를 서버에서 지원해야 하고, 메일 클라이언트가 또한 이것을 잘 지원해야 합니다.
Outlook Express의 경우 현재 나와 있는 4.x의 경우 IMAP4를 지원하고 있기는 하지만 플래그(flag)나 메시지 삭제등을 제대로 지원하지 못하고 있습니다. 그러나 Outlook Express 5.0은 IMAP4 규약을 좀 더 확실히 지원합니다. Netscape 4.5PR2에 포함된 메일러인 Messenger의 경우 최신의 IMAP4를 잘 지원하는 편이며, IMAP4 서버를 사용할 경우 다중 계정을 지원합니다.
한편, 유닉스 호환 서버에서 대중적으로 사용하는 메일러인 Pine은 이전 버전부터 IMAP4를 잘 지원해 왔습니다. 최신 버전인 Pine 4.03의 경우 IMAP4와 POP3 모두 리모트에서 접속할 수 있는 기능을 제공하고 있습니다.

국내 ISP 가운데 받는 메일 서버로써 IMAP를 지원하는 곳으로는 Channeli, Netsgo등이 있으며 무료 E-메일 서비스인 Netian도 IMAP4를 지원합니다. 만약 여러분이 학교나 연구소 혹은 회사에서 E-메일 서비스를 이용하고 있다면 메일 서버 관리자에게 IMAP 서비스를 제공하도록 요청해 보십시오. IMAP 서버를 설치하는 것은 그다지 어렵지 않으며 여러분은 그로 인해 E-메일을 보다 편리하게 관리할 수 있습니다.

9> SSL
SSL Certificates HOWTO
3060;3204; 3109; 1. 서론 -796;3020;
SSL이란 무엇이며 인증서(Certificate)란 무엇인가?
SSL(Secure Socket Layer) 프로토콜은 처음에 Netscape사에서 웹서버와 브라우저 사이의 보안을 위해 만들었다. SSL은 Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 아래는 SSL이 어떻게 작동하는지에 대한 간단한 과정을 설명한 것이다.
[웹브라우저] SSL로 암호화된 페이지를 요청하게 된다. (일반적으로 https://가 사용된다)
[웹서버] Public Key를 인증서와 함께 전송한다.
[웹브라우저] 인증서가 자신이 신용있다고 판단한 CA(일반적으로 trusted root CA라고 불림)로부터 서명된 것인지 확인한다. (역주:Internet Explorer나 Netscape와 같은 웹브라우저에는 이미 Verisign, Thawte와 같은 널리 알려진 root CA의 인증서가 설치되어 있다) 또한 날짜가 유효한지, 그리고 인증서가 접속하려는 사이트와 관련되어 있는지 확인한다.
[웹브라우저] Public Key를 사용해서 랜덤 대칭 암호화키(Random symmetric encryption key)를 비릇한 URL, http 데이터들을 암호화해서 전송한다.
[웹서버] Private Key를 이용해서 랜덤 대칭 암호화키와 URL, http 데이터를 복호화한다.
[웹서버] 요청받은 URL에 대한 응답을 웹브라우저로부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송한다.
[웹브라우저] 대칭 키를 이용해서 http 데이터와 html문서를 복호화하고, 화면에 정보를 뿌려준다.
여기서 간단한 개념 정도는 알아두어야 할 것이다.
개인키/공개키(Private Key/Public Key):
Private key/Public Key를 이용한 암호화는 하나의 키로 암호화하고 나머지 다른 하나로 복호화할 수 있도록 되어있다. 이해하기 어렵겠지만 필자를 믿어라. (역주:독자가 PKI(Public Key Infrastructure)에 대해서 잘 모른다면 이에 대한 간단한 문서를 읽어보기를 권한다) 앞에서 암호화한 키로만 암호화를 할 수 있는 것이 아니라 반대 방향으로 복호화한 키로도 암호화할 수도 있다.(당연히 앞에서 암호화한 키가 이번엔 복호화하는 키가 되는 것이다) 이러한 키쌍은 소수(prime number)로부터 생성되며, 그 길이(Bit 단위)는 암호화의 강도를 나타낸다.
Private Key/Public Key는 이러한 키쌍을 관리하는 방법이다. 한개의 키는 안전한 장소에 자기만 알 수 있도록 보관하고(Private Key) 다른 하나는 모든 사람에게 퍼뜨리는 것(Public Key)이다. 그렇게 하면 그 사람들이 당신에게 메일을 보낼 때 암호화해서 보낼 수 있으며, 당신만이 그 암호를 풀 수 있다. 반대로 다른 사람에게 메일을 보낼 일이 있으면 Private Key를 이용해 암호화 할 수 있다. 그러면 그 사람들은 복호화해서 볼 수 있다. 그러나 이 방법은 모든 사람이 Public Key를 가지고 있어야 하기 때문에 그리 안전한 방법이 아니다. (역주:오히려 역효과를 일으킬 수 있다. 단순하게 메시지, 파일에 암호화, 서명을 할 생각이면 PGP나 GnuPG를 권한다)
인증서(Certificate):
당신과 접속해있는 사람이나 웹 사이트가 믿을 수 있는지 어떻게 판단할 수 있을까? 한 웹사이트 관리자가 있다고 가정하자. 그 사람이 당신에게 이 사이트가 믿을만하다고 (심각할 정도로) 열심히 설명했다. 당신이 그 사이트의 인증서를 설치해 주기를 바라면서 말이다. 한두번도 아니고 매번 이렇게 해야한다면 귀찮지 않겠는가?
인증서는 여러 부분으로 이루어져있다. 아래는 인증서 속에 들어있는 정보의 종류를 나타낸 것이다.
인증서 소유자의 e-mail 주소
소유자의 이름
인증서의 용도
인증서 유효기간
발행 장소
Distinguished Name (DN)
- Common Name (CN)
- 인증서 정보에 대해 서명한 사람의 디지털 ID
Public Key
해쉬(Hash)
SSL의 기본 구조는 당신이 인증서를 서명한 사람을 신뢰한다면, 서명된 인증서도 신뢰할 수 있다는 것이다. 이것은 마치 트리(Tree)와 같은 구조를 이루면서 인증서끼리 서명하게 된다. 그러면 최상위 인증서는? 이 인증서를 발행한 기관을 Root Certification Authority(줄여서 Root CA)라고 부르며, 유명한 인증 기관(역주:Verisign, Thawte, Entrust, etc)의 Root CA 인증서는 웹브라우저에 기본적으로 설치되어 있다. 이러한 인증 기관은 자신들이 서명한 인증서들을 관리할 뿐만 아니라 철회 인증서(Revoked Certificate)들도 관리하고 있다. 그러면 Root CA의 인증서는 누가 서명을 했을까? 모든 Root CA 인증서는 자체 서명(Self Signed)되어 있다.
대칭키(The Symmetric key):
Private Key/Public Key 알고리즘은 정말 대단한 알고리즘이지만, 비실용적이라는 단점이 있다. 비대칭(Asymmetric)이란 하나의 키로 암호화를 하면 다른 키가 있어야 복호화를 할 수 있는 것을 뜻한다. 즉, 하나의 키로 암호화/복호화를 할 수 없다는 말이다. 대칭키(Symmetric Key)는 하나의 키로 암호화/복호화를 하게 된다. 대칭키를 사용하면 비대칭키보다 훨씬 빠르게 암호화/복호화를 할 수 있다. 그렇지만 속도 때문에 대칭키를 이용한다는 것은 너무 위험하다.
만약 당신의 적이 키를 입수해 버리면 여태까지 암호화된 정보가 모두 무용지물이 되어버리게 된다. 그래서 대칭키 알고리즘을 사용한 키를 상대방에게 전송하려면 인터넷과 같은 통로는 너무나도 위험하기 때문에 직접 손으로 전달해야만 한다. 귀찮지 않은가? 해결책은 대칭키를 비대칭키로 암호화시켜서 전송하면 된다. (역주:위에서 살펴본 웹서버와 브라우저의 관계에서 볼 수 있었다) 자신의 Private Key만 안전하게 관리하면 Public Key로 암호화되어 안전하게 전송할 수 있다.(여기서 보안은 죽음이나 협박 등을 제외한다) 또한 대칭키는 매번 랜덤으로 선택되는데, 이렇게되면 만약 대칭키가 누출되어도 다음번에는 다른 키가 사용되기 때문에 안전하다.
암호화 알고리즘(Encryption Algorithm):
암호화 알고리즘은 대칭이든 비대칭이든 간에 상당히 많은 종류가 있다. 일반적으로 암호화 알고리즘으로 특허를 낼 수 없다. 만약 Henri Paincare가 암호화 알고리즘으로 특허를 낸다면 Albert Einstein으로부터 고소당할 수 있는 것이다. 단, USA에서는 암호화 알고리즘으로 특허를 낼 수 있다.(역주:또한 군사법으로 보호받게 된다.) OpenSSL의 경우에는 암호화 알고리즘으로 특허를 낼 수 없고, 군사법이나 보안법에 저촉되지 않는 국가에서 개발되고 있다.
실제로 알고리즘이 어떻게 사용되는지 살펴보자. 웹서버와 브라우저는 서로 통신을 하는 동안 서로 어떤 알고리즘을 사용할 수 있는지 확인하게 된다. 다음에 서로 이해할 수 있는 일반적인 알고리즘을 선택한 후 통신이 이루어지게 된다. OpenSSL은 컴파일해서 삽입할 알고리즘을 택할 수 있다. 그렇게 하면 암호화 알고리즘에 제한을 걸고 있는 국가에서도 사용할 수 있게 된다.
해쉬(Hash):
해쉬는 해쉬 함수에 의해 만들어지는 숫자다. 이 함수는 단방향으로 연산되는 함수다. 즉, 한번 해쉬함수로 원본으로부터 해쉬값을 생성했다면, 해쉬값으로부터 원본 메시지를 알아내는 것이 불가능하다. 해쉬의 용도는 원본 메시지가 손상이 되었는지를 알아내는데 있으며, 해쉬값을 변경시키지 않고 원본을 조작하는 것은 극히 어렵다. 그래서 해쉬 함수는 패스워드 메커니즘을 비릇한 소프트웨어의 손상 유무(MD5 sum)를 가리는데도 이용할 수 있으며, 메시지의 손상을 방지하기 위해 널리 쓰이고 있다.
서명(Signing):
서명은 특정 메시지를 내가 작성했다는 것을 인증하는 역할을 한다. Text가 될 수도 있고, 인증서 등등이 될 수 있다. 메시지에 서명하기 위해서는 아래의 순서를 따라야 한다.
해쉬 생성
Private Key로 해쉬 암호화
암호화된 해쉬와 서명된 인증서를 메시지에 추가
받는 사람은 따로 해쉬를 생성
받은 메시지에 포함된 해쉬를 Public Key를 이용해서 복호화
4, 5번 과정에서 생성된 해쉬를 비교
암호문(Pass Phrase):
암호문(Pass Phrase)은 기존의 패스워드(Password)를 확장한 시스템이다. 예전의 Unix 시스템의 암호(Password)는 8자가 한계였다. 암호문이라는 것은 단순히 암호의 한계가 더 길어졌다는 것을 뜻한다. 당연히 8자가 한계인 것보다 보안이 강력하다. 최근의 Unix 시스템은 MD5를 사용하고 있기 때문에 암호의 길이 제한이 없어졌다.
(역주:암호문은 SSL에서 키가 누출되었을 경우, 최종 보안 장치이기 때문에, 중요한 키에는 반드시 새겨두어야 한다.)

3) IPX (Internetwork Packet Exchange)

IPX[아이 피 엑스]는 네트웨어 클라이언트와 서버를 사용하는 네트웍을 상호 연결하는 노벨의 네트워킹 프로토콜이다. IPX는 데이터그램 또는 패킷 프로토콜이다. IPX는 통신프로토콜의 네트웍 계층에서 동작하며, 패킷 교환 중에 커넥션이 계속 유지될 필요가 없는 커넥션리스 프로토콜이다.

패킷 수신통보는 노벨의 또다른 프로토콜인 SPX (Sequenced Packet Exchange)에 의해 관리된다. 관련된 노벨 네트웨어의 다른 프로토콜로는 RIP (Routing Information Protocol), SAP (Service Advertising Protocol) 및 NLSP (NetWare Link Services Protocol) 등이 있다.

----------------------------------------------------------------------
IPsec는 인터넷을 통한 IP 트래픽을 안전하게 하는 프로토콜이다. 그것은 가상 사설망(Vitual Privacy Network)을 안전하게 한다. Secure Socket Layer(SSL)은 WWW연결을 안전하게 한다. Pretty Good Privacy(PGP)와 S/MIME 은 이메일을 안전하게 지킨다.

인터넷에서 처음으로 암호를 사용한 것은 이메일이었다. S/MIME 과 OpenPGP라는 두 개의 경쟁적인 프로토콜이 있다.
SSL은 Secure Socket Layer의 약자이고 TLS는 Transport Layer Security의 약자이다. 이런 프로토콜은 브라우저에 포함되어 있고, 사람들이 민감한 정보를 여러 웹사이트에 암호화하여 전송할 수 있도록 한다.
안전한 IP패킷 전송을 위한 새로운 암호 프로토콜
Point-to-point Tunneling Protocol(PPTP, 심각한 결함이 있다.)과 Layer Two Tunneling Protocol(L2TP), IPsec(너무 복잡하지만 앞의 것들보다 낫다.) IKE는 Internet Key Exchange의 약자로 IPsec을 위한 키 교환 프로토콜이다.
----------------------------------------------------------------------
자바스크립트는 넷스케이프의 스크립트 언어로써 웹페이지에 코드가 삽입되는 방식이며 대부분의 브라우저가 이것을 지원한다. 자바스크립트는 창을 열거나 닫고, 웹페이지의 모양을 조작하고, 브라우저의 환경을 조정한다.
액티브 X의 보안은 코드에 서명하는 방식으로 이루어진다. 액티브 X 조각에는 기본적으로 전자서명이 들어간다.(인증코드) 액티브X는 DCOM이라 불리는 마이크로소프트 컴포넌트 시스템의 확장된 개념이다. 프로그램이 사용하는 DLL의 대부분은 실제로는 DCOM의 객체이다. 익스플로러는 엑셀의 알맹이를 DCOM과 액티브 X를 통해 끄집어 오는 것에 불과하다.
자바 애플릿을 샌드박스 내에서만 실행함으로써 그 피해를 제한할 수 있다. 샌드박스를 보호하기 위해 다음 세 가지의 메커니즘이 제공된다.
첫째, 바이트코드 검증기(byte code verifier)-정확한 형식인지 문제점이 있는지 검사한다.
둘째, 클래스 로더(class loader)-애플릿이 언제 어떻게 자바 환경에 추가되는지를 확인하여 기존의 중요한 것과 대치되지 못하도록 한다.
셋째, 보안 관리자(security manager)-자바 애플릿이 파일을 열거나 네트워크를 연결시키거나 하는 식의 뭔가 의심스러운 일을 시도할 때마다 개입한다.

자바 1.1은 액티브 X처럼 코드 서명 기능을 갖추어싸. 사용자가 신뢰하는 애플릿은 샌드박스를 벗어나 사용자 컴퓨터에 대해 제한 없이 동ㅈ가할 수 있도록 한 것이다.

플러그인은 PDF파일이나 멀티미디어 재생기와 같은 기능을 브라우저에 추가하는 코드 모듈을 말하는데, 여기에는 보안 개념이 없다. 다운로드해서 설치하면, 자동으로 그 플러그인을 신뢰하게 되는 것이다. 따라서 보안상 최악이라 할 수 있다.
박영식 (비회원)
    • 글자 크기
1차 세미나 분 + 용어 (by 박영식)

댓글 달기

이전 1 ... 2 3 4 5 6 7 8 9 10 11 다음
첨부 (0)
위로