본문 바로가기
42/Born2BeRoot

SSH [Born2BeRoot]

by 블로블로글 2023. 12. 11.

https://www.ssh.com/academy/ssh/protocol

SSH(Secure Shell)

  - 네트워크 상에서 암호화된 안전한 커뮤니케이션을 제공하는 프로토콜

  - 주로 원격으로 서버를 관리할 때 사용되며, 데이터의 안전성과 보안성을 보장

  - 원격 서버 관리, 안전한 파일 전송, 보안 터널링 등 다양한 상황에서 필수적인 도구

  - 항상 최신 버전을 유지하고, 강력한 비밀번호 또는 공개 키 인증을 사용하는 등의 보안 사항을 유의

 

  - 공개키를 사용하여 안전하게 세션 키를 교환하고, 이 세션 키를 사용하여 데이터를 암호화하고 복호화하는 방식을 사용

    - 공개키 암호화의 보안성과 대칭키 암호화의 효율성을 결합한 방법

    - 하이브리드 암호화

    - 공개키와 세션키

      - 공개키는 공개적으로 공유되어 데이터를 암호화하고 복호화

      - 세션키는 특정 세션 동안의 통신을 보호하는 데 사용

      - 공개키 (public key)

        - 공개키 암호화는 두 가지 키, 즉 공개키와 비밀키(또는 개인키)를 사용

          - 이 때, 클라이언트와 서버는 서로 다른 keypair를 이용하는데, 이를 비대칭 키 방식이라 함

          - 공개키와 비밀키를 keypair라 부름

        - 이 두 키는 수학적으로 연관되어 있지만, 하나의 키로 다른 키를 도출하는 것은 계산적으로 불가능

        - 공개키는 모두에게 공개되며, 데이터를 암호화하거나 디지털 서명을 검증하는 데 사용

        - 반면, 비밀키는 소유자만이 알고 있으며, 암호화된 데이터를 복호화하거나 디지털 서명을 생성하는 데 사용

          - ssh에서 클라이언트와 서버는 서로의 공개키를 주고 받아, 보낼 인증을 암호화 함

          - 서로의 공개키로 암호화된 메시지를 자신의 비밀키로 복호화해 서로를 인증

      - 세션키 (session key)

        - 세션키는 특정 세션 또는 일정 기간 동안의 통신에서만 사용되는 암호화 키

        - 세션키는 대칭키 암호화에서 사용되며, 동일한 키를 사용하여 데이터를 암호화하고 복호화

        - SSH 같은 프로토콜에서는, 클라이언트와 서버가 처음 연결을 설정할 때 Diffie-Hellman 키 교환 알고리즘을 사용하여 세션 키를 생성하고 공유

        - 이 세션키는 그 세션 동안의 모든 통신을 암호화하고 복호화하는 데 사용

 

  - 특징

    - 보안성

      - 모든 통신을 암호화하여, 중간에 데이터를 가로채는 것을 막음

      - 서버와 클라이언트 간의 인증을 위해 비밀번호 또는 공개 키 인증 방식을 사용

    - 편의성

      - 어디서든 원격으로 서버에 접속 가능

      - 서버 관리를 훨씬 유연하고 편리하게 만듬

    - 다양한 기능

      - 단순한 원격 접속 뿐만 아니라, 파일 전송(SCP, SFTP), 포트 포워딩, 터널링 등 다양한 기능을 제공

    - 널리 사용되는 표준

      - 리눅스, 유닉스, 맥 OS, 윈도우 등 다양한 운영 체제에서 널리 사용되는 표준 프로토콜

 

  - 과정

    - 클라이언트-서버 구조를 사용하여 네트워크 상에서 안전한 커뮤니케이션을 제공

    - 세션 시작

      - 클라이언트가 SSH 서버에 연결 요청

      - 이때 클라이언트는 서버의 공개 키를 받음

    - 암호화

      - 클라이언트는 받은 공개 키를 사용해 일련의 암호화 과정을 거침

      - 이 과정에서 생성된 암호화된 데이터(세션 키)는 서버의 공개 키로 암호화되어 서버에게 전송

      - 이 세션 키는 이후의 커뮤니케이션에서 암호화 및 복호화에 사용

      - 사용하는 암호화 알고리즘은 클라이언트와 서버가 지원하는 알고리즘 중에서 협상을 통해 결정

    - 인증

      - 서버는 자신의 비밀 키를 사용해 암호화된 세션 키를 복호화

      - 이후 클라이언트는 사용자명과 비밀번호 또는 공개 키를 사용해 인증 절차를 거침

        - 비밀번호 기반 인증

          - 사용자 이름과 비밀번호를 사용

        - 공개 키 기반 인증

          - 사용자의 비밀 키와 서버에 저장된 해당 공개 키를 사용

    - 암호화된 커뮤니케이션

      - 인증이 성공하면, 클라이언트와 서버는 세션 키를 사용해 모든 데이터를 암호화하고 복호화

      - 암호화된 메시지가 중간에서 조작되지 않았는지 확인

        - SSH는  HMAC (Hash-based Message Authentication Code)을 사용

        - HMAC은 공유 비밀 키와 해시 함수를 사용하여 메시지 인증 코드를 생성하고, 이를 메시지에 첨부

      - 수신자는 동일한 비밀 키와 해시 함수를 사용하여 코드를 생성하고, 이를 수신한 코드와 비교하여 메시지의 무결성을 검증

'42 > Born2BeRoot' 카테고리의 다른 글

SUDO [Born2BeRoot]  (2) 2023.12.12
UFW [Born2BeRoot]  (6) 2023.12.11
aptitude, apt [Born2BeRoot]  (0) 2023.12.11
SELinux, AppArmor [Born2BeRoot]  (2) 2023.12.11
VM [ Born2BeRoot ]  (0) 2023.12.09