CIDY
[Cryptography] stage2_현대 암호 본문
고전 암호 -> 송수신자 모두가 같은 키를 가지고 있어야 했음 -> 이러한 암호 시스템을 대칭키 암호 시스템이라고 함.
https://orcinus-orca.tistory.com/97
대칭키 암호 시스템의 경우 키를 공유하는 과정이 필수적 -> 네트워크상에서 평문 키를 공유하는 것은 부적절 -> 키 공유 과정을 알아도 키는 알지 못하도록 하는 키 공유 알고리즘 연구됨
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: 공인인증서/ 웹 아이디, 비밀번호 등)
부인 방지: 정보 교환 이후 교환한 사실을 부인할 수 없도록 하는 기능.
'Hack > DreamHack(로드맵)' 카테고리의 다른 글
[Cryptography] stage3_블록암호: DES (0) | 2022.07.21 |
---|---|
[Cryptography] stage3_블록암호: AES (0) | 2022.07.20 |
[Cryptography] stage2_고전 암호 (0) | 2022.07.20 |
[Cryptography] stage1_intro (0) | 2022.07.19 |
[Reverse_Engineering] stage2_Binary&Analysis (0) | 2022.07.16 |