Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- aws사용자모임
- open ai
- nexus
- go
- awskrug
- 변수
- 프로세스 관리
- 3티어 아키텍처
- 애저
- 함수
- 파이썬
- it기사
- python
- 클라우드
- Azure
- OpenAI
- Linux
- docker
- dockerfile
- git hub
- jenkins
- 리눅스
- AI
- maven
- terraform
- AI챗봇
- GIT
- 표준 라이브러리
- 사용자 계정 관리
- AWS
Archives
- Today
- Total
We are Architect
6. SSH 본문
* SSH 가 무엇인가?
- SSH는 Secure Shell의 약자이며 뜻은 원격 접속 보안 프로토콜이다.
- SSH 프로토콜은 기존 telnet과 같은 원격 접속 프로토콜이 평문으로 통신하던 방식에 대해 보안적으로 취약한 점을 보완하기 위해서 나왔다.
- 즉 평문을 암호화 하여 중간에 데이터를 탈취당해도 알고리즘으로 암호화된 데이터를 읽을 수 없게 만든 프로토콜이다.
- SSH의 포트번호는 22번이다.
* SSH 세션 인증 과정
- 클라이언트의 서버 접근 요청
- SSH 프로토콜은 TCP 3-way handshake 과정이 완료후에 작동한다.
- 클라이언트는 서버에 22 포트로 접근 요청을 시도한다.
- 암호화 알고리즘 및 키 교환 방식 협상
- 클라이언트와 서버는 서로 사용할 암호화 알고리즘, 해시 알고리즘, 키 교환 알고리즘을 협상한다.
- 키 교환 방식으로는 Diffie-Hellman 키 교환이나 Elliptic-Curve Diffie-Hellman (ECDH) 알고리즘이 사용된다.
- Diffie-Hellman 키 교환 방식: 각각의 비밀 값을 기반으로 동일한 키를 독립적으로 계산해 공통의 비밀 키를 공유할 수 있도록 한다.
- 이 세션 키는 이후의 모든 통신 데이터를 암호화하는 데 사용된다.
- Diffie-Hellman 키 교환 방식: 각각의 비밀 값을 기반으로 동일한 키를 독립적으로 계산해 공통의 비밀 키를 공유할 수 있도록 한다.
- 서버는 기존에 있는 공개키와 사설키 한 쌍에서 공개키를 클라이언트에게 보낸다.
- 클라이언트는 서버의 공개 키를 ~/.ssh/known_hosts 파일과 비교하여 신뢰 여부를 판단한다.
- 만약 있다면 서버를 신뢰하고 연결을 진행한다.
- 없다면 해당 퍼블릭키를 사용자가 연결을 할건지 서버 키 지문을 보여주고 사용자 여부를 결정하게 한다.
- 서버 키 지문 이란 공개 키 값을 해쉬한 값을 이야기한다.
- 그리고 디지털 서명 또한 개인키로 암호화해서 같이 보낸다.
- 디지털 서명이란 서버가 신뢰성을 증명하기 위해 생성한 암호화된 데이터 이다.
- ssh에 사용되는 디지털 서명에 들어가는 암호화된 데이터는 클라이언트와 서버 간 알고리즘 협상 시 주고받은 데이터를 개인키로 암호화시킨 것이다.
- 디지털 서명이란 서버가 신뢰성을 증명하기 위해 생성한 암호화된 데이터 이다.
- 클라이언트는 서버가 보내준 공개 키를 가지고 디지털 서명을 확인한다.
- 클라이언트는 공개키로 디지털 서명을 검증할 수 있고 해당 내용이 위에 알고리즘 및 해쉬 협상 내용과 비슷하면 검증이 완료되었으므로 계속해서 세션 연결을 한다.
- 그리고 Diffie-Hellman 키 교환 알고리즘을 사용하여 공유키가 만들어진다.
- 공유키가 만들어지면서 해시 함수를 적용해 세션 키도 만들어진다.
- 세션키는 서버와 클라이언트가 암호화 통신을 하기 위해서 사용된다.
- 클라이언트와 서버가 서로 공유키를 공유한다.
- 이 키는 서로 주고받지 않는다. 왜냐면 각자 Diffie-Hellman 키 교환 알고리즘의 계산을 통해서 만들어졌기 때문이다.
- 공개 키는 세션 키로 파생되어 암호화 복호화에 사용이 된다.
- 디지털 서명까지 확인 후에는 암호화된 세션 연결 설정이 된다.
- 이때부터 공유키 해시 함수를 통해 세션 키로 파생된다.
- 세션 키를 가지고 모든 통신이 암호화된 상태로 진행이 된다.
* 중요한 점은 디지털 검증은 서로 연결을 위한 검증 수단이다.
* 중요한 데이터를 주고받을 때는 공유 키가 중요한 것인데 공유 키는 세션 키로 파생되어서 데이터를 암호화하는 데 사용된다.
'네트워크' 카테고리의 다른 글
7. http / https (0) | 2025.01.24 |
---|---|
5. 서브넷팅 (0) | 2024.10.28 |
4. IP란? (0) | 2024.10.26 |
3. TCP / UDP의 포트 목록 (0) | 2024.10.25 |
2. TCP / UDP (0) | 2024.10.23 |