AWS에서 SSH를 이용해 접속할 때 사용되는 인증 방식인 RSA 방식에 대해서 정리해보자.

📖 RSA란


먼저 공개키와 비밀키의 개념을 잡아야 한다.

단어에서도 알 수 있듯이 공개키는 공개되어 있는 키, 즉 누구나 볼 수 있는 키이다. 반대로 비밀키는 소유자만 가지고 있는 키이다.

A와 B가 데이터를 주고받는다고 해보자. 이 때 아무런 보안 장치를 고려하지 않고 데이터를 주고 받으면 해커에게 정보가 노출될 우려가 있다. 따라서 이를 적절히 암호화해서 보내야 하는데, 문제는 어떤 방식으로 암호화하느냐 이다.

이 때 공개키와 비밀키를 이용해 암호화하는 방식을 RSA 방식이라고 한다.

RSA 방식에서 A -> B로 정보를 주고 받는 과정은 다음과 같다.

  1. A가 받는 입장인 B의 공개키를 이용하여 암호화한다.
  2. 여기서 이 데이터는 B의 비밀키로만 풀릴 수 있다.
  3. 따라서 도중에 데이터가 탈취되어도 탈취한 사람은 데이터를 볼 수 없다.

📖 전자서명이란


그런데 일반적인 RSA 방식에서 생각할 수 있는 문제점이 있다.

예를 들어 A -> B로 데이터를 보내는데 중간에 C가 데이터를 가로채고, 악의적으로 이상한 데이터를 B의 공개키로 암호화하여 보낼 수 있다.

즉, A가 보내고자 하는 데이터는 탈취할 수 없는건 맞지만, C가 악의적으로 다른 정보를 보낼 수는 있는 것이다.

이를 방지하고자 나온 개념이 전자서명이다. 전자서명의 과정은 다음과 같다.

  1. A는 먼저 B의 공개키로 데이터를 암호화한다.
  2. A는 이 암호화된 데이터를 A의 비밀키로 다시 한번 더 잠근다 : 전자서명

이 과정을 거친 데이터를 B가 받으면

  1. 먼저 A의 공개키를 이용해 데이터 복호화를 시도한다. 즉 이 과정을 통해 A가 데이터를 보냈다는 것을 검증할 수 있다.
  2. 복호화에 성공하면 B의 비밀키로 데이터를 다시 한번 복호화한다.

여기서 주목할 점은 전자서명만 된 데이터는 누구나 풀 수 있다.

단, 전자서명이 된 데이터를 풀려면, 전자서명을 한 사람의 공개키를 이용해서 풀어야 한다. 이는 반대로, 해당 데이터가 그 사람의 비밀키로 암호화 되었음을 뜻한다.

이 때 그 비밀키는 소유자만 가질 수 있으므로, 결론적으로 전자서명이 된 데이터는 그 사람이 서명했다고 신뢰할 수 있는 것이다.

⚡개인적으로 공부하면서 포스팅한 글입니다. 오류가 있는 경우 지적해주시면 감사하겠습니다!⚡

카테고리:

업데이트:

댓글남기기