인터넷 망에서의 통신은 언제든 공격자에게 노출 될 수 있기 때문에, 완벽히 안전한 방법은 없을 것입니다. 그러나 파일을 전달하기 전에 암호화 하고, 전달 시에도 암호화 된 프로토콜을 이용하는 방법을 통해 조금 더 보안을 강화할 수 있습니다.
여기서는 윈도우 환경에서 PuTTYgen, freeSSHd, GnuPG, WinSCP 를 이용하여 파일을 암호화, SFTP 로 송신하는 방법을 서술합니다. 모든 과정을 단계별로 설명하기에는 분량이 너무 많기 때문에^^; 전체적인 구조와 각 과정을 간략히 설명 한 후 링크를 소개 하겠습니다. 좀 더 상세한 정보는 각 프로그램의 공식 사이트나, 관련 링크를 참고하시기 바랍니다.
진행 순서는 아래와 같습니다. 파일을 송신하고자 하는 쪽에서 sftp 서버를 구축하여 암호화 된 파일을 업로드 하면, 파일을 수신하고자 하는 쪽에서 sftp 서버에 접속하여 파일을 다운로드, 복호화 하는 과정입니다.
1. sftp 서버 접속을 위하여, PuTTYgen 을 이용하여 keypair 생성
2. 파일 송신자가 freeSSHd 를 이용하여 sftp 서버 구축
3. 파일 암호화를 위하여, GnuPG 를 이용하여 keypair 생성
4. 파일 송신자가 GnuPG 를 이용하여 파일 암호화, sftp 서버에 업로드
5. 파일 수신자가 WinSCP 를 이용하여 송신자의 sftp 서버에 접속, 파일 다운로드
6. 파일 수신자가 GnuPG 를 이용하여 파일 복호화
아래는 각 단계에 대한 설명과 관련 링크입니다.
1. sftp 서버 접속을 위하여, PuTTYgen 을 이용하여 keypair 생성
FTP 는 파일 전송을 위한 프로토콜입니다. 서버와 클라이언트 사이의 통신은 평문으로 전송되므로 보안에 취약합니다.
SFTP 는 SSH 상에서 FTP 를 이용하여, 통신을 할 때 통신 내용을 암호화 하는 과정을 거치는 것입니다.
파일 전송 프로토콜, 위키백과 - FTP
시큐어 셸, 위키백과 - SSH
What’s the Difference? FTP, SFTP, and FTP/S
SFTP 서버 구축 시에는 인증 방법을 패스워드 방식과 공개키 방식 중 하나로 선택 할 수 있습니다.
공개키 방식으로 인증 하고자 하면 개인키와 공개키가 필요한데, 이는 PuTTYgen 으로 생성할 수 있습니다.
공개키는 서버가, 개인키는 클라이언트가 보관합니다.
2. 파일 송신자가 freeSSHd 를 이용하여 sftp 서버 구축
이제 SFTP 서버를 구축합니다. 윈도우 환경에서 SFTP 서버를 구축 할 때에는 freeSSHd 를 이용 할 수 있습니다.
http://www.freesshd.com/- freeSSHd 공식 홈페이지
윈도우용 SSH(SCP) Server freeSSHd - freeSSHd 를 이용하여 설치 및 설정을 하는 방법
추천 - 1, 2 과정이 모두 나와 있는 YouTube 영상
How to SSH in Windows with freeSSHd, and PuTTY - 4/5
Private/Public Key SSH in Windows using freeSSHd and PuTTYgen - 5/5
3. 파일 암호화를 위하여, GnuPG 를 이용하여 keypair 생성
1, 2 는 파일을 송신하는 통신을 암호화 하는 과정입니다.
여기서 파일을 송신하기 전에 파일을 암호화 하는 과정을 추가하여, 조금 더 보안성을 향상시킬 수 있습니다.
만약 누군가 SFTP 에 접속할 키를 획득하여 파일이 제3자의 손에 들어가더라도, 파일을 복호화 할 키를 가지고 있지 않으면
파일의 내용을 알 수 없기 때문입니다.
파일 내용의 암, 복호화에는 GnuPG 를 이용합니다.
* 키 생성
gpg --gen-key
* 키 삭제 '개인키', '공개키' 입력 시에는 키의 이름이나 사용자명 등을 입력 할 수 있습니다.
gpg --delete-secret-key '개인키'
gpg --delete-key '공개키'
* 공개키 배포 : --armor 옵션을 사용하면 아스키 포맷으로 파일을 만들므로 전달 시 깨짐 현상을 방지할 수 있습니다.
gpg --armor --export '공개키'
https://www.gnupg.org/ - GnuPG 공식 홈페이지
The GNU Privacy Handbook - GnuPG 공식 홈페이지의 설명서
문서 암호화/복호화 - Gnupg - 설치부터 암, 복호화 과정을 설명합니다
How To Use GPG to Encrypt and Sign Messages on an Ubuntu 12.04 VPS
솔라나라 GnuPG 소개 - GnuPG 에 대해 전반적으로 잘 정리 한 글입니다.
4. 파일 송신자가 GnuPG 를 이용하여 파일 암호화, sftp 서버에 업로드
파일 송신자는 3 에서 생성한 공개키로 파일을 암호화 합니다. freeSSHd 에서 설정 한 SFTP home path 에 파일을 업로드 하면 SFTP 서버에 업로드 됩니다.
* 공개키 등록
gpg --import '공개키 파일명'
* 공개키 리스트 확인
gpg --list-keys
* 파일 암호화 : --always-trust 옵션을 사용하면 서명을 하지 않아도 키를 사용할 수 있습니다.
gpg --always-trust --encrypt --recipient '공개키' '암호화 할 파일명'
5. 파일 수신자가 WinSCP 를 이용하여 송신자의 sftp 서버에 접속, 파일 다운로드
SFTP 서버에서 파일을 다운로드 할 때에는 WinSCP 클라이언트 프로그램을 이용할 수 있습니다. 공개키 방식으로 인증 할 때에는 클라이언트 사이드에 저장 된 개인키를 이용 해야 합니다. 개인키 이용 방법은 아래 "WinSCP 공개키 인증 방법" 동영상을 참고 해 주세요.
Public Key Authentication using PuTTY and WinSCP - WinSCP 공개키 인증 방법
6. 파일 수신자가 GnuPG 를 이용하여 파일 복호화
3 에서 생성한 개인키로 수신한 파일을 복호화 합니다.
* 생성된 비밀키 확인
gpg --list-secret-keys
* 복호화
gpg -o 'outputfile' -d 'encryptedfile.gpg'
다 쓰고 보니 생각보다 내용이 기네요. 도움이 되었기를 바랍니다.
'프로그래밍' 카테고리의 다른 글
[SQL] Option querytraceon ~ (0) | 2016.05.01 |
---|---|
[Windows] Batch Scripting (0) | 2016.02.27 |
[C#] 접근할 수 없는 코드 - DateTime 은 value type 이다 (0) | 2016.01.17 |
[C#] Style Cop 를 이용하여 코딩 스타일 가이드 받기 (0) | 2015.08.01 |
[Programming] 임백준 개발자가 권하는 콘텐츠들 (0) | 2015.06.13 |