프로토콜의 개념부터 이해하고 다시 보는 SFTP, FTP, SSH의 개념.
아주 기본부터 차근차근 정리하니까 이제 이해가 되는 것 같다.
※ 프로토콜의 개념 - https://hjinn0813.tistory.com/133
프로토콜의 개념, OSI 7계층, TCP/IP 4계층
데이터 전송 절차와 관련해서 공부를 하다보니, 올해 상반기 정보처리기사 준비하면서 봤던 OSI 7계층을 다시 보게 됐다.
hjinn0813.tistory.com
SSH
Secure Shell.
원격으로 호스트에 접속하기 위해 사용되는 보안 프로토콜.
원격 통신을 위해 인증 시스템이 필요한데, 단순히 아이디와 비밀번호를 사용하는 것은 보안에 취약하다. 그래서 SSH는 '비대칭키 암호화' 방식을 사용한다. 이때, '공개 키(Public Key)'는 데이터 암호화와 인증에 사용되며, '개인 키(Private Key)'는 암호화된 데이터를 복호화하는데 사용된다. '공개 키'는 노출되어도 안전하지만, '개인 키'는 절대 노출되면 안된다.
SSH 작동 원리
SSH 연결을 설정하려면, 내 컴퓨터(클라이언트)에서 '공개 키(Public Key)'와 '개인 키(Private Key)' 두 개의 키를 생성한다. 내가 접속하려는 서버에 '공개 키(Public Key)'를 미리 등록해두면, 서버는 공개 키를 통해 접속자의 신원을 확인할 수 있다. 접속 과정을 구체적으로 설명하자면,
- 랜덤한 데이터 전송: 서버가 클라이언트에게 랜덤한 데이터(암호화 챌린지)를 보냄.
- 비밀번호 입력: 사용자가 SSH 클라이언트에 로그인하기 위해 비밀번호를 입력한다. 이때 비밀번호는 '개인 키(Private Key)'를 통해 암호화된 후 서버로 전송된다. '개인 키'는 내 컴퓨터에서만 사용되며 서버로 전송되지 않는다.
- 해독 및 검증: 내 컴퓨터가 받은 랜덤 데이터를 해독한 후 서버에 보내면, 서버는 이를 '공개 키(Public Key)'로 검증한다.
- 신뢰 확인: 서버가 암호화된 비밀번호를 올바르게 해독하면, 내가 신뢰할 수 있는 사용자임을 확인하고 접속을 허용한다.
- 명령어 실행: 로그인 후, 명령어를 입력하여 서버의 파일을 관리하거나 소프트웨어를 설치할 수 있다.
공개키 암호화(Public Key Encryption) 기법
비대칭 암호기법.
데이터를 암호화할 때의 '공개 키(public key)'는 데이터베이스 사용자에게 공개하고, 복호화할 때의 '비밀 키(private key)'는 관리자가 관리한다.
장점 | - 키 분배 용이: 공개키는 자유롭게 배포할 수 있고, 키의 개수가 적어서 키 관리가 쉽고 안전하다. - 보안성: 공개키로 암호화된 데이터는 비밀키 없이는 복호화할 수 없어서 데이터의 기밀성이 유지된다. - 전자 서명 가능: 공개키 암호화는 메시지의 출처를 인증할 수 있는 전자 서명을 지원한다. |
단점 | - 속도: 비대칭 암호화는 대칭 암호화에 비해 암호화/복호화 속도가 느리다. 이는 복잡한 수학적 알고리즘을 사용하기 때문이다. - 키 크기: 동일한 수준의 보안을 제공하기 위해서는 비대칭 키의 크기가 대칭 키보다 크기 때문에, 암호화된 파일의 크기가 커질 수 있다. - 복잡성: 알고리즘 구현이 복잡하여 시스템 설계 및 관리에 더 많은 노력이 필요하다. |
FTP
File Transfer Protocol. 파일 전송 프로토콜.
서버와 클라이언트 간에 파일을 전송하는 데 사용된다.
데이터를 암호화하지 않는 평문 통신을 사용하기 때문에, 전송 중에 데이터가 노출될 수 있어서 보안상 취약하다.
FTP 클라이언트로 서버에 연결하고 파일 업로드, 다운로드, 삭제, 이름 변경 등의 명령어로 파일을 관리할 수 있다.
FTP 작동원리
- 클라이언트와 서버 연결: 사용자가 FTP 클라이언트 프로그램을 열고, FTP 서버의 주소와 포트 번호(기본적으로 21번)를 입력하여 서버에 연결한다.
- 인증/로그인: 클라이언트가 서버에 연결하면, 사용자는 아이디와 비밀번호를 입력하여 인증을 받는다. 이 정보는 평문으로 전송되기 때문에 보안상 취약하다.
- 명령어 전송: 클라이언트는 FTP 서버와 '제어 연결'을 통해, 파일 업로드나 다운로드 등 명령어를 보낸다. 제어 연결은 클라이언트와 서버 간의 명령어 전송을 위한 통신 경로이며, 21번 포트를 사용한다.
- 데이터 전송: 명령어에 따라 서버는 '데이터 연결'을 생성하여 파일 전송을 시작한다. 데이터 연결은 파일의 실제 내용을 전송하기 위한 경로이며, 20번 포트를 사용한다. 클라이언트가 "다운로드" 버튼을 클릭하면, 서버가 해당 파일의 데이터를 클라이언트로 전송하고, 클라이언트는 이 데이터를 받아 저장한다.
- 작업 완료: 파일 전송이 완료되면, 클라이언트와 서버는 데이터 연결을 종료하고, 필요한 경우 클라이언트는 추가적인 명령어를 보내거나 세션을 종료한다.
SFTP
SSH File Transfer Protocol.
SSH(보안 셸) 프로토콜을 기반으로 하여, 네트워크 레벨에서 정보 유출을 방지하는 파일 전송 프로토콜.
FTP보다 안전하게 파일을 전송하기 위해 설계되었다.
SFTP 작동 원리
- 클라이언트와 서버 연결: 사용자가 SFTP 클라이언트 프로그램을 열고, SFTP 서버의 주소와 포트 번호(기본적으로 22번)를 입력하여 서버에 연결한다.
- 인증/암호화: 클라이언트가 서버에 연결하면, 사용자는 아이디와 비밀번호 또는 SSH 키를 입력하여 인증을 받는다. 이 과정에서 데이터와 인증 정보가 암호화되어 전송되기 때문에, 외부에서 데이터가 도청될 위험이 적다.
- 명령어 전송: 클라이언트는 SFTP 서버와 연결된 상태에서 파일 업로드, 다운로드 및 다양한 파일 시스템 조작(예: 파일 삭제, 이름 변경 등)을 위한 명령어를 전송한다. SFTP는 SSH 셸을 통해 파일을 관리할 수 있도록 하며, 일반 FTP에 보다 다양한 기능을 제공한다.
- 데이터 전송: 클라이언트가 파일을 업로드하거나 다운로드할 때, SFTP는 암호화된 데이터 연결을 통해 파일의 실제 내용을 전송한다. 모든 전송 과정에서 데이터는 안전하게 암호화되어 있어 보안성이 높다.
- 작업 완료: 파일 전송이 완료되면, 클라이언트와 서버 간의 연결을 종료하고, 클라이언트는 추가적인 명령어를 보내거나 세션을 종료한다.
조금 더 쉽게 말하자면,
SSH는 Secure하게 원격 통신에 접속하기 위한 보안 프로토콜이고,
FTP와 SFTP는 file을 transfer하기 위한 프로토콜이다.
(http와 https처럼 이것도 s 붙은게 안전하다는 의미임)
참고 글
https://velog.io/@pak4184/FTP%EC%99%80-SFTP%EC%9D%98-%EC%B0%A8%EC%9D%B4
'📚 자료실' 카테고리의 다른 글
HTTP 상태 코드의 종류 (0) | 2024.10.30 |
---|---|
쉘과 커널, Powershell과 Bash, CMD (1) | 2024.10.15 |
프로토콜의 개념과 종류, OSI 7계층, TCP/IP 4계층 (0) | 2024.10.15 |
CORS 개념 정리 (0) | 2024.10.11 |
세션, 토큰, 캐시, 쿠키, 로컬 스토리지, 세션 스토리지 (0) | 2024.09.04 |