사자자리
[암호학] 현대 암호 본문
암호의 기능
기밀성(Confidentiality) | 허락된 사람만이 정보를 열람할 수 있게 하는 기능 - 허락된 사람은 일반적으로 키를 가지고 있는 사람이다. |
무결성(Integrity) | 송신자가 보낸 정보에 변조가 일어나지 않았음을 의미 - 데이터는 조작, 네트워크 상의 문제 등으로 변경될 수 있다. |
인증(Authentication) | 정보를 주고 받는 상대방의 신원을 확인하는 기능 - 예: 공인인증서, 아이디와 비밀번호 |
부인 방지(Non-repudiation) | 정보를 교환한 이후에 교환한 사실을 부인할 수 없게 하는 기능 |
혼돈과 확산(Confusion and Diffusion)
- 1945년, 암호학자 클로드 섀넌(Claude Shannon)은 안전한 암호 시스템은 혼돈과 확산의 성질을 만족해야 한다고 발표했다.
- 현대의 많은 암호 시스템이 두 성질을 따르고 있다.
혼돈(Confusion)
- 암호문에서 평문의 특성을 알아내기 힘든 성질
- 단일 치환 암호를 사용하면, 같은 평문의 암호문은 서로 같다. 공격자는 암호문을 보고 평문이 무엇인지 유추하지는 못해도, 암호문을 생성한 두 평문이 같다는 사실은 알 수 있다.
- 따라서 단일 치환 암호는 혼돈 성질을 만족하지 못한다.
확산(Diffusion)
- 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질
- 대부분의 고전 암호에서 찾아보기 힘들다.
대칭키 암호 시스템(Symmetric Key Cryptosystem)
- 송신자와 수신자가 같은 키를 공유해야 하는 암호 시스템
- 많은 고전 암호가 해당된다.
- 같은 키를 갖고 있어야 하는 특성상, 사전에 서로 키를 공유하는 과정이 반드시 필요하다.
- 하지만, 현대의 네트워크는 도청에 취약하므로 키를 평문으로 공유하기에 부적절하다.
블록 암호(Block Cipher)
- 평문을 정해진 크기의 블록 단위로 암호화
- 예를 들어, 블록의 크기가 4바이트라면 평문을 4바이트의 블록으로 쪼개어 각 블록마다 암호화한다.
- 만약 평문의 크기가 블록 크기의 배수가 아니어서 블록으로 균등하게 쪼갤 수 없다면, 평문 뒤에 데이터를 추가하는 패딩(Padding)을 먼저 수행한다.
- 대칭 블록 암호의 대표적인 예시: DES(Data Encryption Standard)와 AES(Advanced Encryption Standard)
스트림 암호(Stream Cipher)
- 송신자와 수신자가 공유하는 데이터 스트림을 생성하고, 이를 평문에 XOR하는 암호
- 만약 송신자와 수신자가 평문 길이만큼의 스트림을 매번 공유할 수 있다면, 스트림을 모르는 공격자는 암호문을 복호화할 수 없다.
- 하지만 평문 길이만큼의 스트림을 안전하게 공유할 수 있다면, 스트림을 공유하는 대신 평문을 공유하면 되므로, 암호화가 필요하지 않은 환경임을 의미한다.
- 그래서 일반적으로 스트림을 공유하는 대신, 시드(Seed)라고 불리는 작은 값을 공유하고, 시드를 사전에 합의된 함수의 인자로 넣어 스트림을 각자 생성한다.
- 장점: 스트림 암호는 단순한 연산으로만 구현되므로 속도가 매우 빠르다.
- 단점: 블록 암호보다 안전하지 못하다고 알려져서, 연산 능력이 부족한 임베디드 기기나 속도가 중요한 환경에서만 제한적으로 사용된다.
대칭키 암호 시스템의 장점과 단점
장점
- 일반적으로 공개키 암호 시스템에 비해 속도가 빠르다.
단점
- 송신자와 수신자가 사전에 키를 교환해야 한다.
- 그룹 내에 여러 명이 있을 경우, 두 사람마다 서로 다른 키를 생성해서 사용해야 한다.
- 즉, n명의 사람이 있을 때, 총 n(n - 1) / 2개의 키가 필요하다.
- 이후에도 새로운 상대와 통신할 때마다 계속 키를 생성해야 한다.
- 공개키 암호 시스템은 이런 키 생성의 불편함이 없다.
키 공유 알고리즘(Key-Sharing Algorithm)
- 외부인이 키가 공유되는 과정을 도청해도, 공유되는 키는 알지 못하게 하는 알고리즘
비대칭키 암호 시스템(Asymmetric Cryptography)
- 공개키 암호 시스템(Public Key Cryptosystem)라고도 불린다.
- 송신자와 수신자가 서로 다른 키를 사용한다.
- 송신자는 수신자의 공개키(Public Key)로 데이터를 암호화하여 수신자에게 전송한다.
- 수신자는 자신의 비밀키(Private Key)로 이를 복호화한다.
공개키 암호 시스템의 장점과 단점
장점
- 그룹 내의 사람들이 각자의 공개키와 비밀키를 만든 후 공개키만 공유하면 된다.
- 즉, n명의 사람이 있을 때 2n개의 키만 필요하다.
- 한 번 키를 생성하면 새로운 상대와 통신하더라도 자신이 키를 다시 만들어야할 필요가 없다.
단점
- 일반적으로 대칭키 암호 시스템에 비해 복잡한 연산이 필요하므로 속도가 느리다.
- 대칭키 암호와 같은 안전성을 제공하려면, 대칭키 암호보다 긴 키를 사용해야 한다.
- 예를 들어 대칭키 암호 시스템인 AES는 192 비트 이상의 키를 사용하면 충분히 안전하지만, 공개키 암호 시스템인 RSA는 2048 비트 이상의 키를 사용할 것이 권장된다.
마치며
Q1. 비제네르 암호에서 키워드 SKY로 MINDBLUE를 암호화하면 ESLVLJMO이고 MINTBLUE를 암호화하면 ESLLLJMO이다. 이러한 특성에 비추어 보아, 비제네르 암호는 [ ] 성질을 만족하지 못한다.
A1. 확산
Q2. 다음 설명 중 틀린 것은?
(1) 두 명이 대칭키 암호를 이용해 통신을 하기 위해서는 사전에 키를 교환해야 한다.
(2) 공개키 암호 시스템에서 공개키를 아는 사람은 공개키로부터 비밀키를 알아낼 수 있다.
(3) 공개키 암호 시스템에서 공개키는 암호화를 할 때, 비밀키는 복호화를 할 때 쓰인다.
A2. 2
Q3. 드림이는 내일 오전에 만나 같이 암호학 공부를 하자는 쪽지를 오리에게 직접 받았습니다. 하지만 다음날 늦잠을 잔 오리는 드림이에게 자신이 그런 쪽지를 보낸 적이 없다고 변명했습니다. 오리가 이렇게 거짓말을 할 수 있는 이유는 쪽지에 [ ]이 없기 때문입니다.A3. 부인 방지 기능
'Dreamhack > 암호학 Cryptography' 카테고리의 다른 글
[암호학] 블록 암호: AES (0) | 2022.08.06 |
---|---|
[암호학] 블록 암호: DES (0) | 2022.08.06 |
[암호학] 고전 암호 (0) | 2022.07.31 |
[암호학] 배타적 논리합과 합동식 (0) | 2022.07.24 |
[암호학] 암호학이란? (cf. 인코딩) (0) | 2022.07.24 |