Data house
SSH 본문
728x90
AWS같은 클라우드 서비스에서 서버를 생성해보면 '인증키'나 '키 페어'라는 것을 생성하는 과정을 반드시 거치게 된다.
생성 후에는 pem이라는 낯선 형식의 파일을 다운받게 된다.
사실 이 파일은 우리가 생성한 서버에 원격으로 접속할 때,
외부의 보안 위협으로부터 보호해주는 'SSH'라는 보안 방식이 적용된 서버에서 반드시 필요한 파일이다.
SSH(Secure Shell)
- 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.
- 기존 원격 접속은 '텔넷(Telnet)'이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점이 있었다.
- 실제로 WireShark 같은 패킷 분석 프로그램을 이용하면 누구나 쉽게 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용 등의 데이터를 탈취할 수 있었다.
- 따라서 이를 암호화하는 SSH 기술이 등장했다.
- 현재는 원격 접속 보안을 위한 필수적인 요소이다.
- 그래서 NBP나 AWS와 같은 CSP(Cloud Service Provider, 클라우드 서비스를 제공하는 곳)에서 서버 생성시 필수적으로 SSH 보안 과정을 거치는 것이다.
- SSH의 보안 방식에는 다양한 종류가 있지만 대중적으로 쓰이는 방식은 '비대칭키 방식', '대칭키 방식'이다.
- 사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받게 된다.
- 키를 생성하는 방식이 두 가지가 있는데, '비대칭키(또는 공개 키)'와 '대칭키' 방식이다.
비대칭키 방식
- 작동하는 순서: 가장 먼저 사용자와 서버가 서로의 정체를 증명해야 한다. (이 때 비대칭키 방식이 사용됨)
- 서버 또는 사용자가 Key Pair(키 페어, 키 쌍)를 생성합니다. 키 페어는 공개 키와 개인 키의 두 가지로 이루어진 한쌍을 뜻한다.
- 공개 키의 경우 .pub, 개인 키의 경우 .pem의 파일 형식을 띄고 있다.
- 예를 들어, 사용자가 키 페어를 생성했을 경우, 공개 키를 서버에 전송한다.
- 공개 키는 "공개"된 키이기 때문에 누구나 가질 수 있다. 따라서 유출되도 상관없다.
- 서버는 공개 키를 받아서 이 공개 키로 만들어진 랜덤한 값을 생성한다
- 이 값은 사용자가 올바른 키 페어를 가지고 있는지 시험하는 일종의 시험지와 같다.
- 랜덤한 값을 받은 사용자는 가지고 있는 개인 키를 이용해 푼다.
- 공개 키와 개인 키는 하나의 쌍이기에 다른 공개 키나 개인 키를 이용해서 풀 수 없다.
- 개인 키는 공개 키와 달리 다른 어디에도 보여주지 않는 소중한 파일이다.
- 결과적으로 개인 키가 서버와 사용자 간의 사이를 증명하는 유일한 수단이 된다.
- 공개 키에서 나온 문제는 개인 키로만 풀 수 있고, 개인 키는 사용자만 가지고 있다.
- CSP(Cloud Service Provider)를 이용하면서 서버 생성 시에 제공받았던 pem파일이 바로 이 용도이다.
- 서버는 사용자측에서 전송한 값을 자신이 처음 낸 값과 비교하여 같으면 맞다고 판단하고 접속을 허용해준다.
- 이렇게 최초 접속 시 사용자와 서버 간의 인증 절차가 비대칭키 방식을 통해 완료된다.
대칭키 방식
- 서로 누군지 알았다면 정보를 주고 받을 차례이다. 주고받는 과정에서 정보가 새어나가지 않기 위해 정보를 암호화해서 주고받는다.
- 이 때 사용되는 것이 대칭키 방식이다.
- 대칭키 방식은 비대칭키 방식과 달리 한 개의 키만을 사용한다. 이것을 대칭 키라고 한다.
- 예를 들어, 사용자 또는 서버는 하나의 대칭 키를 만들어 서로 공유한다.
- 공유된 대칭 키를 이용해 정보를 암호화하면, 받은 쪽에서 대칭 키로 암호를 풀어 정보를 습득하게 된다.
- 정보 교환이 완료되면 교환 당시 썼던 대칭 키는 폐기되고, 나중에 다시 접속할 때마다 새로운 대칭 키를 생성하여 사용하게 된다
정보 출처
https://library.gabia.com/contents/infrahosting/9002/
가비아 라이브러리
IT 콘텐츠 허브
library.gabia.com
'WEB' 카테고리의 다른 글
cookie data (0) | 2020.09.21 |
---|---|
WEB의 기본과 배경지식 (0) | 2020.09.02 |