'PassPhrase'에 해당되는 글 3건

  1. 2010.01.13 PGP(Pretty Good Privacy) 메일 암호화 프로그램
  2. 2010.01.08 OTP and OPIE (2)
  3. 2009.08.13 SSH 인증키 접속 (ssh-agent 활용법)
2010.01.13 16:48

PGP(Pretty Good Privacy) 메일 암호화 프로그램

1. PGP 6.5 소개

PGP 6.5는 사용자가 작성한 이메일의 내용과 첨부되는 파일을 암호화하여 이메일 수신자만이 그 내용을 볼 수 있도록 하는 기밀성을 제공해 주며, 전자서명 기능을 제공하여 송신자라고 주장하는 사용자와 이메일을 실제로 보낸 송신자가 동일인인가를 확인해준다.

PGP를 가장 편리하게 사용할 수 있는 방법은 현재 널리 사용되고 있는 이메일 어플리케이션과 PGP를 연계하여 사용하는 plug-in을 이용하는 것이다. 이러한 방법을 사용하면 사용자들은 이메일을 작성하거나 읽을 때 단지 마우스를 클릭하는 것만으로도 암호화/서명, 복호화/서명확인 등의 작업을 수행할 수 있다.

plug-in이 지원되지 않는 이메일 어플리케이션을 사용할 때에는 클립보드에서 문서 편집을 하면서 암호화 및 복호화를 할 수 있다. 또한 첨부할 문서를 암호화할 때에는 윈도우 탐색기에서 직접 파일을 제어할 수 있다.

PGP에서 제공하는 몇 가지 특징을 보면 다음과 같다.

o 사용하고 있는 암호화 기술의 안전성이 이미 인정을 받음
o 인증 받은 메시지와 파일에 대한 전자 서명 생성과 확인 작업
o 메뉴 방식을 통하여 모든 기능들에 쉽게 접근
o 널리 사용되고 있는 이메일 어플리케이션에 plug-in으로 정합
o 키 관리를 Graphic Interface로 지원
o 공개키를 4096 비트까지 생성할 수 있으며, RSA와 DSS/Diffie-Hellman 등 두 가지 형태의 공개키 생성 가능
o 공개키 서버와 직접 연결되어 있어 공개키 분배 및 취득이 간편

PGP는 그 안전성을 널리 인정 받고 있는 "공개키 암호 기술 (Public key cryptography)" 을 사용하고 있다. 공개키 암호화 기술은 사용자 자신만이 소유하는 비밀키(Private key)와 다른 사용자들에게 공개되어 사용되는 공개키(Public key) 등 2개의 키를 사용하여 다른 사용자와의 안전한 통신을 제공한다. 사용자의 공개키와 비밀키는 모두 키링(Keyring) 화일에 보관되며 PGPkeys 윈도우에서 사용, 관리할 수 있다.

다른 사용자에게 이메일을 보내기 위해서는 이메일을 받아 볼 사용자의 공개키를 소유하고 있어야 한다. 다른 사람의 공개키를 소유하고 있으면 그 사용자에게 암호화된 메시지를 보낼수 있고, 또한 그 사용자가 생성한 전자 서명을 확인할 수 있다.  

PGP를 사용하는 데에 있어서 필요한 사항들은 다음과 같다.

o PGP 설치하기

CD-ROOM이나 파일을 다운 받아서 설치할 수 있다.

o 비밀키/공개키 쌍 생성

PGP를 사용하기 전에 비밀키/공개키 쌍을 생성해야 한다. PGP 6.5.1의 설치가 완료되면 자동적으로 공개키 쌍을 생성하는 윈도우를 볼 수 있으며, PGPkeys 윈도우를 실행시킴으로써 언제든지 비밀키/공개키 쌍을 생성할 수 있다.

o 다른 사용자들과 공개키 교환하기

비밀키/공개키 쌍의 생성이 완료되면 다른 사용자들과 공개키를 교환해야 한다. 여러분의 공개키를 배포하려면 이메일에 넣어 상대방에게 보내줄 수도 있고, 공 개키 서버에 등록할 수도 있다. 다른 사용자의 공개키를 가져올 때에도 이메일 을 사용하여 받거나 공개키 서버를 이용하여 얻을 수 있다.

o 공개키 확인하기

다른 사용자의 공개키를 얻었으면 이를 자신의 공개키 키링에 추가하는데, 그 공 개키가 전송 도중에 변경되었나를 검사해야 하고, 다른 사용자의 이름으로 만들 어진 공개키가 아닌 지를 검사해야 한다. 이 검사 작업은 공개키의 fingerprint를 이용하여 수행한다. fingerprint는 그 공개키의 지문 역할을 수행한다. 여러분이 확실한 공개키를 얻었다고 판단된 후에 그 공개키에 본인의 전자 서명을 부착시 킨다. 또한 그 공개키의 주인에 대해 중개자로서의 신용도를 지정해 줄 수 있다.  

o 암호화 및 전자서명 생성

자신의 공개키 쌍을 생성하고, 다른 사용자와 공개키 교환이 완료되면, 메시지를 암호화하거나 전자 서명을 생성하여 다른 사용자와 안전한 이메일 교환을 할 수 있다.

만약에 플러그-인을 지원하는 이메일 어플리케이션을 사용한다면 툴바(Tool bar)에서 해당하는 메뉴를 골라 원하는 작업을 수행할 수 있다.

플러그-인을 지원하지 않는 이메일 어플리케이션을 사용한다면 메시지의 내용 을 클립보드에 담아 암호화 관련 작업을 수행한다. 첨부할 화일이 있을 때에는 첨부하기 이전에 Windows 탐색기에서 암호 관련 작업을 수행한다.

o 복호화 및 전자서명 확인

누군가가 여러분에게 암호화된 이메일이나 전자 서명을 보내 왔다면 여러분은 적절한 복호화 과정을 통해 이메일의 내용이 전송 도중에 변경되었는지와 송신 자로 되어 있는 사용자가 실제로 이메일을 보낸 사용자인지를 확인할 수 있다. 또한 복호화하여 이메일의 내용을 확인할 수도 있다.

플러그-인을 지원하는 이메일 어플리케이션을 사용한다면 툴바에서 적절한 메뉴 를 선택하여 복호화 관련 작업을 수행한다.

플러그-인을 지원하지 않는 이메일 어플리케이션을 사용하면 암호문이나 전자서 명을 클립보드에 옮겨 담아 복호화 및 전자서명 확인 작업을 수행한다. 첨부된 암호 화일은 Windows 탐색기에서 수행한다.  

2. PGP 설치와 기능

2.1 시스템 요구사항

o Windows 95, Widows 98, Windows NT 시스템에 PGP를 설치하려면 다음과 같은 컴퓨터 사양이 필요하다.
o Windows 95, Widows 98, Windows NT (Service Pack 3 or later)
o 32 MV RAM
o 16 MB Hard Disk Space
o 시스템에 PGP를 설치하려면 또한 다음과 같은 요구사항이 필요하다.
o Microsoft TCP/IP
o 호환가능한 LAN/WAN 네트워크 어댑터
o Windows 95에 설치하려면 Windows 95b(OSR2)

2.2 다른 버전과의 호환성

PGP의 freeware는 1991년부터 Phil Zimmermann에 의해서 많은 양이 배포되었다. PGP 6.5 버전은 기존의 프로그램 코드에 많은 수정을 가했고, 새로운 사용자 인터페이스를 갖추지만 PGP 이전 버전들과의 호환을 완벽하게 지원해 주고 있다. 그러므로 PGP 6.5 사용자도 이전 버전 사용자들과 안전한 이메일을 교환하는 데에 아무런 문제점이 없다.

PGP 6.5.1은 아래의 버전들과 호환이 가능하다.

o PGP 2.6 (Distributed by MIT)
o• PGP for Personal Privacy, Version 5.0 - 5.5
o• PGP for Business Security or PGP for Email and Files Version 5.5
o• PGP Desktop Security or PGP for Personal Privacy Version 6.0

2.3 이전 버전에서의 업그레이드

이전 버전을 사용하다가 PGP 6.5를 사용하려고 할 때에는 기존에 있던 화일들을 삭제해야 한다. 이때에 사용하는 키를 보관하고 있는 키링 파일은 보존해야 하므로 주의를 요한다. 그러나 PGP 6.5를 설치할 때에 기존의 키링 화일을 보존할 것인지를 확인하는 윈도우가 보여지므로 크게 어려운 작업은 아니다.  

2.4 PGP 설치하기

PGP를 설치하려면 CD-ROM이나 파일을 다운로드 받아서 설치할 수 있다. 윈도우 시스 템에서 PGP 프리웨어를 설치하기 위해서는 아래 단계에 따라 설치하면 된다.

2.4.1 CD-ROM 설치

CD-ROM을 드라이브에 넣으면 Setup 프로그램이 자동으로 실행된다. 만약 Setup 프로그램이 초기화되어 있지 않다면 CD-ROM 폴더안의 Setup.exe를 두 번 클릭하면 된다.

2.4.2 Web에서 파일 다운로드

① www.pgpi.com에서 Windows 95/98/NT용 PGP를 다운받으면 바로 자동으로 실행되면서 Welcome 화면이 나온다.

② Welcome dialog box의 내용을 읽어본 후 Next를 클릭한다.

③ Important Product Information의 PGP 6.5.1 버전의 새로운 특성을 나타내는 Watsnew.txt file을 읽어본 후 Next를 클릭한다.

④ User information 화면이 나오면 여러분의 이름과 회사명을 기입한 후, Next를 클릭한다.

⑤ Choose Destination Location 화면이 나오면 PGP 파일을 위한 디렉토리를 선택한 후, Next를 클릭한다.

⑥ Select Components 화면이 나오면 설치하기를 원하는 component들을 체크한 후, Next 를 클릭한다.

·PGP Key Management [Recuired] : PGP 프로그램을 설치하는 것으로 꼭 선택해야 된다.
·PGPnet Virtual Private Networking : Virtual Private Network(VPN)인 PGPnet은 PGPnet를 사용하는 전세계의 사용자들과 안전하고 경제적인 통신을 위한 편리한 암호화 어플리케이션이다.
·PGP Eudora Plug-in : Qualcomm Eudora email 프로그램으로 통합된 PGP 사용을 원한다면 이 옵션을 선택해라. PGP 6.5.1 버전은 Eudora 3.05 이상의 버전 을 지원한다.
·PGP Microsoft Exchange/Outlook Plug-in : Microsoft Exchange/Outlook email 프 로그램으로 통합된 PGP 사용을 원한다면 이 옵션을 선택해라. PGP 6.5.1 버전은 Ooutlook 97과 98을 지원한다.
·PGP Microsoft Outlook Express Plug-in : Microsoft Outlook Express email 프로 그램으로 통합된 PGP 사용을 원한다면 이 옵션을 선택해라. PGP 6.5.1 버전은 Internet Explorer 4.x 버전을 지원한다.
·PGP User's Manual (Adobe Acrobat format) : PGP User's Guide를 설치하기를 원하면 이 옵션을 선택한다.
·PGP CommandLine : Windows NT 시스템에서 PGP command line 버전을 설치하길 원한다면 이 옵션을 선택한다. 이것은 클라이언트로 사용되며, Batch server processes는 부가적인 라이센싱을 요구한다.
  

⑦ Ready to start copying File를 읽어본 후, Next를 클릭하면 PGP 파일들이 컴퓨터에 복사된다.

⑧ PGPnet 설치를 선택했다면 네트워크 어댑터를 찾기위한 PGPnet Set Adapter 화면이 나타난다. 모뎀을 사용한다면 RemoteAccess WAN Wrapper를 선택하고, 이더넷을 사용한 다면 3Com Megahertz LAN PC Card [Ethernet]를 선택한 후, OK를 클릭한다.

⑨ 존재하는 keyrings를 사용할 것인가를 묻는 Existing Keyrings? 화면이 나오면, 사용 하기를 원하면 "예"를 선택하고 그렇지 않으면 "아니오"를 선택한다. "예"를 선택하면 공개키의 Pubring.pkr과 비밀키의 Secring.skr의 위치를 보여준다. "아니오"를 선택하 면 'keyring을 만들것인가'를 묻는 Question 화면이 나온다.

⑩ Setup Complete 화면이 나오면 자동적으로 재부팅 하기를 원하는가를 선택하는 "Yes, I want to restart my computer now."를 선택한 후, Finish를 선택한다. 

3. 공개키 생성과 교환

3.1 공개키 암호화의 개념

공개키 암호화 방식은 일반적인 암호화 알고리즘과는 다르게 암호화하는 키와 복호화하는 키가 서로 다르다. 사용자들은 각각의 한쌍의 키를 갖는데, 하나는 키를 모든 사람들에게 공개하여 자신에게 보내는 메시지를 암호화할 수 있도록 하거나 자신이 서명한 메시지를 다른 사람이 확인할 수 있도록 하는데 사용되는 공개키(Public Key)가 있으며, 다른 하나는 공개되지 않고 사용자 자신만이 보관하면서 자신에게 온 메시지를 복호화하고 서명을 하는데 사용되는 사용되는 비밀키(Private Key)가 있다.

기본적으로 비밀키와 공개키는 같이 생성되며, 비밀키로 공개키를 유추하기 힘들고, 공개키로 비밀키를 유추하기 힘들다. 이 방식은 인수분해의 어려움에 기반을 두어 한 개의 키로 다른 키를 거의 찾을 수 없게 만들어져 있다. PGP에서의 암호화는 본인이 하지 않고 공개키를 가지고 있는 상대방이 하게되며, 이를 복호화할 수 있는 사람은 비밀키를 가지고 있는 사용자 자신뿐이다. 예를 들어 B라는 사람이 A라는 사람에게 메일을 보내기 위해서는 우선 공개되어 있는 A의 공개키를 이용하여 암호화하여 메일을 보낸다. 그러면 B는 자신의 비밀키를 이용하여 암호화된 메시지를 복호화한다.

<공개키 암호화 방식의 기본구조>

이와 같은 PGP의 공개키 암호화 방식 때문에 자신의 비밀키는 변조 및 삭제 방지를 위하여 안전한 장소에 백업해 두는게 좋다. 비밀키는 secring.pgp 파일에 존재하며 이 파일은 적어도 2장 이상의 플로피 디스크에 백업해 두는게 좋다. 또한 자신의 비밀키를 사용하기 위해서 처음 키를 생성할 때 입력한 pass phrase도 절대로 잊지 말아야 한다. 

3.2 비밀키/공개키 생성

3.2.1 새로운 비밀키/공개키 쌍 생성

① PGP 디렉토리에서 PGPkeys를 연다.

② Key Generation Wizard 화면을 읽어본 후, Next를 클릭한다.

③ 사용자 이름과 이메일 주소를 입력한후 Next를 클릭한다.

④ Key Pair Type(Diffie-Hellman/DSS나 RSA)를 선택한후 Next를 클릭한다.

·PGP 2.6.3i 이전 버전 사용자들과 통신을 한다면 RSA를 선택한다.
·PGP5.0 이상 버전 사용자들과 통신을 한다면 새로운 기술의 Diffie-Hellman /DSS를 선택한다.
 

⑤ Key Pair Size를 선택한후 Next를 클릭한다.

사이즈는 1024 비트부터 3072비트까지 4개의 크기가 지정되어 있으며, 이것들 중에서 하나를 선택할 수도 있다. 또한 Custom에서는 1024 비트에서 4096 비트까지 원하는 크 기를 입력할 수도 있다. 키의 크기를 선택할 때 주의해야 할 것은 크기가 클수록 공격을 당할 확률은 줄어든다는 것이다. 그러나, 키의 크기가 크면 클수록 암호화/복호화 시에 수행시간이 많이 필요하다. 만약 사용자가 다루는 데이터의 내용이 엄청나게 중요한 것 이라면 최대 크기를 선택하는 것이 바람직하다. Diffie-Hellman/DSS 키를 생성했다면 최 대 1024 비트로 제한되어 있다.

⑥ Key Expiration 화면이 나오면 Key 만료시점을 설정한 후 Next를 클릭한다.

공개키가 유효하게 사용될 날수를 입력한다. 기본값은 "Never"이다. 이 경우에 공개키는 사용자가 따로 명령을 주지 않는 이상 영원히 사용될 수 있다. 사용할 기간이 정해져 있 을 경우에는 날수를 직접 입력한다. 공개키를 한번 만들어서 사용자의 평생 동안 사용할 수도 있다. 하지만, 특별한 경우에는 공개키를 사용할 기간이 정해질 수 있다. 공개키를 한번 생성하면 그 키는 전 세계로 전파될 수 있다. 그러므로, 일정 기간동안 사용할 공개 키는 그 사용기간을 명시하여 나중에 다른 사용자들이 그 공개키를 이용하여 암호문을 만들지 않도록 해 주어야 한다.

⑦ 사용자의 비밀키를 오직 자신만이 사용할 수 있는 기능을 제공해 주는 Passphrase 입 력 화면이 나타나면 암호를 입력한다. 사용자가 입력하는 Passphrase는 원칙적으로 화면 에 보여지지 않는다. 그러나, 입력되는 Passphrase를 눈으로 확인하고 싶을 때는 윈도우 에 있는 "Hide Typing" 항목을 Disable 시키면 된다. 그러나 이 때에는 등 뒤에 아무도 없는 것을 확인해야 한다.

Passphrase는 알파벳, 숫자, 스페이스 등 모든 문자(Character)들을 사용할 수 있다. Passphrase는 길면 길수록 다른 사용자들이 추측하기가 어려우므로 자신은 기억하기 쉽 고, 다른 사용자들은 추측하기 어려운 문장을 선택하는 것이 바람직하다. 

⑧ Passphrase를 입력한 후 Next를 클릭하면 key를 만들기 시작한다.

 

⑨ key가 다 만들어졌으면 Next를 선택한다. key pair가 성공적으로 수행되었음을 알려주면 서 공개키를 key server에 보낼것인가를 묻는다. off-line 상태라면 선택하지 말고 on-line 상태라면 Next를 클릭한다.

⑩ PGP key pair가 만들어졌음을 알려주는 화면이 뜨면 Finish를 클릭한다.

 

⑪ PGP Key Pair를 만드는 과정을 모두 마치면 다음과 같이 Key가 등록되었음을 볼 수 있다.

새로운 Key가 만들어졌으면 key pair를 안전한 장소에 보관해 두는게 좋다. PGPKey 어 플리케이션은 key 사본을 저장할 것인가를 묻는다. 그러면 여러분은 플로피디스켓이나 안전한 장소에 pubring.pkr과 secring.skr를 저장하길 바란다. 

3.2.2 자신의 공개키 분배

새로운 비밀키/공개키 쌍을 생성하였으면 공개키를 다른 사용자들이 사용할 수 있도록 분배해 주어야 한다. 다른 사용자들이 여러분의 공개키를 가지고 있어야 여러분에게 암호문을 전송할 수 있고, 여러분이 생성한 전자서명을 확인할 수 있다. 공개키를 분배하는 방법은 크게 다음의 3가지로 나눌 수 있다.

o 공개키 서버에 등록하는 방법
o 이메일의 내용에 공개키를 포함시키는 방법
o 별도의 텍스트 화일에 복사하는 방법

3.2.2.1 공개키 서버로 공개키 분배

공개키를 분배하는 방법들 중에서 가장 좋은 방법은 공개키 서버에 등록시켜 놓는 방법이다. 세계적으로 다수의 공개키 서버가 존재한다. 이중에는 PGP 사에서 제공하는 공개키 서버도 포함된다. 사용자가 공개키를 어느 공개키 서버에 등록해야 하는 지에 대해서는 고려할 필요가 없다. 공개키 서버들끼리는 서로 일관성을 유지하기 때문에 사용자는 한 서버에만 등록하면 된다.

3.2.1 새로운 비밀키/공개키 쌍 생성 과정에서 공개키를 공개키 서버에 등록하지 않은 사람 은 다음과 같이 한다.

① PGPkeys를 연다.
② 공개키 서버로 전송하고자 하는 자신의 공개키를 선택한 후, Server 메뉴의 Send to 를 선택하여 전송하고자 하는 공개키 서버를 선택한다.
③ 전송하고자 하는 공개키 서버가 없다면 PGPkeys를 연후 Edit -> Options -> Servers를 선택한 후 새로운 공개키 서버를 등록한다.
 

3.2.2.2 암호화된 email message에 공개키 포함

① PGPkeys를 연다.
② 전송하고자 하는 공개키를 선택한 후 Edit 메뉴에서 copy를 클릭한다.
③ 보내고자 하는 이메일의 원하는 곳에 Edit 메뉴에서 Paste 클릭한다.

그러면 다음과 같이 암호화된 공개키가 생성된다.

 

이러한 방법을 사용할 때에는 여러분의 공개키가 포함되어 있는 이메일에 사용자 자 신의 비밀키를 이용하여 전자서명을 생성하여 함께 보낸다. 이렇게 하면 상대방은 이 메일에 포함되어 있는 여러분의 공개키를 사용하여 전자서명을 확인할 수 있게 된다. 결국, 공개키가 전송 도중에 불법적으로 변경되지 않았다는 사실을 보장받을 수 있다. 

3.2.2.3 공개키를 파일로 추출하기

① PGPkeys에서 key pair를 클릭한 후 Keys 메뉴에서 Export를 클릭하면 key이름.asc 파일이 만들어진다.

② key이름.asc 파일을 보내고자하는 메시지에 첨부해서 보낸다.

③ 다른 방법으로는 PGPkeys에서 보내고자하는 사람을 공개키를 선택한후 이메일 어 플리케이션에 드래그하면 key이름.asc 파일이 첨부되어 진다. 

3.2.3 다른 사용자의 공개키 가져하기

다른 PGP 사용자들이 여러분의 서명을 확인하고 암호화된 정보를 보낼 수 있게 하기 위해 공개키를 분배해할 필요가 있었드시, 여러분도 다른 사람의 서명을 확인하고 그들에게 암호화된 메일을 보내기 위해서는 그들의 공개키를 가져올 필요가 있다.

다른 사용자의 공개키를 가져오는 방법에는 3가지 방법이 있다.

o 공개키 서버로부터 가져오는 방법
o 이메일 메시지에 포함되어 있는 공개키를 가져오는 방법
o 공개키가 저장되어 있는 파일에서 가져오는 방법

3.2.3.1 공개키 서버로부터 공개키 가져오기

사용자가 송신하는 이메일을 수신할 사용자가 PGP를 이미 사용하고 있는 사용자라면 아마도 그의 공개키가 공개키 서버에 등록되어 있을 것이다. 이렇게 수신자의 공개키가 공개키 서버에 등록되어 있는 경우에는 서버에서 그의 공개키를 전송 받아 사용하면 된다. 이러한 방법은 하나의 장점을 가지는데, 사용자의 컴퓨터에 수많은 사용자들의 공개키를 저장하고 있지 않아도 된다는 것이다. 누군가의 공개키가 필요할 때마다 서버에서 다운로드 받아 사용할 수 있다. 세계 도처에 수많은 공개키 서버들이 존재한다. 이 서버들은 정기적으로 내용을 서로 비교하여 갱신하기 때문에 사용자는 하나의 공개키 서버만을 이용해도 아무런 문제가 없다.

① PGPkeys를 연다

② PGPkeys의 Server 메뉴에서 Search를 클릭하면 다음과 같은 화면이 나온다.

Search for keys On 에서 검색하고자 하는 서버를 선택한다.

④ 검색 기준을 명시한다. 아래와 같은 값들을 이용하여 key를 검색할 수 있다. 

More Choices를 선택하면 아래와 같은 모든 정보를 기입할 수 있다.

·User ID
·Key ID
·Key Status (Revoked or Disabled)
·Key Type (Diffie-Hellman or RSA)
·Creation date
·Expiration data
·Revoked keys
·Disabled keys
·Key size
·Keys signed by a particular key

⑤ Search를 클릭하면 검색하기 시작한다.

⑥ 가져오고자 하는 사용자의 공개키를 찾았으면 공개키를 저장하기위해, PGPkeys의 메인 화면으로 드래그한다.

⑦ 끝내기 위해 Clear Search를 클릭한다.

3.2.3.2 암호화된 email messages에 포함되어 있는 공개키 가져오기

PGP plug-ins에서 제공하는 이메일 어플리케이션을 사용하면 이메일에서 보낸사람의 공개키를 풀기위해 봉투에 열린열쇠가 같이 있는 아이콘을 클릭하고 그것을 public keyring에 추가한다.

만약 PGP plug-ins에서 제공하는 이메일 어플리케이션을 사용하지 않는다면 공개키로 표현된 텍스트문을 복사하여 PGPkeys에 붙여넣기한다. Select key(s) 화면이 나오면 import를 클릭한다. 

3.2.3.3 공개키가 저장되어 있는 파일에서 공개키 가져오기

key이름.asc로 첨부된 파일을 PGPkeys 메인 화면으로 드래그하거나, 공개키가 저장된 파일을 열어 복사한후 PGPkeys 메인 화면에 붙여넣기 한다.

3.2.3.4 공개키의 안전성 여부확인

누군가의 공개키를 받았을 때, 때로는 이 공개키가 실제로 그 사람의 공개키라고 믿기가 어려운 경우가 있다. PGP는 공개키의 안전성을 확인할 수 있는 방법을 제공해 주고 있다. 또한, 인증을 확실히 받지 못한 공개키를 사용하려고 할 때에는 경고 메시지를 보여주기도 한다.

공개키 암호 시스템이 가지고 있는 가장 위험한 약점은 소위 "Man-in-the-middle-attack"이라고 하는 공격이 가능하다는 것이다. 이 방법은 통신 당자자들 사이에서 공개키의 주인을 위조하여 수행하는 공격이다. 이런 공격을 방지하는 방법으로는 통신 당사자들이 상대방의 공개키에 대한 인증을 완벽하게 수행하는 방법밖에 없다.

공개키 인증을 수행하는 가장 완벽한 방법은 공개키를 디스켓에 담아 상대방에게 직접 건네주는 것이다. 하지만, 온라인 시대에 이러한 방법은 적절한 방법이 될 수 없다. 위에서 본 바와 같이 공개키 서버나 이메일 등을 이용하면서도 상대방의 공개키를 확실하게 인증할 수 있는 방법이 필요하다.

한가지 방법으로 fingerprint를 이용하는 방법이 있다. Fingerprint란 공개키를 해쉬함수의 입력으로 주어 일정한 길이의 비트로 표현한 것이다. 사용자가 어디에선가 A의 공개키를 입수했다고 하면 사용자는 그 공개키의 fingerprint를 계산한다. 그런 후에 A에게 fingerprint를 문의한다. A가 보내 준 fingerprint와 자신이 계산한 fingerprint가 동일하다면 사용자는 입수한 공개키가 A의 공개키라는 것을 확신할 수 있다.

사용자는 A의 공개키라는 것을 확인한 후에 그 공개키에 자신의 전자서명을 첨가할 수 있다. 다른 사용자의 공개키에 자신의 비밀키를 이용하여 서명을 붙인다는 것은 전 세계의 사용자들에게 "이 공개키는 A의 공개키가 확실합니다. 내가 보장합니다." 라고 선언하는 것과 같은 개념이다. 자신의 비밀키/공개키 쌍을 생성한 후에 자신의 비밀키를 이용하여 자신의 공개키에 스스로 전자서명을 붙이는 것이 좋다. 이렇게 하는 이유는 공격자가 여러분의 공개키의 내용을 수정할 수 없도록 하기 위해서이다.

PGP 사용자들이 흔히 쓰는 방법 중의 하나가 공개키를 믿을 만한 친구에게 주어서 그 친구에게 서명을 부탁하고 다시 돌려 받는 방법이다. 친구의 서명이 첨가된 공개키를 공개키 서버에 등록한다. 자신의 공개키에 서명을 해주는 사용자가 많으면 많을수록 공개키의 신뢰도가 올라 간다. 

4. 암호화와 전자서명

PGP plug-in을 지원하는 이메일 프로그램을 사용할 때와 지원하지 않는 이메일 프로그램을 사용할 때의 암호화/복호화 방법은 약간 다르다.

4.1 PGP email plug-ins를 지원하지 않는 이메일 어플리케이션 사용하기

4.1.1 클립보드를 이용한 암호화 및 전자서명

① 사용자가 많이 사용하는 에디터에 암호화 및 전자서명하기를 원하는 텍스트문을 작 성한후 클립보드의 Edit에 복사한 후, Copy to Clipboard 클릭한다.

② 클립보드의 Encrypt, Sign를 선택하거나 Encrypt & Sign를 선택하면 다음과 같이 PGPtray 화면이 나온다.

데이터를 암호화하는 방법에 따라 암호화 옵션을 선택할 수 있다.

·Secure Viewer : 이 옵션을 선택하면 복호화에 따른 TEMPEST 공격으로부 터 데이터를 보호할 수 있다.
·Conventional Encrypt : 공개키 암호화 대신에 passphrase를 사용할 수 있다.

③ 보내고자하는 사람의 공개키를 선택한 후 Recipients쪽으로 드래그하거나 두 번 클 릭한다.

④ 메일을 암호화하고 서명하기 위해 OK를 클릭해라

암호화된 데이터에 서명하기를 선택했다면 메일을 보내기전에 여러분의 passphrase 를 입력하기를 요구하는 PGPtray-Enter Passphrase 화면이 나타난다.

⑤ passphrase를 입력하고 OK를 클릭해라
⑥ 클립보드의 Edit를 클릭하여 암호화된 텍스트문 복사하여 이메일 메시지에 붙여넣기 하고 메시지를 전송한다.

4.1.2 윈도우 탐색기를 이용한 파일 암호화 및 전자서명

파일을 암호화하거나 메일에 암호화된 파일을 첨부하여 보내기 위해서는 PGP right-click 메뉴를 이용한다.

① Windows 탐색기에서 암호화하기를 원하는 파일를 찾아 마우스 오른쪽을 클릭한후 PGP를 클릭한다.
② 파일을 암호화하기 위해 Encrypt, Sign를 선택하거나 Encrypt & Sign를 선택하면, PGPtray 화면이 나온다.
③ 보내고자하는 사람의 공개키를 선택한 후 Recipients쪽으로 드래그 하거나, 두 번 클 릭한다.
④ 파일을 암호화하고 서명하기 위해 OK를 클릭해라. 암호화된 데이터에 서명하기를 선택했다면 메일을 보내기전에 여러분의 passphrase 를 입력하기를 요구하는 PGPtray-Enter Passphrase 화면이 나타난다.
⑤ passphrase를 입력하고 OK를 클릭해라.
⑥ 여기까지 하면 파일이 암호화되어 파일이름 앞에 잠기열쇠 아이콘이 붙으면서 .pgp 파일이 생성된다.
⑦ 이제 평소처럼 암호화된 파일을 첨부해서 보내면 된다.
 

4.2 PGP email plug-ins에서 제공하는 이메일 어플리케이션 사용하기

PGP email plug-ins에서 제공하는 이메일 어플리케이션을 이용하여 암호화하고 서명하 는 방법은 암호화 및 서명을 위한 가장 빠른 방법이다. 아래의 표는 PGP Plug-in의 특징을 설명한 것이다.

Eudora 3.0.x

Eudora 4.0.x

Exchange/ Outlook

Lotus Notes

Outlook Express

PGP/MIME

Yes

Yes

No

No

No

Auto-decrypt

Yes

No

Yes

Yes

Yes

Encrypt HTML

N/A

Yes

converts to plain text
before encrypting

Yes

No

View decrypted HTML
as an HTML document

No

Yes

No

Yes

No

Encrypt

attachments

Yes

Yes

Yes

Yes

No

Encrypt/Sign

defaults

Yes

Yes

Yes

Yes

Yes

4.2.1 암호화 및 전자서명

① 사용하는 이메일 어플리케이션을 이용하여 이메일 텍스트 문서를 만들었으면 메시지 를 암호화하기 위해 편지봉투에 잠긴열쇠가 있는 아이콘을 클릭해서 암호화를 한 후, 다시 편지지에 연필이 있는 아이콘을 클릭해서 메시지에 서명을 한다.
② 나머지는 4.1.1 클립보드를 이용한 암호화 및 전자서명 과정의 ③에서 ⑤까지의 과정 을 그대로 하면 된다.
 

5. 암호화된 메시지 복호화 및 전자서명 확인

5.1 PGP email plug-ins을 지원하지 않는 이메일 어플리케이션 사용하기

5.1.1 클립보드를 이용하여 암호문 복호화하고 전자서명 확인하기

① 평소처럼 이메일 메시지를 오픈한다.
② 암호화된 메시지를 복사하여 클립보드의 Edit에 복사한 후, Copy to Clipboard를 클 릭한다.
③ 클립보드의 Decrypt, Verify를 선택하거나, Decrypt & Verify를 선택한다. 그러면 여 러분의 passphrase를 입력하라는 PGPtray-Enter Passphrase 대화상자가 나타난다.

④ passphrase를 입력한 후, OK를 클릭한다.
⑤ 클립보드의 Edit를 클릭하면 복호화된 메시지를 볼 수있다. 이 메시지는 복호화한 상태로 저장하거나, 안전을 위해 원문인 암호화된 메시지로 저장할 수 있다.
 

5.1.2 윈도우 탐색기를 이용한 파일 복호화 및 전자서명 확인

① 암호화된 파일을 받으면 파일에 마우스를 놓고 오른쪽을 클릭한후 열기를 클릭한다.
② 현재창에서 열기를 선택했다면 여러분의 passphrase를 입력하기를 요구하는 PGPtray-Enter Passphrase 화면이 나타난다.
③ passphrase를 입력하고 OK를 클릭하면 PGPlog 창이 열린다
④ 열린 창을 닫고 다시 ①에서 ③번까지 반복하면 이제는 복호화된 파일을 저장하기 위한 Enter output filename 화면이 나타난다.
⑤ 파일이름을 지정하고 저장한다.
⑥ 이제 평소처럼 복호화된 파일을 열어서 확인한다.
⑦ 디스크에 저장을 선택했다면 암호화된 파일을 원하는 곳에 저장한다.
⑧ 저장한 파일에 마우스를 놓고 오른쪽을 클릭한후 PGP를 선택한다
⑨ 복호화하기 위해 Decrypt & Verify를 선택한다.
⑩ passphrase를 입력하라는 PGPtray-Enter Passphrase 대화상자가 나타난다.
⑪ passphrase를 입력한 후, OK를 클릭한다.
⑫ PGPlog 화면이 나타나면 확인한 후 닫는다.
⑬ 디렉토리에 복호화된 파일이 생성된다.
⑭ 파일을 열고 내용을 확인한다.

5.2 PGP Plug-ins에서 제공하는 이메일 어플리케이션 사용하기

① 평소처럼 이메일 메시지를 오픈한다.
② 메시지를 복호화하고 확인하기 위해서 봉투에 열린열쇠가 있는 아이콘을 클릭한다.
③ 여러분의 passphrase를 입력하라는 PGPtray-Enter Passphrase 화면이 나타난다.
④ passphrase를 입력한 후, OK를 클릭한다.
⑤ 복호화한 상태로 메시지를 저장하거나, 안전을 위해 원문인 암호화된 메시지로 저장 할 수 있다.


출처 : http://hackersnews.org


Trackback 0 Comment 0
2010.01.08 19:46

OTP and OPIE

by Hye Jin Youn & Security KAIST
Sponsored by Initech.


Copyright (C) Jan 2000, Hye Jin Youn and Security KAIST

You may freely redistribute or republish this article, provided the following conditions are met as long as it is for non-commercial purposes. Otherwise permissions should be granted:

1. This article is left intact.

2. Proper credit is given to its authors; Hye Jin Youn and the Security KAIST

Contents
  • I. Background of OTP
  • II. Introduction is OTP
    • OTP란?
    • OTP의 여러가지 이용
    • 국내 기술 동향

  • III. S/Key 란?
  • IV. Let's Use OPIE!
    • How to install an OPIE server
    • How to login to an OPIE system
    • OPIE Command and man pages

  • V. References
  • VI. Down load( opie )
  • Whatis?


Background of OTP


  • 현재의 userid , password를 인증기반으로 하고 있는 unix system 은 password를 누출 시키는 경우 위험함

  • TCP/IP protocol은 desine당시 보안 문제는 고려하지 않았기 때문에 sniffing과 IP spoofing 등을 이용한 해킹이 많이 이용되고 있다.

  • 국내에서 발생된 대부분의 해킹 사례는 ID와 password도용 사례가 주류를 이루고 있다.


Introduction to OTP


  1. OTP란?

      OTP( one time password )란 말 그대로 한번 쓰고 password를 버리는 일회용 password이므로 기존의 password가 sniffing 등으로 가로채여도 새로 생성된 password를 사용하므로 안전할 수 있다. 이러한 otp를 구현하기 위한 방법으로는 다음과 같은 것들이 있다.
    • 동기화된 시간을 유지하여 Time-Stamp를 사용
    • server와 client의 임의의 패스워드 리스트 내의 위치이용
    • Challenge-Response Schemes이용

  2. OTP의 여러가지 사용

    1. S/Key 방식
      S/Key 인증 시스템은 passive attack에 대해 사용자의 패스워드를 보호하기 위한 간단한 스킴이다.

      더 자세한 것은 뒤에 설명하도록 할것이다.

    2. Challenge-Response 방식
      user가 login하면, server는 Challenge message를 보낸다.
      user는 PIN( Personal Identification Number )와 Challenge 를 이용하여, OTP를 생성하여 Response를 한다.
      서버는 동일한 Challenge와 등록된 사용자의 정보을 이용해 OTP를 생성한 후 user의 Response와 비교하여 사용자 인증을 해주는 방식이다

    3. Time-Synchoronous 방식
      난수생성 알고리즘은 관리가가 정한 시간(t)마다 64bit의 비밀키가 생성되어 진다.
      각각의 사용자에게는 특정키가 할당되어지고, 지능형 토큰과 인증서버 데이터 베이스에 이것들이 저장되어진다.
      사용자가 login을 할때 PIN과 6개의 숫자로 된 난수를 전달하면, (이 난수는 토큰으로 생성되어 짐)

      난수는 토큰안에 저장되어 있던 비밀키와 t를 초기값으로 하여 토큰안의 알고리즘을 통해 만들어진다.

      이렇게 만들어진 10개의 숫자가 서버로 가면 서버는 PIN을 인덱스로 하여 해당 비밀키를 찾고, 생성된 6개의 랜덤 숫자들을 수신 것과 일치하는 지를 확인한다.

  3. 국내의 기술 동향.

    • 반도체 장비 전문업체인 미래 상업은 사용때마다 결과치가 다른 해쉬함수를 기반으로 구현되어 추론및 재현 공격을 봉쇄할 수 있고 발생기에 고유 ID 를 부여, 분실시 오용되는 것을 원천적으로 방지할 수 있는 공중망 인증 시스템을 개발 ('97.3)

    • 케신 시스템에서 미국 브이원사의 SmartGate제품을 수입하여 판매중

    • internet security korea secure card, secure server, securid ( Time-Synchoronous 방식 )을 개발 판매중임

    • 한국 엑시스

    • 그외의 여러 단체에서 연구중임

    • ( 자신의 회사에서 연구중인 분은 저에게 연락을 주세요 :) )


III. S/Key 란?


  • 특징

    • 기본 otp의 특징을 가지고 있다.
    • 사용하기에 간단하다.
    • 비밀 패스워드를 기억하도록 한다.
    • 자동화가 되어질수 있다.
    • 알고리즘이 공개되어 있다.
      - MD4 또는 MD5 one-way hash 함수를 사용한다.
      ( 8byte 입력 8byte 출력 )
    • 어떤 비밀 정보도 호스트에 보관되어지지 않는다.

  • 알고리즘

    • 기본적인 알고리즘은 one-way hash 함수를 여러번 적용함으로 계속해서 생성되어진다.

    • 착안 : f(x) = y 에서 x를 알고 y 를 알면 구해질수 있으나 y를 알고 x를 알아내기란, 즉 x = f~(y) 는 거의 불가능하다.
      ( * MD4와 MD5참고 )

    • 첫 번째 OTP는 user의 비밀 패스워드(S)를 정해진 특정수 (N) 만큼의 one-way hash 함수를 수행함으로 생성되어진다.

      P(1) = f(f(f(f(S))))

      다음번에는 n-1번을 수행함으로 생성되어지는 P를 쓸것이다.

      P(2) = f(f(f(S)))

      그렇기 때문에 도청자가 P(i)를 알게 되더라도, 다음 password, P(i+1)을 알아낸다는 것이 불가능하게 된다.

    • 처음에 호스트 컴퓨터는 OTP의 복사본을 저장한다. 그리고 그것을 one-way hash 함수로 계산하여, 복사본과 비교한다.
      만약 일치하게 된다면, system password file의 사용자의 엔트리는 OTP의 복사본으로 갱신되어진다.

  • 사용자에 의해 one-way hash 함수의 수가 하나씩 줄어들게 되므로 어느 시점에 다다르면 초기화를 시켜주어야 한다.

  • user의 OTP는 노트북이나 palm-top등을 포함하는 다양한 기종의 pc에서 수행되어진다. 또는 플로피 디스크에 저장되어지고 수행되어질수 있다. 또는 미리 계산을 하여 프린트를 하여 사용할수 있다.

    예를 들어 이런 token card가 있을수 있다.

    IV. Let's Use opie!

    • What is OPIE( OneTime Password in Everything ) ?
        OPIE 버전 2.32을 기반으로 구현했다.
        OPIE 원타임 패스워드 시스템은 공개버전으로 Bellcore S/Key 시스템과 상호 운용성이 있으며, RFC 1938에서 기술하고 있는 원타임 패스워드 시스템을 구현한 것이다.

    • 이문서의 기준은 OPIE Software Distribution, Release 2.32의 버전을 가지고 다루었습니다.
      test server는 linux 6.0입니다.

    • How to 'Install' an OPIE server

        1. Read the OPIE README file

        2. OPIE system requirement

        • A UNIX-like operating system
        • An ANSI C compiler and run-time library
        • POSIX.1- and X/Open XPG-compliance(including termios)
        • The BSD sockets API
        • Approximately five megabytes of free disk space

        3. download the OPIE

        4. Unpack the software( 압축풀기 )

          %> gunzip opie-2.32.tar.gz
          %> tar xfv opie-2.32.tar

        5. Read INSTALL readme file( 제 나름대로 요약하면 )

          i) configure을 실행시킴
          ii) Makefile을 나름대로 필요한 것을 고칩니다. ( 사실 안고쳐도 대충됨 )
          iii) make라고 치면됩니다( client만 깔기위해서는 make client, 서버만 깔기위해서는 make server 라고 치세요 ) iv) make install( client는 make client-install )

        6. file 확인 

        7. Install test

        여기서 otp-md5는 md5를 쓴다는 이야기고, key는 497이고, seed는 en3197이다

        8. 지우기 위해서

          %>make uninstall

    • How to login to an OPIE system

        1. 처음에는 admin에게 passphrase를 물어봐야한다.

        2. passphrase 만들고, 바꾸기

          %>INSTALLDIR/opiepasswd -f -c

          INSTALLDIR 은 opiepasswd 라는 명령어가 있는 모든 경로를 말한다.
          예를 들면, 보통 /usr/local/bin 가 되겠다.

          -f : 강제적으로 만듬을 의미한다.
          -c : console mode로 만들어서 secure한 접속이게끔 만든다.
           

    • Key generator

      • In Linux

        'opiekey' 명령어가 해준다.  

      • In Windows  

    • OPIE Command and man pages

      • In Linux

        opiegen :

          passphrase를 가지고 key를 generate시켜줌
          vici%> opiegen otp-md5 495 wi01309
          Secret Pass Phrase:
          GILL HUED GOES CHUM LIEU VAIN
          vici%>

        opieinfo :
          다음의 sequence number와 seed 값을 출력

          %> opieinfo
          495 wi01309

          보통,
          %> opiekey -n 42 `opieinfo`
          이런 식으로 이용하면 좋다.

          정보는 /etc/opiekeys에서 얻어오는 것들이다.

        opiesu :
          su 명령어 대신을 하는 것이다.

          %> opiesu vici
          otp-md5 498 wi910502
          (OTP response required)
          vici's password: (echo on)
          vici's password: RARE GLEN HUGH BOYD NECK MOLL
          # ( root shell )

      • In Windows

    V. Reference


    VI. Download


    What is ?


    • Sniffing
        TCP/IP desine 이 보안을 고려하지 않았기 때문에 network상의 packet을 모아 재배열시키면 원래의 data를 복제할수 있다.
    • Spoofing
        network상에서는 상대방을 어떻게 인증할 것인가가 중요하다. 보통 password나 IP , hostname등에 의해 인증을 하는데 전자는 sniffing에 의해 노출이 가능하며 후자는 spoofing에 의해 공격이 가능하다.
      • IP Spoofing : 해커의 host가 target host가 trust하는 host인척하기
      • DNS spoofing : rlogin , rsh을 사용하고 DNS server에 많은 packet을 보낸다. 그럼 host는 잠시 마비가 되며 그틈을 타서 target host로 하여금 자신의 host를 믿는 정보를 보낸다.
      • IP hijacking : 일단 connection이 일어난 두 host간에 connection을 변조하는 것을 말함

    출처 : http://sparcs.kaist.ac.kr/~vici/

    Trackback 0 Comment 2
    1. FreeBSD Handbook 2010.01.08 19:54 address edit & del reply

      http://www.freebsd.org/doc/en/books/handbook/one-time-passwords.html

    2. OPIE 2010.01.08 19:56 address edit & del reply

      How to setup OPIE with pam On Linux
      http://www.rho.cc/index.php/linux2/46-1key/66-how-to-setup-opie-with-pam-on-linux

      jsotp: JavaScript OTP Calculator
      http://www.ocf.berkeley.edu/~jjlin/jsotp/

    2009.08.13 18:42

    SSH 인증키 접속 (ssh-agent 활용법)

     

    client 계정의 아이디와 비밀번호를 입력하지 않고 단지 개인키를 사용하기 위한 패스프레이즈(Passphrase) 비밀번호만을 입력하였다. 혹 어떤 독자는 어 똑같이 비밀번호를 입력하는 데 무엇이 더 나아졌지?하고 생각할 수도 있다. 하지만 엄청난 변화가 일어났다고 할 수 있다.

     

    일단 이 패스프레이즈는 자신이 키를 만들 때 비밀번호가 없이 만들면 패스프레이즈 비밀번호 마저도 입력하지 않아도 된다. 또 여러 가지 시스템에 예정을 가지고 있는 사용자는 각 시스템에 비밀번호를 기억하지 않고 똑 같은 패스프레이즈 비밀번호를 한번 입력한 후 로그인을 하면 된다.

     

    예를 들어 시스템에 client1이라는 계정을 가지고 있는 사람이라면 계정별로 비밀번호를 기억하지 않고 단지 공개키만 해당 시스템에 등록해주면 모든 처리가 완료되기 때문에 편리함은 극대화되고 보안은 강화되었다고 할 수 있다.

     

     

    원래 ssh private_key public_key 인증 및 ssh_agent를 이용하여 서버에 패스워드 인증 없이 접속이 가능하다.

     

    [1. Private Key 생성하기]

     

     

     

    위와 같이 해서 패스워드를 묻지 않고 접속이 가능하다면, 일단계 성공이다. 그런데, 위의 방법으로 접속이 실패했다면 sshd가 인증키로 인증을 허용하지 않기 때문이다.

     

    이럴 경우 sshd_config(보통은 /etc/ssh/sshd_config)에 다음 세 줄이 포함되어 있는지 확인하자.

     

     

    이 부분에 주석처리가 되어 있으면 주석을 풀어주고, 없으면 추가해 놓은 후, 서버를 재시작하고, 다시 위의 방법으로 시도를 해본다.

     

     

    개인키에 대해서 다른 사람이 읽을 수 있는 권한을 가지고 있으면 OpenSSH는 개인키를 무시한다. 다음은 개인키에 대해서 모든 사람이 읽을 수 있게 해주었다.

     

    그런 다음 개인키를 사용하려고 하면 다음과 같이 경고 메시지가 뜨고 정확한 암호를 입력해도 계속 경고 메시지가 뜬다. 따라서 개인키는 자신만이 읽을 수 있는 권한을 가지고 있어야 한다.

     

     

    마지막으로 서버의 호스트키가 바뀌면 ssh 클라이언트는 어떤 메시지를 사용자에게 보여주는지 알아보도록 하자.

     

    루트 사용자로 로그인해서 /etc/ssh 디렉토리에 있는 각종 키 파일을 backup 디렉토리로 옮겨놓는다.

     

     

     

    Sshd 데몬을 재시작하면 다시 호스트키를 생성하면서 데몬이 재시작된다.

     

     

    Linuxer 사용자 계정으로 로그인해서 SSH 서버에 접속을 하면 다음과 같이 호스트키가 바뀌었으므로 해킹의 위험이 있다는 것을 알려준다. 따라서 한번 설치한 호스트키를 바꾸는 것은 대단히 위험한 일이다. 실습을 마쳤으면 원래의 키로 다시 복구해주고 데몬을 다시 시작해주기 바란다.

     

     

     

    [scp(Secure Copy)를 통한 리모트 복사]

     

    Scp는 네트워크를 통해서 한 컴퓨터에서 다른 컴퓨터로 파일을 복사할 때 사용한다. 보통 유닉스의 기본 툴인 rcp와 똑 같은 기능을 제공하지만 rcp와 다르게 ssh처럼 보안 채널의 인증의 단계를 거치기 때문에 훨씬 안전하게 파일을 복사할 수 있다. Scp를 사용하는 구문은 다음과 같다.

     

    Syntax

    Scp 복사할 파일 복사될 위치

     

    여러 컴퓨터에 걸친 복사이기 때문에 단순히 파일이나 디렉토리의 위치만을 지정해서는 안되고 어떤 호스트의 계정에 대한 어떤 파일인지를 분명히 명시해야 한다. 앞에서 공부한 ssh와 똑 같은 채널과 인증 방법을 사용하기 때문에 개인키를 사용하기 위한 패스프레이즈를 입력하는 것이 한번 나온다. 물론 비밀번호 기반 인증 깁버을 사용하는 것도 가능하다.

     

    다음은 client 사용자 홈디렉토리에 있는 a.txt 파일을 linuxer 계정을 통해서 복사하는 것을 보여주는 예이다.

     

     

    보통 컴퓨터끼리 복사할 때에는 디렉토리 자체를 복사(Recursive Copy)하는 경우가 많다.

     

    다음의 예는 client 사용자 홈디렉토리에 있는 sample 디렉토리를 linuxer 계정을 통해서 복사하는 것을 보여주는 예이다. Sample 디렉토리에는 a.txt, b.txt 파일이 있고 하부 디렉토리로 subdir이 있다. 하부 디렉토리까지 모두 복사를 하기 위해서는 r 옵션을 추가해 주면 된다.

     

     

     

    [sftp(Secure FTP)]

     

    전통적인 ftp 프로그램이 보안이 거의 없기 때문에 이 ftp를 대체하기 위한 클라이언트 툴이 sftp이고 서버 프로그램은 /usr/libexec/openssh/sftp-server이다.

     

    다음 예는 sftp를 사용해서 안전한 FTP 통신을 하는 것을 보여주는 예이다.

     

     

     

    [SSH 설정 파일]

     

    /etc 디렉토리를 살펴보면 두 개의 환경 설정 파일이 존재한다.

     

    Ssh_config 파일은 클라이언트 유틸리티인 ssh의 설정 파일이고 sshd_config는 서버 데몬인 sshd의 설정 파일이다.

     

    이외에도 많은 설정 파일이 존재해서 OpenSSH를 처음 사용하는 사람은 대단히 혼란스럽다. OpenSSH에서 사용되는 중요한 설정 파일의 목록은 다음과 같다.

     

    파일 경로

    설명

    $HOME/.ssh/known_hosts

    시스템 전역적으로 신뢰할 수 있는 호스트의 리스트

    $HOME/.ssh/identity,

    $HOME/.ssh/id_dsa,

    $HOME/.ssh/id_rsa

    사용자 인증에 대한 개인키가 저장되어 있는 파일이다. 순서대로 SSH1 RSA, SSH2 DSA, SSH2 RSA 프로토콜을 위한 파일이다. 이 파일은 다른 사람이 읽을 수 있으면 개인키로서 기능을 상실한다.

    개인키에는 패스프레이즈(passphrase)를 가지고 키를 보호할 수 있는데 패스프레이즈는 3DES 알고리즘을 사용해 파일의 중요한 부분을 암호화 한다.

    $HOME/.ssh/identity.pub,

    $HOME/.ssh/id_dsa.pub,

    $HOME/.ssh/id_rsa.pub

    이 파일은 개인키에 해당하는 공개키이다. 목적은 앞의 개인키와 동일한 목적을 가지고 있다.

    $HOME/.ssh/config

    /etc/ssh/ssh_config가 모든 사용자에 해당하는 설정이라면 이 파일은 각 사용자에 해당하는 설정을 적어 놓을 수 있다.

    $HOME/.ssh/authorized_keys

    사용자가 로그인할 때 필요한 RSA 또는 DSA 공개키의 목록이 있는 파일이다.

    /etc/ssh/ssh_known_hosts

    시스템 전역에 걸친 신뢰할 수 있는 컴퓨터의 리스트를 적어 놓는 파일이다. 한 라인에 하나의 컴퓨터가 등록된다.

    /etc/ssh/ssh_config

    시스템 전역에 걸친 ssh 클라이언트 도구에 대한 설정이다.

    /etc/ssh/ssh_host_key,

    /etc/ssh/ssh_host_dsa_key,

    /etc/ssh/ssh_host_rsa_key

    순서에 따라 SSH1 RSA, SSH2 DSA, SSH2 RSA 프로토콜을 위한 호스트 공개키 파일들이다.

    /etc/ssh/sshrc

    Ssh로 로그인을 할 때, 사용자의 쉘이 시작이 되기 전에 실행해야할 명령어를 적어두는 곳이다.

    $HOME/.ssh/rc

    Ssh로 로그인을 할 때, 사용자의 쉘이 시작이 되기 전에 실행해야 할 명령어를 적어두는 곳이다. 단 사용자마다 다른 명령을 실행시킬 때 사용한다.

    $HOME/.ssh/environment

    추가적인 환경변수를 설정할 수 있다.

     

     

    다음은 SSH 서버 데몬에 대한 설정 파일인 /etc/ssh/sshd_config 파일의 예이다. 이 파일은 OpenSSH가 설치되면서 기본적으로 설치된 설정 파일이다.

     

    거의 모든 라인이 코멘트로 설정이 되어 있기 때문에 사실 이 파일에서 데몬에 관해 설정하는 것은 없다. 즉 이 파일에 코멘트로 만들어 놓은 옵션은 sshd 데몬의 기본 설정이라는 점에 유의하기 바란다.

     

    필자는 이 설정 파일에 약간의 코멘트를 추가함으로써 sshd_config 파일에 대한 설명을 마치도록 하겠다.

     

    [/etc/ssh/sshd_config]

     

    #           $OpenBSD: sshd_config,v 1.53 2002/05/15 21:02:53 markus Exp $

    # 다음은 sshd의 시스템 전역 설정이다. 더 자세한 설명은 sshd 매뉴얼을 보길 바란다.

     

    # This is the sshd server system-wide configuration file.  See sshd(8)

    # for more information.

     

    # sshd 'PATH=/usr/local/bin:/bin:/usr/bin' 경로로 컴파일이 되었다.

    # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

     

    # 일반적인 경우라고 기본 옵션을 사용하는 것이 가장 좋다.

    # 다음의 각 옵션은 OpenSSH에 설정이 되어 있는 기본 옵션이다. 만약 기본 옵션을

    # 바꾸고 싶으면 코멘트를 제거한 후 값을 바꾸면 된다.

    # The strategy used for options in the default sshd_config shipped with

    # OpenSSH is to specify options with their default value where

    # possible, but leave them commented.  Uncommented options change a

    # default value.

     

    # 기본 sshd 포트는 22번으로 /etc/services 파일을 보면 확인 할 수 있다.

    Port 22

    # 지원하는 프로토콜은 SSH2, SSH1이다.

    Protocol 2,1

    # 한 대의 컴퓨터가 여러 개의 IP를 가질 때 특정 주소에 대해서만 서비스를 해준다.

    #ListenAddress 0.0.0.0

    #ListenAddress :0.0.0.0

     

    # SSH 버전 2를 위한 호스트키

    HostKey /etc/ssh/ssh_host_rsa_key

    HostKey /etc/ssh/ssh_host_dsa_key

    # SSH 버전 1을 위한 호스트키

    Hostkey /etc/ssh/ssh_host_key

     

    # 서버키의 수명과 서버키의 길이

    # 키의 길이는 기본값은 768이고 최대 1024, 최소 512이다.

    # Lifetime and size of ephemeral version 1 server key

    #KeyRegenerationInterval 3600

    #ServerKeyBits 768

     

    # Logging

    #obsoletes QuietMode and FascistLogging

    #SyslogFacility AUTH

    #LogLevel INFO

     

    # 인증

    # 성공적으로 로그인을 하지 못했을 경우 앞으로 몇초간 로그인을 못하게 할지 설정

    # Authentication:

     

    LoginGraceTime 600

    # 루트 사용자의 로그인 여부

    PermitRootLogin yes

    # 로그인을 하는 전체 사용자의 파일이나 홈디렉토리의 퍼미션을 체크할지 여부

    StrictModes yes

     

    # SSH 버전 1을 위한 옵션으로 RSA 인증을 허용할지 여부

    RSAAuthentication yes

    # 공개키 인증을 허용할지 여부 SSH 버전 2에만 해당

    PubkeyAuthentication yes

    # 공개키를 설치할 파일의 이름

    AuthorizedKeysFile          .ssh/authorized_keys

     

    # rhosts 인증은 사용하지 말아야 한다.

    # rhosts authentication should not be used

    #RhostsAuthentication no

    # Don't read the 사용자의 ~/.rhosts ~/.shosts를 읽지 않게 한다.

    # Don't read the user's ~/.rhosts and ~/.shosts files

    #IgnoreRhosts yes

    # 다음이 제대로 작동하기 위해서는 /etc/ssh/ssh_known_hosts이 존재해야 한다.

    # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts

    #RhostsRSAAuthentication no

    # SSH 버전 2와 유사

    # similar for protocol version 2

    #HostbasedAuthentication no

    # RhostsRSAAuthentication HostbasedAuthentication 인증 방법에 대한

    # ~./ssh/known_hosts를 신뢰할 수 없을 때 yes로 바꾼다.

    # Change to yes if you don't trust ~/.ssh/known_hosts for

    # RhostsRSAAuthentication and HostbasedAuthentication

    #IgnoreUserKnownHosts no

     

    # 터널링된 단순 문자 비밀번호를 허용하지 않을 때는 no로 바꾼다.

    # To disable tunneled clear text passwords, change to no here!

    #PasswordAuthentication yes

    #PermitEmptyPasswords no

     

    # Challenge, Response 인증을 허용할지 여부

    # Change to no to disable s/key passwords

    #ChallengeResponseAuthentication yes

     

    # 커버로스 옵션

    # Kerberos options

    #KerberosAuthentication no

    #KerberosOrLocalPasswd yes

    #KerberosTicketCleanup yes

     

    # AFS 토큰이 서버로 전달될지 여부

    #AFSTokenPassing no

     

    # 커버러스 TGT가 서버로 포워딩될 수 있는지 여부

    # Kerberos TGT Passing only works with the AFS kaserver

    #KerberosTgtPassing no

     

    # PAM을 사용해서 키보드 입력을 통한 인증을 하기 위해서 yes로 설정

    # 경고 : 이 설정을 활성화하면 'PasswordAuthentication' 옵션은 무시됨

    # Set this to 'yes' to enable PAM keyboard-interactive authentication

    # Warning: enabling this may bypass the setting of 'PasswordAuthentication'

    #PAMAuthenticationViaKbdInt yes

     

    # X11 포워딩 기능을 사용할지의 여부, 이 옵션을 비활성화하더라도 각 사용자는

    # 이 옵션을 재정의하여 사용할 수 있음

    #X11Forwarding no

    # X11 포워딩할 때 처음 사용 가능한 디스플레이 수를 지정

    #X11DisplayOffset 10

    # sshd X11 포워딩 서버를 루프백 주소와 바인딩할지 여부를 결정

    #X11UseLocalhost yes

    # 사용자가 로그인할 때 /etc/motd 파일의 내용을 보여줄지 여부

    #PrintMotd yes

    # 사용자가 최종 로그인한 날짜와 시간을 보여줄지 여부

    #PrintLastLog yes

    # 다른 쪽에 TCP keepalive 메시지를 보낼지 여부

    # 한 쪽 시스템이 다운되었을 경우 세션이 계속 연결되어 있는 것을 막기 위해

    #KeepAlive yes

    # 상호 대화식 로그인을 위해서 login을 사용할지 여부

    #UseLogin no

    # 네트워크로부터 들어온 요청을 처리하기 위해서 별도의 권한을 가진 자식 프로세스

    # (Child Process)를 만들지 여부

    #UsePrivilegeSeparation no

     

    # 동시 사용자를 처리하기 위해 인증이 되지 않은 연결의 개수

    #MaxStartups 10

    # no default banner path

    # 접속할 때 보여줄 배너 파일의 경로

    #Banner /some/path

    # 원격 컴퓨터의 IP 주소와 이름이 일치하는지 확인할지 여부

    #VerifyReverseMapping no

     

    # 외부 서브 시스템을 설정한다 (, FTP)

    # override default of no subsystems

    Subsystem         sftp       /usr/libexec/openssh/sftp-server

     

     

    다음은 SSH 클라이언트 툴인 ssh의 환경 설정 팡리이다. 전역에 걸친 환경 설정 파일은 /etc/ssh/ssh_config이며 각 개인마다 설정할 내용은 $HOME/.ssh/config 팡리이다.

     

    [/etc/ssh/ssh_config]

     

    #           $OpenBSD: ssh_config,v 1.12 2002/01/16 17:55:33 stevesk Exp $

     

    # 이 파일은 ssh 클라이언트 툴에 대한 시스템 전역 설정이다. 자세한 설명은

    $ ssh의 매뉴얼을 보면 알 수 있다. 이 파일은 일반 사용자들에게 기본 설정이며

    # 각 사용자는 자신의 설정을 따로 저장을 하거나 ssh 명령어를 실행할 때 옵션으로

    # 제공할 수 있다.

    # This is the ssh client system-wide configuration file.  See ssh(1)

    # for more information.  This file provides defaults for users, and

    # the values can be changed in per-user configuration files or on the

    # command line.

     

    # 환경 설정 데이터는 다음과 같은 순서대로 분석된다.

    # 1. 명령어 옵션

    # 2. 사용자 개별 설정 파일

    # 3. 시스템 전역 설정 파일

    # 어떤 설정 옵션이든지 간에 먼저 설정을 한 것이 설정값으로 적용된다.

    # 따라서 각 컴퓨터에 한정된 정의가 먼저 나오고 다른 디플트값이 뒤에 나와야 한다.

    # Configuration data is parsed as follows:

    #  1. command line options

    #  2. user-specific file

    #  3. system-wide file

    # Any configuration value is only changed the first time it is set.

    # Thus, host-specific definitions should be at the beginning of the

    # configuration file, and defaults at the end.

     

    # 사이트 전역에 걸친 다양한 기본 옵션 설정들

    # Site-wide defaults for various options

     

    # 이 파일의 설정에 영향을 받는 호스트 컴퓨터의 이름 '*' '?'이 사용될 수 있다.

    # '*'를 사용하면 설정이 모든 컴퓨터에 영향을 미친다는 의미이다.

       Host *

    # 인증 절차를 위해서 리모트에 있는 컴퓨터로 포워딜 될 것인지 여부

       ForwardAgent no

    # X11 연결이 자동으로 보안 채널을 통해 리다이렉트 될지 여부

       ForwardX11 no

    # 사용할 인증 방법을 정의

       RhostsAuthentication yes

       RhostsRSAAuthentication yes

       RSAAuthentication yes

       PasswordAuthentication yes

    # sshd 데몬이 없는 것과 같은 이유로 인해서 연결을 실패했을 때 rsh를 사용할지 여부

       FallBackToRsh no

    # rlogin/rsh를 사용할지 여부. SSH 프로토콜을 지원하지 않을 때 사용할 수 있다.

       UseRsh no

    # AFS 토큰을 리모트 서버에 전달할지 여부

       BatchMode no

    # 호스트 IP 주소를 known_hosts 파일에서 추가적으로 찾는다.

       CheckHostIP yes

    # yes - $HOME/.ssh/known_hosts 파일에 호스트를 추가하지 않는다.

    # no - $HOME/.ssh/known_hosts 파일에 호스트를 자동으로 추가한다.

    # ask - 사용자의 확인을 받은 후 $HOME/.ssh/known_hosts 파일에 호스트를 추가한다.

       StrictHostKeyChecking ask

    # 개인키 파일의 위치

       IdentityFile ~/.ssh/identity

       IdentityFile ~/.ssh/id_rsa

       IdentityFile ~/.ssh/id_dsa

    # 포트번호, 지원 프로토콜

       Port 22

       Protocol 2,1

    # SSH 버전 1을 위한 암호화 알고리즘

       Cipher 3des

    # SSH 버전 2를 위한 암호화 알고리즘, 순서대로 운선 순위가 있다.

       Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc

    # Escape 문자

       EscapeChar ~

     

    환경 설정 파일에 대한 기본적인 설명만을 하였다. 더 자세한 옵션에 대해서 알고 싶은 독자는 ssh, sshd man 페이지를 확인해보기 바란다.

     

    [SSH Agent Agent Forwarding]

     

    지금까지 실습을 통해서 SSH를 사용할 때마다 패스프레이즈(PassPhrase)를 입력해야 하기 때문에 그리 편해지지 않았다는 점에 짜증을 내는 독자도 있을지 모르겠다. OpenSSH에는 사용자가 매번 패스프레이즈를 입력하지 않도록 키입력을 도와주고 또한 사용자의 키를 관리해 주는 키 에이전트가 있다.

     

    SSH 에이전트는 개인키를 메모리에 로드하고 있다가 클라이언트의 요청이 있으면 에이전트가 SSH 클라이언트를 대신해서 인증을 처리해준다.

     

    다음 그림을 보도록 하자. 클라이언트 컴퓨터에 SSH 에이전트를 실행하고 ssh-add 명령을 사용해서 자신의 개인키를 에이전트에 등록한다.

     

    물론 등록할 때 한번의 패스프레이즈(PassPhrase)는 입력해 주어야 한다. 일단 에이전트에 등록해주면 개인키는 메모리에 올라가게 되고 SSH 클라이언트 프로그램은 개별적으로 개인키를 접근할 필요 없이 단지 에이전트에 인증 요청을 하면 된다.

     

    SSH 클라이언트가 SSH 서버에 접속을 하고 난 후에 사용자 인증 절차가 되면 SSH 클라이언트는 SSH 에이전트에게 자기를 대신해서 인증을 해달라고 요청한다. 이 요청에 대해서 에이전트는 클라이언트를 대신해서 인증 처리를 자동으로 해주게 된다.

     

     

    실제 실습을 통해서 얼마나 SSH 에이전트가 편리한 도구인지 알아보도록 하자.

     

    일단 제일 먼저 에이전트를 실행시켜보자. SSH 클라이언트가 에이전트를 찾는 방법은 환경 변수를 통해서 찾는다.

     

    SSH 에이전트는 클라이언트 프로그램이 자신을 찾도록 환경 변수에 자신을 찾기 위한 정보를 적어 놓는다. 비유를 하면 칠판에다가 약도를 적어 놓고 다른 사람에게 찾아오라는 것과 같다. 이 환경 변수 정보를 이용해서 다른 클라이언트 프로그램들은 SSH 에이전트와 통신을 하게 된다.

     

    에이전트를 실행하는 방법은 두 가지가 있다. 첫 번째는 별도의 쉘로 독립해서 실행을 하는 방법(single shell)이 있고, 두 번째로는 현재 실행 중인 쉘의 하부 쉘(sub shell)로 실행시키는 방법이 있다.

     

    다음은 SSH 에이전트를 실행하는 명령인 ssh-agent를 실행한 예이다. 이 명령을 실행하면 환경 변수를 설정하는 명령이 출력된다. 하지만 단지 출력만 된 것뿐이지 환경 변수에 등록된 것은 아니다. 따라서 다음과 같이 실행을 하면 SSH 클라이언트 프로그램은 에이전트를 찾을 수 없게 된다.

     

     

    따라서 위의 출력이 실행되도록 만들어 주어야 에이전트를 클라이언트 프로그램이 찾을 수 있을 것이다.

     

    그 첫 번째 방법이 바로 별도의 쉘로 독립시켜서 실행하는 eval 명령을 사용하는 것이다. Eval 명령을 사용해서 실행을 하면 에이전트는 백그라운드로 작업을 하고 출력이 되는 각종 명령어도 실행이 된다.

     

    하지만 단점은 별도의 쉘에서 실행이 되기 때문에 로그아웃을 해도 SSH 에이전트가 종료되지 않는다는 단점이 있다. 따라서 로그아웃 시에 자동으로 프로세스를 중단시키는 스크립트를 만들기도 한다.

     

     

    두 번째 방법은 같은 쉘에 에이전트를 실행하는 방법이다.

     

    프로세스는 포그라운드로 작동하게 되고 환경 변수는 자동으로 설정이 된다. 또 같은 쉘에서 작동하기 때문에 사용자가 로그아웃을 하면 자동으로 SSH 에이전트 프로세스가 중단된다.

     

    단점은 같은 쉘이 묶여 있기 때문에 SSH 자체의 문제가 아닌 다른 요소에 의해서 프로세스가 중단될 수 있다. 하지만 가장 선호하는 방법이다.

     

     

    이제 개인키를 등록해야 한다. 개인키를 등록하기 위한 명령은 ssh-add 명령이다. 명령어에 add라는 단어가 있지만 삭제도 가능한 명령이이다. Ssh-add 명령이 사용할 수 있는 옵션은 다음과 같다.

     

    옵션

    설명

    -l

    현재 등록이 되어 있는 개인키의 핑거프린트(fingerprint)를 출력한다.

    -L

    현재 등록이 되어 있는 개인키의 키 전체 내용을 출력한다.

    -d

    에이전트로부터 키를 제거한다.

    -D

    에이전트가 가진 모든 키를 제거한다.

     

    자신의 홈디렉토리 밑에 있는 .ssh/id_dsa 파일을 로드시켜보자. 처음 로드할 때 한번은 패스프레이즈를 입력해야 한다.

     

    [linuxer@ns linuxer]$ ssh-add $HOME/.ssh/id_dsa

    Enter passphrase for /home/linuxer/.shh/id_dsa: *******

    Identity added: /home/linuxer/.shh/id_dsa (/home/linuxer/.ssh/id_dsa)

     

    -l 옵션을 사용해서 등록이 된 키의 핑거프린트를 확인할 수 있다.

     

    [linuxer@ns linuxer]$ ssh-add l

    1024 be:ac:6c:7e:bd:f1:89:78:01:45:fc:dc:c7:7d:fe:5f /home/linuxer/.ssh/id_dsa (DSA)

     

    이제 SSH Agent의 모든 설정이 끝났다. .ssh를 사용해서 리모트 컴퓨터에 로그인해보면 이제는 패스프레이즈를 입력하라는 메시지는 출력되지 않는다.

     

     

    이제 에이전트 포워딩(Agent Forwarding)에 대해서 알아보도록 하자.

     

    아래와 같이 세 대의 컴퓨터가 있다고 하자. 철수가 A 컴퓨터에서 ssh를 사용해서 B 컴퓨터에 로그인할 때는 A 컴퓨터에 있는 SSH Agent가 인증 처리를 해주기 때문에 철수는 인증에 대해서 별 생각을 하지 않아도 된다. 하지만 B 컴퓨터에 로그인한 후 다시 C 컴퓨터로 연결을 요청한다고 가정해보자.

     

    지금까지 배은대로 라면 C 컴퓨터에 연결을 요청하기 위해서는 철수의 개인키가 B 컴퓨터에 있어서 패스프레이즈를 입력하든지, 또는 B 컴퓨터에 에이전트를 띄워서 인증을 처리하게 할 수 있다.

     

    하지만 철수의 개인키가 여기 저기 산재해 있는 것은 바람직하지 않다.

     

    이런 경우 사용할 수 있는 좋은 방법이 에이전트 포워딩이라는 방법이다. 키를 관리하는 에이전트는 A 컴퓨터에 있고 B 컴퓨터에서 인증을 요청하게 되면 B 컴퓨터에 있는 프락시 에이전트가 A 컴퓨터에 있는 에이전트에게 인증을 요청하게 된다.

     

     

     

    에이전트 포워딩 기능을 사용하기 위해서는 /etc/ssh_config나 자신의 홈디렉토리 밑에 .ssh/config 파일에 에이전트 포워딩 옵션을 설정해 주저야 하고

     

    C 컴퓨터에는 철수의 공개키가 설치되어 있어야 한다. 따라서 철수의 공개키는 B 컴퓨터와 C 컴퓨터에 모두 있어야 한다. C 컴퓨터에 공개키를 설치하는 것은 이미 앞에서 언급했으므로 공개키를 설치하는 것은 생략하도록 하겠다.

     

    ForwardAgent yes

     

     

    실습을 통해서 이해해 보도록 하자. 먼저 에이전트를 구동시켜준다.

     

     

    B 컴퓨터에 접속을 한다. 하지만 B 컴퓨터에는 SSH 에이전트를 구동시키지 않았지만 에이전트 프락시를 통해서 마치 에이전트가 구동된 것처럼 현재 키 항목을 얻어 올 수 있다.

     

     

    마지막으로 C 컴퓨터에 접속을 한다. 앞에서와 마찬가지로 인증 절차는 거치지 않는다.

     

     

     

     

    [NOTE]

     

    [포트 포워딩(Port Forwarding)]

     

    OpenSSH에는 포트 포워딩이라는 기능이 있다. 하지만 고급 기능에 해당하기 때문에 이 책의 범위를 넘는다. 따라서 간단하게 설명을 하고 자세한 내용을 알고 싶은 독자는 관련 서적을 찾아보길 바란다.

     

    포트 포워딩을 사용하면 일반적으로 보안에 취약한 어플리케이션도 SSH라는 터널을 이용해 안전한 통신을 가능하게 할 수 있다.

     

    로컬 컴퓨터의 메일 클라이언트는 보통은 리모트 컴퓨터의 110번 포트에 연결해서 메일을 가져오게 된다. 이렇게 연결을 하는 것은 단순 텍스트가 네트워크를 타고 오고가기 때문에 해킹에 대한 위험이 있을 수도 있고 파이어월에서 110번 포트를 사용하는 것을 막아 놓았기 때문에 접속이 불가능할 수도 있다. 관리자는 SSH를 사용해서 통신하는 것은 안전하다고 생각하기 때문에 SSH에 대한 포트는 열어 두었다.

     

    이런 경우, 로컬 컴퓨터의 사용자는 리포트 컴퓨터의 110번 포트에 연결하지 않고 자신의 로컬 컴퓨터의 5001번 포트에 연결을 한다. 임의의 로컬 포트 5001에 대기 상태에 있던 SSH 클라이언트는 요청을 받아서 SSH 서버에 데이터를 전송하고 전송을 받은 SSH 서버는 원래의 POP3 메일 서버에 데이터를 전송하게 된다. 이와 같은 SSH의 기능을 포트 포워딩이라고 한다.


    출처 : http://blog.naver.com/hgh73


    Trackback 1 Comment 0