사람들은 네트워크를 통해 패킷을 주고 받습니다. 주고받으며 여러 스위치, 라우터 등을 지나가는데요, 네트워크 상에 공격자가 그 패킷을 훔쳐 데이터를 열람할 수 있습니다!
이를 미연에 방지하기 위해 "네트워크 데이터를 암호화하자"라는 의견이 나왔습니다. 암호화 해 패킷을 가로채도 데이터를 볼 수 없게 만드는 것입니다.
암호화에 쓰이는 구조에 대해 알아보도록 하겠습니다.
암복호화 시 사용하는 키가 같은지, 다른지에 따라 대칭키 암호화구조, 비대칭키 암호화구조라고 부릅니다. 이 대칭키, 비대칭키에 대해 설명하겠습니다!
송신측과 수신측 간에 각각 암호화와 복호화를 위해 동일한 비밀키를 사용하는 방식
제 3자가 해당 암호문을 복호화하지 못하게 하려면 각 쌍의 사용자들마다 유일한 키를 생성해야합니다. 따라서, 쌍이 많아질수록, 키의 수도 많아지겠네요! 이렇게 되면 관리가 어려워지죠..
그리고 위 그림에서 볼 수 있듯, 대칭키를 공유해야하는데요, 전달하는 과정에서 해킹에 노출될 수 있습니다!
단점만 있는건 아닙니다. 암호화 복호화 방식이 비교적 간단해 속도가 빠릅니다!
이런 단점을 극복하기 위해 나온 방식이 비대칭키 암호화 방식입니다.
암호화 복호화를 위해 서로 다른 키를 사용하는 방식
이 암호화 과정은 공개키 암호화 시스템이라고도 불립니다. 암호화 복호화 시 사용되는 키는 공개키, 개인키 입니다. 이 두 키의 관계는 공개키(P+), 개인키(P-)라고 했을 때, 공개키로 개인키를 복호화 가능하고, 개인키로 공개키를 복호화 가능합니다! 즉, 평문 = P+(P-(평문)) = P-(P+(평문)) 인 관계인거죠! 공개키는 공개된 장소에서 접근 가능한 키이고 개인키는 사용자만 알고 있는 키 입니다. 따라서, 키를 공유하는 리스크는 없어졌죠! 하지만 암호화 복호화 방식이 복잡해 시간이 오래걸린다는 단점이 존재합니다..
위 그림에서는 암호화 시 공개키를 사용했는데요, 암호화 시 항상 공개키를 사용하는 걸까요? 아닙니다. 사용분야에 따라 달라집니다!