*공부하면서 정리한 부분이라 잘못된 부분이 있을 수도 있습니다.
암호화 방식은 (1)대칭키 암호화 방식과 (2)공개키(비대칭키) 암호화 방식이 있다.
대칭키 암호화 방식
대칭키 암호화 방식은 암호화, 복호화를 오직 한 가지 키값으로 진행하는 방식으로, 해당 키값이 해커에 의해 노출되면 복호화가 된다는 단점이 있다.
예)
A가 B에게 비밀번호를 보내려고 한다. A가 특정 키값으로 비밀번호 텍스트를 암호화를 하여 변형시킨다.
(키값+비밀번호) 데이터를 함께 B에게 보낸다. 앗! 근데 사실 C가 A와 B 사이 네트워크를 감시하다가 해당 내용을 봤다.
복호화 키값을 알고, 비밀번호 텍스트도 알고 있으니 그냥 알고리즘 방식에 따라 복호화를 진행하면 원래 내용이 보인다.
이런 방식의 공격자(C)를 막기 위해서, 키를 두 가지로 나누어 하나는 암호화, 나머지 하나는 복호화에 사용하는 방식인 공개키(비대칭키) 암호화 방식이 나타났다.
공격자(C)가 네트워크를 엿보는걸 막을 수는 없다. 그렇다면, 복호화를 못하게 해버리자! 가 되는 것.
공개키(비대칭키) 암호화 방식
공개키 암호화 방식은 암호화, 복호화를 총 두 가지 키값으로 나누어 진행하는 방식으로, 통신시에 복호화키는 전송하지 않으므로 네트워크 상에서 탈취될 수 없다. 따라서 공격자에 의해 탈취되어도 암호화된 텍스트를 복호화할 수 없다.
예)
A가 B에게 비밀번호를 보내려고 한다. 이때, B가 암호화 키값과 복호화 키값 총 2개를 생성한다.
A에게 암호화 키값을 보내고 복호화 키값은 보내지 않는다. A는 암호화 키값을 받아서 비밀번호를 암호화하여 변형시킨다. 그리고 (암호화 키값+비밀번호) 데이터를 B에게 보낸다. 앗! 근데 사실 C가 A와 B 사이 네트워크를 감시하다가 해당 내용을 봤다. 그러나 C가 가진건 암호화 키값이지 복호화 키값이 아니기 때문에, 아무리 애를 써도 비밀번호를 원래대로 되돌릴 수 없다(힝ㅠ). B는 받은 비밀번호를 B가 가지고 있던 복호화 키값으로 복호화해서 원래 비밀번호를 읽을 수 있다.
공개키 방식은 RSA 알고리즘이 대표적인데, 하나하나 뜯어보자. 알고리즘은 나무위키에 편-안하게 나와있다.
(공개키 = 암호화키값 , 개인키 = 복호화키값)
암호화키=(e,N) 복호화키=(d,N) 인데 d값을 숨기면 해당 문서를 복호화할 수 없다.
그럼 d를 잘때려 맞추면 되겠네?(Brute force 방식) 하면 되지만, d를 찾기 위해 p와 q를 구해야 하는데
이 값은 소인수 분해가 필요하다. 하지만 d 값이 139857298356932146959213649723897468973809476897348906738947689378946893478967349876 라면?
소인수 분해로 p, q를 하나하나 경우의 수로 구하려면 현재 컴퓨터 연산으로 백만년은 걸릴 것이다. 컴퓨터의 연산능력의 한계를 이용한 암호화 기법인 것. 연산속도가 지금보다 겁-나 빠른 양자컴퓨팅이 나오면 뚫릴 수도 있다던데, 그것도 나중에 찾아 봐야겠다.
'컴퓨터 공학 > 알고리즘' 카테고리의 다른 글
👉 [CS] 메모리 관리, 페이징(Paging) (0) | 2021.06.03 |
---|---|
👉 [CS] 캐시 메모리 (0) | 2021.06.03 |
👉 [CS] Cookie 와 Session 이해 (0) | 2019.12.21 |
👉 [알고리즘] MSE(Mean Squared Error) 간단 정리 (0) | 2019.12.08 |
👉 [알고리즘] 추천 알고리즘 CF (Collaborative Filtering) 이해 (0) | 2019.11.24 |