공개키와 대칭키

BiteSnail·2023년 12월 11일
0

암호화

정보보호의 3요소 중 하나인 기밀성(Confidentiality)은 승인되지 않은 사람이 정보를 열람할 수 없게 한다 라는 의미를 가지고 있습니다.
옛날에는 봉랍(Siegelwachs)이라고 하는 것을 이용해 편지가 중간에 개방되었는지 확인하는 용도로 사용하기도 하였습니다.
하지만 이런 방법은 취약점이 많이 존재합니다. 탈취 당하기 쉽고 위조하기도 쉽기 때문입니다. 그래서 정보를 보호하기 위해서 암호화(Encryption)하여 전달하는 방식을 사용합니다. 암호화란 특정한 알고리즘을 통해 평문을 암호문으로 바꾸는 것으로 평문의 내용을 감추는 데 사용합니다.

복호화(Decryption)란 암호화된 암호문을 대응하는 평문으로 전환하는 것을 의미합니다.

우리가 사용하는 인터넷은 정보 공유를 목적으로 만들어졌기 때문에 처음부터 보안에 대한 부분이 결여되어 있습니다. 네트워크 과정을 생각해보면 정보를 송수신하기 위해서는 반드시 공유되는 통신매체가 사용되기 때문입니다. 이 때문에 일부 악의적인 사용자는 정보들을 몰래 훔쳐 보기도 하고(Sniffing), 누군가로 위장하여(Spoofing) 나쁜 일을 저지르기도 합니다.

이 때문에 정보를 암호화하여 전달하는 것은 이런 의도를 저지할 수 있는 좋은 방법이라고 할 수 있습니다.

필요성

암호화는 다양한 용도로 사용되었지만 가장 중요하게 사용되는 분야는 전쟁일 것입니다. 전쟁에서 계획이나 정보 등을 숨기기 위해서 암호화는 필수로 사용되었습니다. 유명 영화 '이미테이션 게임' 에서 앨런 튜링은 독일의 암호체계 에니그마(Enigma)를 복호화하기 위한 기계를 만들게 됩니다. 이는 세계 2차 대전에서 연합국이 승리하게 되는 결정적인 이유 중 하나로 꼽히며 암호화가 전쟁시에 사용되는 예를 보여줍니다.

대칭키

대칭키(Symmetric key) 방식은 송신자와 수신자 모두 같은 키를 가지고 암호화와 복호화를 수행하는 방법입니다.

대칭키 방식에서 암호화 정도는 공유하는 키의 복잡함에 영향을 받습니다. 특히 길이에 영향을 크게 받습니다. 컴퓨터에서 데이터는 비트(bit)로 표현되므로 키가 40비트라면 240만큼의 가능한 키가 생기게 됩니다. 비트 수가 더 많아진다면 키도 더 많아 지겠죠.

이런 대칭키 방식에서 키를 찾기 위해서는 브루트 포스(brute-force)방식을 사용합니다. 키를 하나하나 다 넣어 보는 것이죠. 성능이 좋은 슈퍼 컴퓨터로는 56비트 키가 24시간 만에 뚫린다는 얘기가 있지만 그 이상 길이의 키라면 우주의 나이보다도 많은 시간이 걸릴 것 입니다.

암호화 방식

암호화 과정에서 사용되는 알고리즘, 즉 암호화 방법을 암호(Cipher)라고 합니다. 암호는 방식에 따라 구분됩니다.

섀넌이 얘기하는 좋은 암호의 조건은?
혼동성(Confusion)과 확산성(Diffusion)이 있어야 합니다. 혼동성이란 암호문에서 키를 찾아내기 힘들다는 특성입니다. 확산성이란 암호문과 평문 사이의 통계적인 관계를 숨길 수 있다는 특성입니다. 혼동성은 치환 암호에서 오고 확산성은 전치 암호에서 옵니다.

치환 암호

치환 암호(Substitution Cipher)는 평문을 어떤 약속에 의해 암호화된 문자열로 변환하는 것을 말합니다.
로마의 황제 카이사르의 암호는 대표적인 예시라고 할 수 있습니다. 카이사르 암호 방식은 알파벳을 특정 숫자만큼 움직여 암호화 하는 것입니다.

출처: 위키백과

전치 암호

전치 암호(Transposition Cipher)는 평문에서 문자의 순서를 달리하여 나타내는 방법입니다.
예시로는 Columnar Transposition이 있습니다.
Columnar Transposition는 평문을 열로 재배열하는 방법입니다. 아래는 그 예입니다.

블록 암호

블록 암호(Block Cipher)는 정보를 정해진 블록 단위로 암호화하는 방법입니다.

파이스텔 구조

파이스텔 구조(Feistel Structure)는 블록 암호의 일종으로 라운드 함수라고 부르는 특정 계산 함수의 반복으로 이루어집니다.

이 구조에서는 암호화하려는 평문을 L과 R로 나누어 L과 R의 자리를 바꾸는 전치(Transposition)가 발생하고 한쪽에 대해 특정한 값으로 치환(Substitution)합니다. 이를 반복함으로써 암호화 수준을 높일 수 있습니다.

DES

DES(Data Encryption Standard)는 파이스텔 구조의 암호화 방법으로 56비트의 암호화 키를 사용합니다.

AES

AES(Advanced Encryption Standard)는 DES를 대체하기 위한 블록 암호입니다. DES는 컴퓨팅 파워의 발전으로 인해 비교적 짧은 키를 가지는 암호가 되었고, AES는 이를 보완하기 위해 만들어졌습니다.

공개키

대칭키 방식에서 문제점은 키가 탈취당할 수 있다는 점입니다. 대칭키 방식에서는 송 수신자 모두가 키를 공유해야 하기 때문입니다. 이런 한계를 극복하기 위해 사용되는 것이 공개키 방식입니다.
공개키(Public key) 방식은 송신자와 수신자가 각각 개인키(private key)를 가지고 공개키를 공유하게 됩니다. 이때 공개키는 암호화에 사용되고 개인키는 서로의 복호화에 사용됩니다.

RSA

개발자인 Ron Rivest, Adi Shamir, Len Adelman 각각의 성의 맨 앞자리를 따서 RSA라고 이름지었습니다. 가장 일반적인 공개키 방식의 알고리즘입니다.

RSA 방식은 그 방식의 복잡함 때문에 대칭키 기반의 알고리즘보다 느리다는 단점이 있습니다. 또한 중간자 공격에 취약하다는 단점이 있습니다.

profile
느리지만 조금씩

0개의 댓글

관련 채용 정보