일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Play2
- 파이썬 강좌
- akka 강좌
- 블록체인
- 스칼라 강좌
- 파이썬 머신러닝
- 안드로이드 웹뷰
- 하이퍼레저 패브릭
- 스칼라
- 이더리움
- play2 강좌
- Akka
- 플레이프레임워크
- 파이썬 데이터분석
- play 강좌
- Hyperledger fabric gossip protocol
- 파이썬
- Golang
- Play2 로 웹 개발
- Actor
- 스위프트
- Adapter 패턴
- 파이썬 동시성
- 스칼라 동시성
- 그라파나
- 하이브리드앱
- hyperledger fabric
- 주키퍼
- 엔터프라이즈 블록체인
- CORDA
- Today
- Total
HAMA 블로그
SSH 인사이드 본문
http://www.slashroot.in/secure-shell-how-does-ssh-work 정리
한글블로그 대부분 사용법만 나온것 같아서 SSH 원리에 대해여 좋은 글을 찾았기에 정리해 봅니다.
SSH 를 알려면 먼저 대칭키,공개키 (RSA) 부터 알아야합니다. 다른 블로그를 참고하세요.
사용법은 https://opentutorials.org/module/432/3742 여기를 참고하세요.
SSH 내부는 어떻게 소통하고 있는가?
1. 대칭키를 공유하기까지
1-1. 클라이언트에서 서버로 connection 맺는다. ssh 버전확인등
1-2. 이제부터 바이너리 패킷으로 통신한다.
1-3. 서버는 id 를 클라이언트에 노출한다. 이 id 는 서버의 rsa public 키 이다.
1-4. 클라이언트가 처음 서버와 접속하는것이라면 저 서버키1에 대한 경고가 클라이언트에 뜬다.
1-5. 서버에 의해 서버키2가 클라이언트에 제공된다. 이 서버키2 는 ssh2 에서는 사용되지 않는다.
이 키는 서버의 매시간마다 디폴트 설정에 따라 생성된다.
1-6. 서버는 8 랜덤바이트 체크바이트를 만든다.
1-7. 서버는 지원하는 암호화관련 방법들을 제공한다.
1-8. 클라이언트는 저 방법중에 하나를 택해서 대칭키를 만든후에 서버로 보낸다. 이때 대칭키를 위의 서 버키1,2로 이중 암호화한다.
1-9. 서버는 해당 암호화된 대칭키를 받아서 복호화 한다.
1-10. 최종적으로 그 대칭키를 이용하여 앞으로 클라이언트와 서버사이 통신의 암호화에 사용한다.
2. 클라이언트 인증
2-1. 비밀번호를 통한 인증
* 비번을 대칭키를 이용하여 암호화하여 서버로 보내서 클라이언트를 인증한다.
* 그 후로는 대칭키로 통신한다.
2-2. public key 를 통한 인증
준비)
* 클라이언트는 public key 와 개인키를 만든다.
* 클라이언트의 public key 를 서버에게 준다.
인증)
* 이후에 로그인을 할때 서버에 존재하는 클라이언트의 public key 로 랜덤 256bit 스트링를 암호화하여 클라이언트에게 준다.
* 클라이언트는 그것을 받아서 자신의 개인키로 복호화한다. 그 후 256bit 스트링을 대칭키와 합쳐서 md5 hash 값으로 만든다.
* 그 해쉬값을 서버로 보내고, 그 해쉬값을 서버에서 검증하여 일치하면 클라이언트 인증이 된것이다.
* 그 후에는 대칭키로 통신한다.
'보안' 카테고리의 다른 글
HTTP 다이제스트 엑세스인증 (0) | 2015.09.20 |
---|---|
HTTP 기본인증 (Basic authentication) (0) | 2015.09.20 |
HTTP 세션을 이용한 인증 (0) | 2015.06.04 |
HTTPS 설정 및 사설인증서 관련 글들 (0) | 2015.06.04 |
자바와 보안을 알기위한 스터디 (0) | 2015.04.27 |