1. 암호화(Encryption)
- 메시지 전달 과정에서 제3자가 보더라도 이해하지 못하게 암호화할 수 있습니다.
- 발신자는 평문을 암호화한 암호문을 전달하고 수신자는 암호문을 복호화해 평문을 얻을 수 있습니다.
- 암호화는 해커들이 볼 수 없도록 메시지를 암호화하는 것뿐 아니라 저자를 증명하는 데도 사용될 수 있습니다.
1.1 용어
- 암호: 메시지를 아무나 읽지 못하도록 인코딩하는 알고리즘
- 키: 암호의 동작을 변경하는 숫자로 된 매개변수
- 평문: 암호화되기 전의 원본 메시지
- 암호문: 암호화가 적용된 메시지
- 디지털 서명: 메시지가 위조 혹은 변조되지 않았음을 입증하는 체크섬
- 디지털 인증서: 신뢰할 만한 조직에 의해서 서명되거나 검증된 신원 확인 정보
C = E(P, e)
- 평문 메시지
P, 인코딩 함수E, 디지털 인코딩 키e가 주어지면 부호화된 암호문C를 생성할 수 있습니다.
P = D(C, d)
- 암호문
C, 디코딩 키d, 디코딩 함수D를 사용해서 원래의 평문P로 디코딩할 수 있습니다.
2. 대칭키 암호 알고리즘
- symmetric-key algorithm이라고도 합니다.
- 대칭키란 암호문을 생성할 때 사용하는 키와 암호문으로부터 평문을 복원할 때 사용하는 키가 동일한 암호 시스템입니다.
- 즉 인코딩 키
e와 디코딩 키d가 같습니다.
- 즉 인코딩 키
- 대칭키는 송신자와 수신자가 같은 키를 보유하고 그 키를 통해 송신자가 평문을 암호화해서 전송하면 수신자가 같은 키로 복호화합니다.
2.1 키 길이와 열거 공격
- 키가 누설되면 안 된다는 것이 매우 중요합니다.
- 대부분의 경우 인코딩 및 디코딩 알고리즘은 공개적으로 알려져 있습니다.
- 좋은 암호 알고리즘은 우주에 존재하는 모든 가능한 키 값을 시도해보는 것 외에 다른 방법이 없게 만듭 니다.
- 무차별로 모든 키 값을 대입해보는 공격을
열거 공격이라고 합니다.- 가능한 키 값이 몇 가지 밖에 없다면 무차별 대입으로 암호를 깨뜨릴 수 있습니다.
2.1.1 가능한 키 값의 개수
- 키 값의 개수는 몇 비트이며 얼마나 많은 키가 유효한지에 달려있습니다.
- 대칭키 암호에서 보통 모든 키 값이 유효합니다.
- 8비트라면 256가지 값이 가능하며
- 40비트라면 2^40(약 1조)의 값이 가능합니다.
경고
현대 암호화 표준에서는 최소 128비트 이상의 키 길이를 권장합니다. 컴퓨터 성능이 발전함에 따라 짧은 키는 쉽게 깨질 수 있습니다.
2.2 장점
- 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여, 시스템 개발 환경에 용이합니다.
- 비대칭키에 비해 암호화와 복호화 속도가 빠릅니다.
2.3 단점
- 교환 당사자 간에 동일한 키를 공유해야 하기 때문에 키관리의 어려움이 있습니다.
- 한 사람이 여러 사람과 대칭키 암호 알고리즘을 사용하면 여러 사람마다 각각 다른 비밀 키를 생성하고 기억해야 합니다.
- 잦은 키 변경이 있는 경우에 불편함을 초래합니다.
- 교환 당사자 간에 동일한 키를 공유하는 과정에서 탈취될 수 있습니다.
정보
대표적인 대칭키 암호 알고리즘으로는 DES, 3DES, AES, SEED, ARIA 등이 있습니다.
3. 비대칭키 암호 알고리즘
- 공개키 암호 알고리즘(public key cryptosystem)이라고도 불립니다.
- 암호화 알고리즘의 한 종류로, 암호화할 때 사용하는 암호키와 복호화할 때 사용하는 암호키가 서로 다릅니다.
- 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 탄생했습니다.
- 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는
개인키(또는 비밀키)이고 다른 하나는 누구나 가질 수 있는공개키입니다. - 공개키 암호화 방식은 암호학적으로 연관된 두 개의 키를 만들어서 하나는 자기가 안전하게 보관하고 다른 하나는 상대방에게 공개합니다.
- 개인키로 암호화한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 그 쌍이 되는 개인키로만 복호화가 가능합니다.
- 개인이 비밀통신을 할 경우엔 대칭키 암호를 사용할 수 있지만, 다수가 통신을 할 때에는 키의 개수가 급증하게 되어 큰 어려움이 따릅니다.
3.1 통신 절차
- 송신자는 수신자의 공개키를 구합니다.
- 송신자는 수신자의 공개키로 평문을 암호화합니다.
- 송신자는 암호화된 메시지를 상대방에게 전달합니다.
- 메시지는 암호화되어 있기 때문에 전달 도중에 유출되거나 도청이 되더라도 암호문으로부터 원문을 알아내기 어렵습니다.
- 수신자는 자신의 비밀키로 암호화된 메시지를 해독해서 평문을 얻습니다.
팁
비대칭키는 암호화 외에도 디지털 서명에 활용됩니다. 개인키로 서명하고 공개키로 검증함으로써 발신자의 신원을 확인할 수 있습니다.
3.2 장점
- 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있습니다.
- 각 사용자가 개인키와 공개키 2개만 보유하면 됩니다.
- 암호화 통신을 할 경우에는 각자의 공개키를 공개하여 필요할 때 상대방이 이용할 수 있도록 합니다.
- 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키의 정보로 암호화된 정보를 복호화할 수 있는 키를 비밀로 보유하고 있음으로써 누구나 암호화할 수 있지만 공개키에 대응되는 비밀키를 가진 사람만이 복호화할 수 있는 특징을 가집니다.
3.3 단점
- 공개키 암호는 수학적인 난제를 기반으로 설계되었기 때문에, 암호화나 복호화를 수행하기 위한 연산이 복잡한 수학 연산을 기반으로 구성되기 때문에 효율성은 대칭키 암호에 비해 높지 않고, 대칭키 알고리즘보다 속도가 대략 1000배 느립니다.