서버와 클라이언트끼리 데이터를 주고 받는데 있어서 토큰으로 주고 받으면서 CIA의 문제점이 발생 할 수 있다.
CIA란 기밀성(Confidentiality),무결성(Integrity),가용성(Availability)의 약자이다.
예를들어 A와 B와 C(해커)가 있습니다.
키 전달 문제: 먼저 기밀성을 위하여 데이터 전송에 있어 암호화를 시켜 보내야한다. 또한 복호화를 하기 위한 '키'를 전달할 필요가 있다. 이때 A가 B에게 '키'를 전달했는데 C(해커)에 의해서 '키'가 탈취당하면 어떻해야하나?
무결성 문제: A가 B에게 데이터를 전달했는데 C(해커)가 중간에 데이터를 변경,또는 보내는 주체를 변경하여 보내면 어떻게하나?
가용성 문제: 1,2번으로 인해서 이 또한 문제가 생긴다.
이를 해결하기 위해서 존재하는게 바로 RSA암호화 방식입니다. RSA암호화 방식이란 두개의 키(공개키와 개인키)를 가지고 있으며, 공개키는 개인키로 해독할 수 있고, 개인키는 공개키로 해독가능하게 암호화 시키는것을 뜻합니다. openssl(보안 라이브러리)에서 주체의 공개키와 개인키를 생성가능합니다. 이때 공개키는 누구나가 다볼수 있는 키이고, 개인키는 주체만 가지고 있어야하는 키입니다.
A가 B에게 전달한 비밀스러운 '키'가 쿠키탈취에 의해서 노출되는 현상이 발생하면 어떻게 해야하나?
따라서 서버는 클라이언트의 secret-key를 주기적으로 변경시켜줘야한다.
참고 출처: https://www.youtube.com/watch?v=edyjcg7_Lyc&list=PL93mKxaRDidERCyMaobSLkvSPzYtIk0Ah&index=15