관리 메뉴

HAMA 블로그

SSH 인사이드 본문

보안

SSH 인사이드

[하마] 이승현 (wowlsh93@gmail.com) 2016. 6. 9. 20:49

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 값으로 만든다. 

 * 그 해쉬값을 서버로 보내고, 그 해쉬값을 서버에서 검증하여 일치하면 클라이언트 인증이 된것이다. 

 * 그 후에는 대칭키로 통신한다.  

Comments