SSH는 대칭키 방식과 비대칭키 방식을 모두 사용하여 인증과 암호화를 진행.
암호화 방식의 종류
- 대칭키 방식
- 동일 키 값으로 암호화 복호화
- 비대칭키 방식
- 암호화와 복호화를 서로 다른 키를 사용하는 방식
aws에 ec2 서버를 만들고 private key (mykey.cer)를 받았다.
서버 인증 과정
- 클라이언트에서
ssh -i mykey.cer ec2-user@123.123.123
명령어를 통해 접속 시도 - 공개키를 받을지 묻는 메세지 나오면 yes -> 클라이언트 pc의
.ssh/knwon_hosts
파일에 공개키 저장됨. - 클라이언트는 난수값을 발생시키고 난수값에 대한 해시값 생성해 저장함.
- 난수값을 공개키로 암호화하여 서버에 전송함.
- 서버에서는 암호화된 데이터를 비밀키로 복호화한 후 난수값을 알아낸다.
- 복호화된 난수값을 통해 해시값을 다시 만든 후 클라이언트에 다시 전송한다.
- 클라이언트에서는 저장하고 있는 해시값과 서버로부터 받은 해시값을 비교해서 서버가 정상적인 서버인지 확인.
사용자 인증 과정
사용자 인증 과정은 서버 인증과 원리는 같다. 서버와 클라이언트의 역할만 바뀐다.
- 사용자 인증은 클라이언트에서 비대칭키(공개키와 비밀키)를 생성한다.
- 생성된 공개키는 사용자가 서버에 있는 .ssh/authorized_keys 파일에 사전에 복사해둔다.
- 서버는 공개키를 가지고 있고 클라이언트가 비밀키를 가지고 있게 된다.
- 서버에서 난수값을 생성 뒤에 해시값 만들어 저장한다.
- 서버에서 난수값을 암호화해 클라이언트에 전송하게 되고
- 클라이언트에서 암호화된 난수값을 비밀키로 복호화를 한다.
- 복호화된 데이터로 해시값을 생성해 다시 서버에 보냄.
- 서버에 저장하고 있던 해시값과 클라이언트로부터 다시 받은 해시값을 비교해 사용자인지를 확인하게 된다.
데이터 암호화
- 서버인증과 사용자 인증이 끝나면, 비대칭 키를 통해 통해 클라이언트와 서버는 대칭키(=세션키)를 교환.
- 그 후 통신 되는 모든 데이터는 세션 키를 통해서 암호화가 이루어짐.
몰랐던점
- 서버 인증 과정과 사용자 인증 과정은 다르단 사실..
- 비대칭키와 대칭키의 개념... 왜 공개키로 복호화도 된다고 생각했을까...
참고
'👨🏻💻 Development > 🗂 etc' 카테고리의 다른 글
Gstreamer Basic tutorial 6: Media formats and Pad Capabilities (1) | 2023.03.23 |
---|---|
Gstreamer Basic tutorial 3: Dynamic pipelines (0) | 2023.03.23 |
Gstreamer Basic tutorial 2 (0) | 2023.03.23 |
Gstreamer Basic tutorial 1 (0) | 2023.03.23 |