정보보호론/보안과 암호

암호 기법의 분류

retro_blue 2020. 9. 4. 15:56
반응형

암호

 - 암호란 비밀을 유지하기 위하여 당사자끼리만 알 수 있도록 꾸민 약속 기호, 평문↔암호문으로 변환하기 위한 원리, 수단, 방법 등을 취급하는 기술 또는 과학

 - 암호학(Cryptology) 측면에서의 암호로 메시지 암호화ㆍ복호화를 수행하는 알고리즘

 

 - 암호의 원리 : 전치ㆍ치환암호와 스트림ㆍ블록암호로 분류 가능

 

암호기법의 종류

- 전치암호 : 선형 [1:1 자리를 바꾸는 규칙, 재배열]

    ex) ROT13(위치교환)

- 치환(대치) : 비선형 [1:1 대응이 아니어도 상관없다, 교환]

    ex) XOR연산(바꿔치기)

- 스트림 암호 : 데이터 흐름(스트림)을 순차적으로 처리해가는 암호 알고리즘의 총칭

    ex) 오디오/비디오 스트리밍

- 블록암호 : 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용해 암호화

    ex) 데이터 전송, 스토리지 저장

 

 

* 대칭키 방식 : 비밀키 이용

 비대칭키 방식 : 공개키/개인키

 

대칭키 = 비밀키 = 관용키 = 세션키 = 비공개키
비대칭키 = 공개키 = 사설키

 

 

 ★ 전치암호 (Ransposition Cipher)

  - 평문을 구성하는 문자 위치를 서로 바꿔 재배열하는 방식

  - 위치만 이동한다. 즉 선형으로 평문과 암호문이 1대1로 매치가 되는 것이다

    ex) ABCDE → CBEAD

 

 ★ 대치암호 (=치환암호, Substitution Cipher)

  - 평문의 각 문자를 새로운 문자로 대치하는 방식

  - 평문의 각 원소에 다른 원소를 사상시키는 것 (치환)

  - 대치암호(치환암호)의 특징은 암호문과 평문의 1의 개수가 일치하지 않는다는 것.

  - 비선형으로써 평문과 암호문이 1대 n으로 매치됨

  - 평문을 XOR 연산하여 암호화하는 스트림 암호가 여기 속함

  ex) 010110(평문, 1의 개수 3) - 111000(Key) -XOR(같으면 0, 다르면 1)- 101110 (1의 개수 4)

 

 

 ★ 스트림 암호 (Stream Cipher)

  - 한 번에 한 바이트씩 암호화되는 형식, 처음엔 초기값을 필요로 한다

  - 평문을 키 생성알고리즘 비밀키로 XOR 연산하여 암호화하고, 그 암호문을 기밀성과 무결성이 보장되는 채널을 통하여 받은 비밀키로 복호화하여 평문으로 만든다

 

 ★ 블록암호 (Block Cipher)

  - 대칭키 방식에서 사용하는 비밀키를 이용하여 고정된 크기의 입력 블록을 고정된 크기의 출력 블록으로 변형하는 암호 알고리즘. 이때 출력 블록의 각 비트는 입력 블록과 키의 모든 비트에 영향을 받는다

  - 입력을 한 번에 하나의 원소 블록씩 처리

  - Round를 사용하고, 반복적으로 암호화 과정을 수행해 암호화 강도를 높임

  - 평문을 일정한 블록단위로 나눠 각 블록마다 암호화 과정을 수행해 고정된 크기의 블록단위 암호문 생성

  - DES, AES, SEED, HIGHT, IDEA, RC5, ARIA. 즉, 대칭키 방식은 모두 블록 방식

  - 블록 방식에는 Feistel 방식과 SPN 방식이 있음

 

 ① Feistel 방식

  - 평문을 블록으로 나눈 뒤 각각의 블록을 선형과 비선형으로 나눔

  - 암호 알고리즘과 복호 알고리즘이 같다

  - Feistel 암호 방식의 강도를 결정짓는 요소는 '평문 블록의 길이', '키의 길이', '라운드 수' 이다

 

 

 ② SPN 방식

  - 평문을 블록으로 나눈 뒤 각각의 블록을 선형과 비선형으로 분할하지 않는다

  - 암호, 복호 알고리즘이 다르다

  - 분할과정이 없어 Feistel 구조보다 간단하다

  - AES : 128bit 10R, 196bit 12R, 256bit 14R, 열혼합 과정 추가(Mix columns)

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

 

 

 * P-box : P-박스는 문자 단위로 암호화를 수행하였던 고대 전치암호를 현대에서 병렬적으로 수행하는 것

  - 단순(straight) P-박스 : 역함수 존재

  - 축소(Compression) P-박스 : 역함수가 존재하지 않음

  - 확장(Expansion) P-박스 : 역함수가 존재하지 않음

 

 ** S-box

  - 치환암호의 축소 모형

  - 입력과 출력의 개수가 달라도 됨. 즉 S-박스에서 입력은 n비트, 출력은 m비트일 때, n과 m이 서로 같을 필요는 없다

  - S-박스 구성 요소는 이동(shift), 교환(swap), 분할(split), 전치(transposition, P-박스), 치환(substitution, S-박스), XOR연산(exclusive-OR) 등이 있음

 

비교 Feistel SPN
역함수 암ㆍ복호화 과정에서 필요 없음 암ㆍ복호화 과정에서 필요
분할 분할 필요
연산량이 많이 소요
분할 없이 한 번에 처리
비교적 덜 복잡한 연산
안전성 측면 라운드 함수의 안전 설계 중요 Feistel에 비해 효율적 설계 가능
대표 암호 DES, LOKI, Blowfish, RC5 AES, SAFER, IDEA, SHARK

 

 

■ 블록암호 알고리즘 운영모드

 

ECB (Electric Codebook)

 - 평문 블록을 그대로 암호화 하는 방식

 - 동일 평문에 동일 암호문이라는 약점이 있음

 - 코드북(codebook)이라 하며, 가장 간단하게 평문을 동일한 크기의 평문 블록으로 나누고 키로 암호화하여 암호 블록을 생산함

 - 한 평문 블록의 오류가 다른 평문 블록의 암호 결과에 영향을 미치는 오류 전이(Error Propagation)가 발생하지 않음

 - 가장 단순한 모드. 평문을 일정한 블록단위로 순차적으로 암호화하는 구조

 

 

 ⓑ CBC (Cipher Blokk Chaining)

  - 암호문 블록을 체인처럼 연결, ECB 모드의 약점 회피, 각 평문 블록을 이전 암호문 블록과 XOR한 후 암호화 되어 안정성을 높이는 모드

  - 현재의 평문 블록과 바로 직전의 암호 블록을 XOR한 후 그 결과를 키로 암호화하여 암호 블록을 생성

 

  - IV는 초기화 벡터로 처음에 아무것도 없을 때 난수를 통해 값을 산출해 대입, 처음에만 필요하고 다음 단계에서는 필요 없다

  - 초기화 벡터(IV : Initialization Vectgor) : 블록암호 알고리즘에서 최초의 평문 블록을 암호화할 때는 '한 단계 앞의 암호문 블록'이 존재하지 않으므로 '한 단계 앞의 암호문 블록'을 대신할 비트열

  - 초기화 벡터는 제3자로부터 예측이 불가능해야 한다

 

* 암호문에 문제가 있는 경우엔?

 - CBC 모드에서는 한 단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행한다. 따라서 생성되는 각각의 암호문 블록은 현재 평문 블록뿐만 아니라 그 이전의 평문 블록들의 영향도 받게 된다

 

 

 ⓒ CFB (Cipher Feedback)

  - 암호 피드백 모드

  - 한 단계 앞의 암호문 블록을 암호 알고리즘의 입력으로 사용한다

  - CFB모드를 이용하면 어떤 블록암호도 스트림 암호로 바꿀 수 있음

  - CFB, OFB, CTR의 공통점은 n비트 블록에서 r비트 단위로 스트림 암호화가 가능하다는 점이다

  - CFB모드에서는 1개 앞의 암호문 블록이 암호 알고리즘으로 입력됨. 즉,  암호문 블록을 암호 알고리즘으로 피드백한 것

  - 최초의 암호문 블록을 만들어낼 때는 1단계 앞의 출력이 존재하지 않으므로 초기화 벡터(IV)를 사용한다

 

 

* 복호화 과정에서도 초기벡터를 복호화 하는 것이 아니라 암호화를 진행한다.

 

 

 ⓓ OFB (Output Feedback Mode)

  - 암호 알고리즘의 출력을 암호 알고리즘의 입력으로 사용한다

  - 평문 블록은 암호 알고리즘에 의해 직접 암호화되고 있는 것은 아니다

  - 평문 블록과 암호 알고리즘의 출력을 XOR해서 암호문 블록을 생성한다

  - 한 평문 블록의 오류가 다른 평문 블록의 암호 결과에 영향을 미치는 오류 전이(Error Propagation)가 발생하지 않는다

  -전송 중의 비트 오류가 전파되지 않는 동기식 스트림 암호이다

  - '한 단계 앞의 암호 알고리즘의 출력을 암호화한 값'과 '평문 블록'을 XOR 연산하여 암호문 블록을 생성하는 운영모드

  - 암호화와 복호화가 같은 구조

  - 비트 단위의 에러가 있는 암호문을 복호화하면, 평문에 대응하는 비트에만 에러가 발생

 

 

 ⓔ CTR (Counter Mode)

  - 1씩 증가해 가는 카운터를 암호화 해서 키 스트림을 만들어 내는 스트림 암호

  - 각 평문 블록별로 증가하는 서로 다른 카운터 값을 키로 암호화하고 평문 블록과 XOR하여 암호 블록을 생성한다

  - 블록암호를 스트림 암호로 바꾸는 구조를 가짐

  - 카운터 방식에서는 각 블록마다 현재 블록이 몇 번째인지 값을 얻어, 그 숫자와 nonce라는 임의 값을 결합하여 블록암호의 입력으로 사용함. 각 블록암호에서 연속적인 난수를 얻은 다음 암호화하려는 문자열과 XOR함

 

■ 블록암호 공격

 

- 차분공격 (Differental Crptanalysis) : 1990년 Biham과 Shamir에 의하여 개발된 선택된 평문공격법, 두 개의 평문 블록들의 비트 차이에 대하여 대응되는 암호문 블록들의 비트 차이를 이용ㅎ여 사용된 암호열쇠를 찾아내는 방법

- 선형공격 (Linear Cryptanalysis) : 1993년 Matsui에 의해 개발되어 알려진 평문 공격법으로, 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 열쇠를 찾는 방법

- 전수공격법 (Exhaustive Key Search = 무차별 공격(Brute Force)) : 1977년 Diffie와 Hellman이 제안한 방법으로 암호화할 때 일어날 수 있는 모든 가능한 경우에 대하여 조사하는 방법으로 경우의 수가 적을 때는 가장 정확한 방법이지만, 일반적으로 경우의 수가 많은 경우에는 실현 불가능한 방법

- 통계적 분석 (Statistical Analysis) : 암호문에 대한 평문의 각 단어의 빈도에 관한 자료를 포함하는 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법

- 수학적 분석 (Mathematical Analysis) : 통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법

반응형

'정보보호론 > 보안과 암호' 카테고리의 다른 글

대칭키와 공개키 비교  (0) 2020.09.10
공개키(비대칭키) 암호시스템  (0) 2020.09.10
대칭키 암호 시스템  (0) 2020.09.08
해커의 암호공격 방법  (0) 2020.09.08
암호학의 이해  (0) 2020.09.03