본문 바로가기
IT 코딩

암호 분석의 종류

by 김잔버 2020. 11. 18.

암호

1.     암호문 단독 공격 (COA : Ciphertext Only Attack)

어떤 암호문을 얻어서 대응되는 평문과 키를 찾는 것

(통계적 성질, 문장의 특성 등을 추정하여 해독)

2.     기지 평문 공격 (KPA : Known Plaintext Attack) 알려진

해독하려는 암호문 외에 추가로 여러 평문/암호화 쌍을 수집해놓고 분석

일정량의 평문에 대응하는 암호문을 알고 있는 상태에서 해독하는 방법

3.     선택 평문 공격 (CPA : Chosen Plaintext Attack)

어떤 평문을 선택하고 이에 대응되는 암호문을 얻는다.

(평문을 선택하면 대응하는 암호문을 얻을 수 있는 상황에서의 공격)

4.     선택 암호문 공격 (CCA : Chosen Ciphertext Attack)

어떤 암호문을 선택하고 그에 대응되는 평문을 얻는 공격 (방법은 CPA와 비슷)

 

 

 

 

 

 

 

 

 

 

*암호 안전성 평가 CC(Common Criteria) : 암호알고리즘에 대한 평가는 하지 않는다.

*암호모듈에 대한 안정성 평가 CMVP(Cryptographic Module Validation Program)

*암호알고리즘 평가와 암호모듈 평가는 다르다

 

1.     페이스텔 암호  (DES, SEED)

평문 블록의 길이(64bit이상), 키의 길이(64bit 내외), 라운드의 수(16회 이상)로 암호 강도를 결정 짓는다.

*복호화 과정은 암호화 과정과 동일하다 (효율성 높음)

L(i) = R(i-1)

R(i) = L(i-1) XOR F(i)( R(i-1), K(i) )

2.     SPN(Substitution-Permutation Network) 구조 (AES, ARIA, SHARK, SAFER)

입력을 여러 개의 소블록으로 나누고 각 소블록을 S-box로 입력하여 대치(substitution)시키고 S-box의 출력을 P-box로 치환(permutation)하는 과정을 반복

*병렬처리가 가능하지만 별도의 복호화 모듈이 필요하다.

 

-DES (Data Encryption Standard) – Feistel 네트워크의 변형된 형태

평문의 길이는 64bit, 키의 길이는 56bit, 라운드 16

56bit키로부터 16개의 서브키를 생성하고 그 서브키(48bit)를 각 라운드에서 사용

복호화시 서브키 K(i)를 뒤집어서 적용 *(복호화 시 첫 번째는 K(16)키를 사용)

P박스(초기 전치) – Round1 – Round2 – Round3 - …. - Round16 - P박스(최종 전치)

각 라운드는 Feistel구조로 64비를 32bitL, R로 나누어 진행

*S박스는 비선형으로 구현 à 입력값의 한 비트를 바꾼다면 출력값에서는 두 비트

이상이 바뀜 (혼돈을 만족)

*P박스 확산(diffusuin) 시킴

*3 DES (두 개 키사용) à K1-K2-K1 = C=E(D(E(P, K1), K2), K1)

(3개 키 사용) à K1-K2-K3  복호화 과정è 암호문àK3-K2-K1à평문

 

 

 

 

-AES (Advanced Encryption Standard) non-Feistel 알고리즘 Rijndael이 표준(SPN)

128비트 평문을 128비트 암호문으로 출력하는 알고리즘

키사이즈 : 128/192/256bit (라운드 10, 12, 14) 선택 가능, 라운드키는 128비트

키 크기에 따라 AES-128 이런식으로 부름

(1). 비선형성을 갖는 S-BOX를 적용 바이트 단위로 치환을 수행하는 SubBytes()연산

행 단위로 순환 시프트를 수행하는 ShiftRows()연산, 높은 확산을 제공하기 위해 열 단위로 혼합하는 MixColumns()연산, 마지막으로 라운드 키와 stateEX-OR하는

AddRoundKey()연산으로 구성

'IT 코딩' 카테고리의 다른 글

OWASP  (0) 2020.11.20
자료형  (0) 2020.11.19
시스템 프로그래밍 정리  (0) 2020.11.17
리눅스 정리  (0) 2020.11.16
객체지향, 상속, 생성자  (0) 2020.11.15

댓글