Posts SSH 개념과 작동 원리
Post
Cancel

SSH 개념과 작동 원리

SSH란?

SSH 는 Secure Shell 의 약자로 공개된 네트워크에서 두 컴퓨터가 통신할 때 보안 상 안전하게 통신하기 위해 사용하는 프로토콜이다.

  • 프로토콜 : 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

SSH 는 데이터 전송을 하거나, 원격 제어를 할 때 주로 사용한다.

대표적으로는 github 저장소에 파일을 push 할 때나 클라우드 서비스에 접속해서 명령을 내리는 경우가 있다.

FTP 나 Telnet 과 같은 통신 프로토콜은 데이터 전송 시 평문으로 전송되기 때문에 스니핑을 통해 데이터가 노출되기 쉬운 문제점이 있다.

  • 평문 : 암호화되지 않은 정보
  • 스니핑 : 네트워크 상에서 다른 상대방들의 패킷 교환을 엿보는 것

포트 번호는 22번을 사용한다.

SSH 작동 원리

SSH 는 키를 기반으로 통신한다.

클라이언트와 서버는 각각의 키를 가지고 있고, 이 키를 이용해서 연결 상대를 인증하고 안전하게 데이터를 주고 받는다.

키를 생성하는 방식에는 크게 두 가지가 있다.

1️⃣ 비대칭키 방식

비대칭키 방식은 공개키와 개인키를 사용하여 클라이언트와 서버가 서로 인식하기 위해 사용한다.

서버 또는 사용자가 Key Pair(키 쌍)을 생성하며, Key Pair 는 공개키와 개인키로 이루어진 한 쌍을 의미한다.

  • 공개키(Public Key) : 공개되어도 안전함. 메시지를 보내기 전에 공개키로 메시지를 암호화한다. 공개키로는 복호화가 불가능하다. .pub 파일 형식
  • 개인키(Private Key) : 절대 외부에 노출되면 안됨. 로컬 컴퓨터에 저장. 개인키를 통해 공개키로 암호화된 메시지를 복호화한다. .pem 파일 형식

예를 들어 사용자(클라이언트)가 Key Pair 를 생성한 경우, 인증 방식은 다음과 같다.

  1. 공개키를 서버로 전송한다. (이때, 개인키는 사용자만 소유)
  2. 서버는 공개키로 만든 랜덤값을 생성한다.
  3. 사용자는 개인키를 이용해 서버가 보낸 랜덤값을 해석한다.
  4. 해석 결과를 다시 서버에 전송한다.
  5. 서버는 사용자가 전송한 해석 결과를 처음에 공개키로 만든 랜덤값과 일치하는지 확인한다.

비유를 하면 사용자가 잠기지 않은 자물쇠와 열쇠키를 가지고 있고, 잠기지 않은 자물쇠를 서버가 받아서 잠그고, 잠근 자물쇠를 사용자가 열어서 다시 서버에 보내는 것과 유사하다.

그림으로 표현하면 다음과 같다.

ssh.png

2️⃣ 대칭키 방식

비대칭키 인증 방식으로 접속이 허용된 상태에서 정보를 안전하게 주고 받기 위해 사용한다. 비대칭키와 달리 한 개의 키만 사용한다.

인증 방식은 다음과 같이 이루어진다.

  1. 사용자 또는 서버가 하나의 대칭키를 만들고, 서로 공유한다.
  2. 데이터를 보내는 쪽에서 공유된 대칭키로 정보를 암호화해서 보낸다.
  3. 암호화된 데이터를 받은 쪽은 대칭키로 암호를 풀어 정보를 습득한다.
  4. 정보 교환이 끝나면 교환 당시에 쓴 대칭키는 폐기하고, 나중에 다시 접속할 때마다 새로운 대칭키를 생성해서 사용한다.

비대칭키 방식과 마찬가지로 비유를 해서 이해하자면, 어린 시절 단짝 친구와 어른이 되어 다시 만날 때 우정의 증표로 물건을 반으로 쪼개서 가지고 있다가 맞췄을 때 한 짝이 되면 서로를 알아보는 것과 비슷하다.

그림으로 표현하면 다음과 같다.

ssh2.png

참고자료

This post is licensed under CC BY 4.0 by the author.

KDump 개념과 사용하는 이유

tty란?