SSH(보안 쉘)
Secure Shell의 약자로 원격 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜
- 기존의 프로토콜들을 대체하기 위해 만들어짐
- 기본적으로 22번 포트를 사용함
- 보안 접속을 통해 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공
- IP spoofing (ip 위/변조 기법중 하나)을 방지하기 위한 기능 제공
- X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩 제공
SSH 키 관리
일반적으로 ~/.ssh/authorized_keys에 저장됨
SSH의 작동원리
비대칭 키(공개 키) 방식 : 서버 또는 사용자가 Key pair(공개&개인)를 생성한다.
서버 인증
- 서버에 공개 키가 저장되어 있음
- 서버에서 공개 키를 받아온후 클라이언트의 .ssh/known_hosts 파일에 저장
- 클라이언트가 난수 만든 후 해쉬값 생성, 난수를 공개 키로 암호화
- 서버에 암호화된 난수값 전달
- 서버가 개인 키로 복호화
- 서버가 복호화된 난수로 해쉬값 생성 후 전송
- 클라이언트에서 해쉬값을 비교
- 서버 인증 완료
사용자 인증
- 사용자 인증은 클라이언트에서 비대칭 키를 생성
- 공개키를 서버에 있는 .ssh/authorized_keys 파일에 복사
- 서버에서 난수값 만든 후 해쉬값 생성, 난수를 공개 키로 암호화
- 클라이언트에 암호화된 난수 값 전달
- 클라이언트가 개인 키로 복호화
- 클라이언트가 복호화된 난수로 해쉬값 생성 후 전송
- 서버에서 해쉬값을 비교
- 사용자 인증 완료
데이터 암호화
서버 인증이나 사용자 인증이 끝난 후 비대칭 키를 통해서 대칭 키(세션 키)를 서로 교환하고
대칭 키를 이용해 암호화가 이루어진다.
전자 서명
개인 키로 암호화를 하고 공개 키를 함께 전달하는 방식을 사용한다.
이 경우에는 Data의 보호가 목적이 아닌 공개 키 제공자의 신원을 보장하는 것이 목적이다.