Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

CIDY

[Cryptography] stage2_현대 암호 본문

Hack/DreamHack(로드맵)

[Cryptography] stage2_현대 암호

CIDY 2022. 7. 20. 01:00

고전 암호 -> 송수신자 모두가 같은 키를 가지고 있어야 했음 -> 이러한 암호 시스템을 대칭키 암호 시스템이라고 함.

https://orcinus-orca.tistory.com/97

 

[Cryptography] stage2: 고전 암호

*고전 암호 고성능 연산 장치 발명 이전, 간단한 기계와 손으로 암호화/복호화 하던 암호를 말한다. 고전 암호는 치환 & 전치의 방법으로 설계된다. 치환: 평문 -> 다른 문자, 전치: 평문 문자 위치

orcinus-orca.tistory.com

 

대칭키 암호 시스템의 경우 키를 공유하는 과정이 필수적 -> 네트워크상에서 평문 키를 공유하는 것은 부적절 -> 키 공유 과정을 알아도 키는 알지 못하도록 하는 키 공유 알고리즘 연구됨

 

Diffie-Hellman 키 교환 알고리즘 -> 송/수신자가 서로 다른 키를 사용하는 공개키 암호 시스템 창안. (대칭키 암호 시스템과 반대되는 개념으로, 비대칭키 암호 시스템이라고도 함.)

 

 

*혼돈과 확산

안전한 암호 시스템은 혼돈(Confusion)과 확산(Diffusion)의 성직을 만족해야 한다고 주장. (Claude Shannon)

 

혼돈: 암호문에서 평문의 특성을 알기 힘든 성질. 단일 치환 암호의 경우 같은 평문을 암호화한 결과는 한상 같기 때문에, 동일한 암호문을 보고 이에 대응하는 평문도 동일하다고 유추 가능 -> 혼돈 성질을 만족하지 못함

 

확산: 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질. -> 대부분 고전 암호에는 없는 성질임

 

 

*대칭키 암호 시스템

암/복호화에 같은 키를 이용하는 암호 시스템. -> 블록 암호, 스트림 암호가 있다. 

 

블록 암호: 평문을 정해진 크기의 블록 단위로 쪼개어 암호화하는 암호이다. -> 만약 평문의 크기가 블록 크기의 배수가 아닐 경우 -> 평문 뒤에 패딩(데이터 추가)을 먼저 하고 암호화를 진행한다. -> DES, AES

 

스트림 암호: 송수신자가 공유하는 데이터 스트림을 생성하고 이를 평문에 XOR하는 암호이다. 평문 = P, 암호문 = C, 스트림 = X -> C = P ⊕ X 

-> 수신자는 위 식의 양 변에 공유 스트림을 xor하여 P를 복호화할 수 있다. 

-> 물론 스트림을 안전하게 공유할 수 있을 때의 가정. -> 하지만 스트림을 안전하게 공유할 수 있다면, 그 안전한 채널로 평문을 공유하면 되는 일. (암호화가 굳이 필요하지 않은 환경)

-> 따라서 송수신자는 스트림을 공유하지 않고, 시드(Seed)라고 불리는 작은 값을 공유한다. -> 시드를 사전에 합의된 함수의 인자로 넣어 각자 스트림을 생성함. 

-> 스트림 암호의 경우 단순 연산으로 구현되므로 속도가 매우 빠른 대신, 블록암호보다 안전하지 못함.

 

스트림 암호

 

 

대칭키 암호 시스템의 경우 공개키 암호에 비해 속도가 빠르지만, 사전 키 교환이 필요하다는 단점이 있다. 

그리고 대칭키 암호 시스템에서는 그룹 내 여러 명이 있을 경우 두 사람마다 서로 다른 키를 생성해야 한다. -> N명의 사람이 있으면 nC2개의 키가 필요함. (두 사람을 순서 없이 묶는 경우의 수) -> 이후에도 새로운 상대와 통신할 때 마다 계속 키 생성해야 함 -> 공개키 암호는 키 생성 측면에서 편함

 

 

*공개키 암호

송신자가 수신자의 공개키(Public Key)로 데이터를 암호화 해 수신자에게 전송하고, 수신자는 자신의 비밀 키(Private key)로 이를 복호화한다. -> "공개"키 인 만큼, 해당 공개키를 아는 사람이라면 누구나 수신자에게 암호문을 보낼 수 있다. -> 공격자가 암호문을 도청해도 비밀키는 수신자에게만 있으므로 복호화 불가.

 

그룹 내 사람들이 각자 공개키와 비밀키를 만든 후, 공개키만 공개하면 됨 -> N명의 사람이 있으면 2*N개의 키만 필요(대칭키 암호에 비해 매우 적은 수.) -> 한번 키를 생성하면 새로운 상대와 통신할 경우에도 다시 키를 만들 필요가 없다.

 

대신 대칭키 암호 시스템에 비해 복잡한 연산이 필요 -> 속도가 느리다. 

그리고 대칭키 암호와 같은 안전성 제공을 위해서는 -> 대칭키 암호보다 긴 키를 사용해야 한다. 

(AES의 경우 192비트 이상의 키면 안전, RSA는 2048비트 이상의 키 권장)

 

 

*암호의 기능

기밀성: 허락된 사람만(== 키를 가진 사람) 정보 열람이 가능하도록 하는 기능

무결성: 송신자가 보낸 정보에 변조가 일어나지 않음. 

인증: 정보를 주고받는 상대방의 신원을 확인하는 기능. (ex: 공인인증서/ 웹 아이디, 비밀번호 등)

부인 방지: 정보 교환 이후 교환한 사실을 부인할 수 없도록 하는 기능.