AWS

RSA 알고리즘

25G 2023. 1. 25. 19:34

RSA? (비대칭키)

데이터를 통신으로 주고받을때는 항상 해당 데이터의 탈취에 대한 방어에 대해서 고민을 해야합니다. 이때 단순하게 암호화하는 key와 복호화 하는 key가 같다면 탈취하는 입장에서는 key만 탈취하면 되는것이니까 데이터 탈취가 너무나 간단해 집니다. 그래서 이를 보안하기 위해서 나온 알고리즘이 RSA 비대칭키 알고리즘입니다.
RSA는 암호화하는 key와 복호화하는 key가 서로 다른 키를 사용하며 암호화하는 key를 공개키(public key) 라고 하고 복호화하는 key를 비밀키 (private key)라고 합니다. 그럼 통신을 할때 보내는쪽에서 가지고 있는 공개키 암호화 하는것이 아니라 통신을 받는쪽의 공개키로 암호화해서 데이터를 보내면 데이터를 받은사람은 자신의 비공개키로 열면 데이터가 열리고 혹시나 중간에 데이터를 탈취당하더라도 탈취당한 데이터에는 공개키 밖에 없기때문에 암호화된 데이터를 열어볼 수 없습니다.
자! 그럼 이제 완벽하게 보안이 된것일까요?
아닙니다 데이터 탈취를하는 사람은 또 방법을 찾을 것입니다. 바로 public key와 데이터를 동시에 탈취해서 해당 데이터가 뭔지는 모르겠지만 일단 공개키를 얻었으니 아무 데이터를 넣어서 공개키로 암호화 해서 보내는것입니다. 그럼 데이터를 받는 쪽에서 처음 보냈던 데이터와 전혀 다른 데이터를 받게 되는것이지요. 이를 해결하기 위해서는 단순히 데이터를 암호화 하는것에서 그치는 것이 아니라 누가 데이터를 보냈는지에 대한 프로토콜 이 필요합니다.

송신자

  1. 데이터를 수신자의 공개키로 잠근다.
  2. 그 데이터를 다시 송신자의 비밀키로 잠근다. (전자서명 개념)
  3. 전송

    수신자

  4. 데이터를 송신자의 공개키로 연다.
  5. 열리면 수신자의 개인키로 연다.

전자서명?

"안녕하세요"라는 데이터를 송신자가 비밀키로 잠궜다. 그럼 해당 송신자의 공개키는 모두에게 공개 돼있는것이니까 누구나 "안녕하세요"라는 데이터를 열어볼 수 있다 왜냐하면 "안녕하세요"는 해당 송신자의 비밀키로 잠궜기 때문입니다. 그렇다면 이 "안녕하세요"를 해당 송신자의 공개키로 열었다는 것은 해당 송신자가 보낸 데이터라는것이 증명되는 것이 되는것입니다. 왜냐하면 해당 송신자의 비밀키는 본인만 들고있다는 가정이 기저에 깔려있기 때문이죠
그렇기 때문에 위 프로토콜에서 송신자의 2번에 내용이 전자 서명을 한다는 뜻이 이 말을 뜻하는 것입니다.
이로서 공개키탈취후 데이터 조작에 대한 약점도 해결할 수 있게 됐습니다.

RSA는 완벽한 보안 이 될 수 있을까?

완벽한 보안은 없다고 합니다.
그럼 RSA 비대칭키 방식의 통신을 할때의 가장 표면적이고 큰 약점은 private key에 대한 보관 및 보안이 돼겠네요. 위 알고리즘 대로라면 private key를 탈취당하지 않는 한에서는 신뢰할수 있는 통신을 할 수 있게 됩니다.