아르단위드 2023. 9. 13. 01:17

*블록암호: DES

DES 대칭키
DES는 8바이트(64비트)를 한 블록으로 하는 블록 암호이며, 전체 구조는 오른쪽 그림과 같이 초기 순열(Initial Permutation, IP), 최종 순열(Final Permutation, FP), 페이스텔(Feistel) 구조의 16 라운드, 그리고 각 라운드에 사용되는 48비트의 키를 생성하는 키 생성 함수(Key Generation)로 구성되어 있습니다.

곱 암호(Product Cipher): 치환, 순열 등의 단순한 연산을 여러 라운드로 반복하여 안전성을 확보하는 암호학적 구조

페이스텔 구조(Feistel): 암호화하려는 데이터를 반으로 나누어, 라운드마다 절반씩 라운드 함수를 적용하는 구조. 라운드 함수에 역함수가 존재하지 않아도 된다는 장점이 있으나, 비페이스텔 구조보다 많은 라운드가 필요하다는 단점이 있다.

DES: DES는 현대 블록 암호 중 하나로, 초기 순열, 16개의 페이스텔 라운드, 그리고 최종 순열로 구성된다.

*블록암호: AES
ES는 SPN(Substitution Permutation Network)이라는 암호 구조를 사용합니다

SPN(Substitution Permutation Network): S-Box를 사용하는 치환(Substitution)과 P-Box를 사용하는 순열(Permutation)을 여러 라운드에 걸쳐 반복하는 곱 암호의 일종

AES(Advanced Encryption Standard): DES가 취약해진 뒤, NIST가 새로 공모한 블록 암호의 표준 알고리즘. SubBytes, ShiftRows, MixColumns, AddRoundKey로 암호화 및 복호화가 이루어진다.
*블록암호: 운영모드

이번 코스에서는 블록 암호에 사용되는 패딩 기법과 대표적인 운영 모드들을 몇 가지 알아보았습니다. 코스에서는 대표적인 운영 모드로 ECB, CBC, CTR만을 소개했지만, 이 외에도 CTR과 유사한 CFB, OFB, 그리고 현재 네트워크 통신에서 많이 사용되고 있는 GCM 등 다양한 모드가 더 있습니다.

패딩(Padding): 평문의 길이가 블록 크기의 배수가 되도록 평문의 끝에 데이터를 추가하는 기법. 대표적으로 비트 패딩, ANSI X.923 패딩, PKCS#7 패딩 등이 있다.

운영 모드(Operation Mode): 여러 블록의 평문을 암호화하는 방법. 대표적으로 ECB, CBC, CTR, CFB, OFB가 있다.

ECB(Electronic Code Block): 각 평문 블록을 모두 같은 키를 이용하여 독립적으로 암호화한다. 병렬 처리가 가능하지만, 평문의 패턴이 암호문에 나타나므로 혼돈속성이 약하며, 재전송 공격(Replay Attack)에 취약하다.

CBC(Cipher Block Chaining): 현재 블록을 직전 블록의 암호화 결과와 XOR하고, 암호화한다. 각 블록의 암호화 과정에 이전 블록과 IV가 영향을 주므로, 같은 평문 블록도 매번 다르게 암호화된다. 공격자가 IV를 조작하여 평문의 첫 번째 블록을 조작할 위험이 있으므로, 송신자는 IV의 무결성을 보장해야 한다.

CTR(Counter): 임의의 난수(Nonce)와 평문 블록의 인덱스를 결합하고, 이를 블록 암호에 입력하여 키를 생성한다. 암호문의 블록은 이 키를 평문 블록과 XOR하여 생성한다. 병렬 처리가 가능하며, 다른 운영모드에 비해 구현이 간편하다.

*키 교환: Diffie-Hellman 알고리즘

최근에는 Diffie-Hellman 알고리즘이 더욱 뛰어난 성능을 보여주는 타원 곡선 Diffie-Hellman(Elliptic-Curve Diffie-Hellman, ECDH) 알고리즘으로 발전하였습니다. 현대 암호의 중요한 주제로서, 타원 곡선 암호를 소개드리고 싶지만 많은 수학적 지식이 필요한 관계로 개론에서는 다루지 않으려고 합니다.

Diffie-Hellman 키 교환: 공개된 채널을 이용하여 두 사용자가 키를 안전하게 교환할 수 있는 알고리즘. 이산 대수 문제의 어려움에 기반하고 있다.
페르마의 소정리
이산 로그 문제

#해시

해시 함수(Hash Function): 임의 길이의 데이터를 고정된 길이의 데이터로 대응시키는 함수

암호학적 해시 함수(Cryptographic Hash Function): 역상 저항성, 제 2역상 저항성, 충돌 저항성을 만족하는 해시 함수

역상 저항성(Preimage Resistance):                       H(x) = y 에서 y알아도 x 찾기 어려움

제 2 역상 저항성(Second Preimage Resistance):     x 가 주어졌을 때 x =/= x'  H(x) = H(x') 를 만족하는 x' 찾기 어려움


충돌 저항성(Collision Resistance):            x =/= x'  일때              H(x) = H(x')  x,x'만족하는걸 찾기 어려움 

 

주어진다 = 역상 저항성 , 제2 역상 저항성 ((( 함수가 두개다 >> 제2역상저항성))

안주어진다 = 충돌 저항성 안주어지는대 찾기도 힘들다라고 나온다
 

메세지 인증 코드(Message Authentication Code, MAC): 송신자와 수신자 사이에 미리 교환된 키를 사용하여 데이터에서 어떤 고윳값을 생성하고, 데이터를 송신할 때 이를 같이 전송하여 수신자가 데이터의 무결성을 확인할 수 있게 하는 방법. 해시를 사용하는 HMAC, 블록암호를 사용하는 CMAC이 있다.

HMAC(keyed-Hash Message Authentication Code): 키와 해시 함수를 사용하여 MAC값을 생성하는 알고리즘

728x90