JWT 의 RSA 암호화 방식

Developer:Bird·2021년 3월 3일
0

WEB

목록 보기
4/4

서버와 클라이언트끼리 데이터를 주고 받는데 있어서 토큰으로 주고 받으면서 CIA의 문제점이 발생 할 수 있다.

[1. CIA란]

CIA란 기밀성(Confidentiality),무결성(Integrity),가용성(Availability)의 약자이다.

  • 기밀성이란 주고받는 정보가 비밀스러워야 한다.
  • 무결성이란 데이터가 변하면 안된다.
  • 가용성은 항상 특정한 방식에 의해 사용 가능하여야 한다.

[1.1.CIA 문제점]

예를들어 A와 B와 C(해커)가 있습니다.

  1. 키 전달 문제: 먼저 기밀성을 위하여 데이터 전송에 있어 암호화를 시켜 보내야한다. 또한 복호화를 하기 위한 '키'를 전달할 필요가 있다. 이때 A가 B에게 '키'를 전달했는데 C(해커)에 의해서 '키'가 탈취당하면 어떻해야하나?

  2. 무결성 문제: A가 B에게 데이터를 전달했는데 C(해커)가 중간에 데이터를 변경,또는 보내는 주체를 변경하여 보내면 어떻게하나?

  3. 가용성 문제: 1,2번으로 인해서 이 또한 문제가 생긴다.

[2. 공개키와 개인키]

이를 해결하기 위해서 존재하는게 바로 RSA암호화 방식입니다. RSA암호화 방식이란 두개의 키(공개키와 개인키)를 가지고 있으며, 공개키는 개인키로 해독할 수 있고, 개인키는 공개키로 해독가능하게 암호화 시키는것을 뜻합니다. openssl(보안 라이브러리)에서 주체의 공개키와 개인키를 생성가능합니다. 이때 공개키는 누구나가 다볼수 있는 키이고, 개인키는 주체만 가지고 있어야하는 키입니다.

[2.1 해결방법]

  1. 키 전달 문제: A가 B에게 키를 전달할때 B의 공개키로 암호화 시키면 된다. 그러면 그것에 대한 정보는 B의 개인키를 가지고 있는 B만 확인할 수 있다.
    2.무결성 문제: A가 B에게 데이터를 전송했을때 데이터가 변하지 않음을 어떻게 증명할 수 있을까? 바로 서명을 사용하면된다. 데이터를 보낼때 A의 개인키를 함께 전달한다. 그래서 A의 공개키로 해독시킬 수 있으면 A임을 증명 할 수 있는것이다.

[3. 추가적인 문제점]

A가 B에게 전달한 비밀스러운 '키'가 쿠키탈취에 의해서 노출되는 현상이 발생하면 어떻게 해야하나?
따라서 서버는 클라이언트의 secret-key를 주기적으로 변경시켜줘야한다.

참고 출처: https://www.youtube.com/watch?v=edyjcg7_Lyc&list=PL93mKxaRDidERCyMaobSLkvSPzYtIk0Ah&index=15

profile
끈임없이 발전하자.

0개의 댓글