암호화 : 데이터를 어떤 규칙으로 변환하여 원래의 내용을 알 수 없게 하는 기술.
평소에 잘 사용하지 않는 용어가 몇 나오기 때문에 설명하자면,
평문을 암호화하여 암호를 만들어 송신하면, 수신자는 암호를 다시 복호화하여 평문을 알게 된다.
즉, 송신 측은 암호키로 암호화를 하고 수신 측은 복호키로 복호를 한다.
암호화의 방식은 기본적으로 대칭키 암호화와 비대칭키 암호화 두 가지로 나누어진다.
대칭키 암호화는 송신자와 수신자가 같은 키를 사용하여 암호화, 복호화를 진행하는데,
이때 이 대칭키를 공통키라고 말하기도 한다.
비대칭키 암호화는 대칭키와 반대로 송수신자가 암호화, 복호화에 각각 사용하는 키가 달라서 비대칭키 암호화라고 하는데, 여기서 송수신자 이외에는 알 수 없기 때문에 비밀키 암호화라고도 한다.
1. 대칭키 암호방식 (Symmetric Key, 공통키)
: 하나의 키를 공유하여, 송신자가 암호화하는 암호키와 수신자가 해독하는 복호키가 같은 것.
쇼핑몰 웹과 같은 불특정 다수와 통신하는 상황에서는 상대의 수 만큼 공통키가 필요하기 때문에 맞지 않는 방식이다.
대표적 공통키 암호 방식
* AES : 키의 길이가 128, 192, 356 비트 중 하나. AES가 나오기 전까지 주류였던 DES에 비해서 해독하기 어려운 게 특징이다.
* DES : 1972년에 개발되어 암호화 표준으로 결정되었었던 암호 알고리즘, 56비트의 키로 암호화, 16 라운드
2. 비대칭키 암호방식 (asymmetric key, 공개키)
: 송신자가 암호화하는 암호키(공개키)와 수신자가 해독하는 복호키(비밀키)가 다른 것.
공개키 암호화라고 해서 더 암호에 취약하다고 생각할 수 있지만, 공개키와 비밀키 모두 사용한다.
공개키는 외부에 공개하고, 비밀키는 수신자만 알고 있는 키.
모두가 알 수 있는 공개키를 사용하여 암호화를 하지만, 그걸 복호 하는 것은 수신자 혼자만 가지고 있는 비밀키를 사용해서만 가능하다.
그럼 송신자는 해독 할 수 있는 단서는 아무것도 모르면서 어떻게 암호화를 하는 걸까???
간단히 설명해보자면
① 수신자는 한 쌍의 키를 생성하는데, 그중 하나는 공개키, 나머지 하나는 혼자만 알 수 있는 비밀키이다.
② 공개키를 본인이 정보를 받을 송신자에게 보낸다.
③ 송신자는 받은 공개키를 이용하여 평문을 암호화한다.
④ 송신자는 암호화된 데이터를 수신자에게 보낸다.
⑤ 수신자는 자신의 비밀키를 사용하여 데이터를 복호 하여 평문을 알아낸다.
그니까 공개키도 비밀키도 수신자가 만들었기 때문에 가능한 것이다.
송신자는 그냥 받은 공개키로 암호화만 해서 보내면 수신자가 알아서 하는 것.
그렇기 때문에 한명의 수신자가 불특정 다수와 통신할 때 가장 적합한 방식이다.
대표적 공개키 암호방식
* RSA : 업계표준인 공개키암호화방식의 한종류. 암호의 해독에는 큰 수의 소인수분해가 필요해서 계산시간이 오래 걸려서 안전하다.
* DSA : 이산대수(이산로그)의 복잡함을 이용하여 엘가말 암호를 개선한 암호방식이다.
* DH : 디피-헬먼 키 교환 암호화 기법. 이산대수(이산로그)의 복잡함을 이용한 방식으로, DH로 공통키를 만들어서 교환한다. 이 암호화 방식에서 공통키는 송수신자 이외에는 알지 못한다.
내가 볼 때 DH를 이용한 방식들은 공개키 암호화 방식중 하나이지만 비대칭은 아닌 것 같은데...
나도 여기서 보고 대강 알아낸거라,, 더 공부해봐야지..
https://ko.wikipedia.org/wiki/%EB%94%94%ED%94%BC-%ED%97%AC%EB%A8%BC_%ED%82%A4_%EA%B5%90%ED%99%98
댓글