외로운 Nova의 작업실

정보보안기사 필기 - 3(대칭키 암호) 본문

Certification/정보보안기사

정보보안기사 필기 - 3(대칭키 암호)

Nova_ 2022. 10. 27. 11:47

- P 박스와 S 박스

P 박스 : 문자 단위로 암호화를 수행하였던 옛날 고전 전치 암호를 병렬적으로 수행하는 암호입니다.

S 박스 : 여러가지 방식의 치환 암호를 수행하는 암호입니다.

 

- 확산과 혼돈

확산 : 암호문과 평문 사이의 관계를 숨기는 것을 말합니다.

혼돈 : 암호문과 키 사이의 관계를 숨기는 것을 말합니다.

 

- 합성 암호의 두가지 구조

합성 암호 : 치환, 전치 그리고 그밖의 구성요소를 결합한 복합적인 암호를 말합니다.

<Fiestel 구조>

특징 : 라운드키가 역순으로 작용한다는 점만 제외하면 암호화와 복호화 과정이 동일하다.

 

<SPN 구조>

특징 : 입력을 여러개의 블록으로 나누고 S-box와 P-box를 반복적으로 진행한다. 

 

- 블록 암호에 대한 공격 방법

  • 차분 분석(Differential Cryptanalysis) : 평문의 일부를 변경하면 암호문이 어떻게 변화하는가?를 기반으로 공격하는 방법입니다.
  • 선형 분석(Linear Cryptanalysis) : 평문과 암호문 비트를 몇개 정도 XOR해서 0이 되는 확률을 조사하여 공격하는 방법입니다.
  • 전수공격법(Exhaustive key search) : 일어날 수 있는 모든 가능한 경우에 대하여 조사하는 방법입니다.
  • 통계적 분석(Statistical analysis) : 암호문에 대한 평문의 각 단어별 빈도에 대한 통계적자료 뿐만 아니라 모든 통계적 자료를 이용하여 해독하는 방법입니다.
  • 수학적 분석 방법(Mathematical analysis) : 통계적인 방법을 포함하여 수학적 이론을 이용하여 해독하는 방법입니다.

- 동기식 스트림 암호와 비동기식 스트림 암호

<동기식 스트림 암호>

동기식 스트림 암호 : 스트림 암호에서 키 스트림은 평문 혹은 암호문 스트림과 독립적인 암호를 말합니다.
ex) One time pad : 암호화를 수행할때 랜덤하게 생성된 키 스트림을 사용합니다. 전수공격법으로 해독을 하여도 여러가지 버전의 평문을 얻게되므로 이론적으로 해독 불가능하다고 알려져 있습니다.

  • 암호화와 복호화에서 상호 동기화가 필수입니다. 암호화에서 만든 키스트림을 복호화에서도 똑같이 키스트림을 만들어야하기때문에 입을 맞춰야하기때문이빈다.
  • 전송도중 변조되어도 후속 암호문에 오류의 영향이 파급되지 않습니다. 암호스트림을 전송할때는 암호문의 형태로 여러개 전송하게되는데 전송 도중 변조되면 변조된 암호문에만 영향이 있을뿐입니다.
  • 의도적인 변조를 복호화단계에서 검출 불가능합니다. 키스트림이 어떠한것과 연관성이 없으므로 검출불가능합니다.

<비동기식 스트림 암호>

비동기식 스트림 암호 : 스트림 암호에서 키 스트림은 이전 평문이나 암호문에 종속적으로 결정됩니다.

  • 암호문이 전송도중 변경되어도 자기 동기화가 가능합니다. 동기화란 키스트림을 만들어낼 수 있는지 물어보는 것으로 변경되어도 키스트림은 만들어낼 수 있습니다.
  • 변조된 암호문이 후속 암호문 복호화에 사용되지 않아 오류파급이 제한적입니다. 복호화할때 하나의 암호문 내에서 암호스트림을 가지고 복호화하므로 후속 암호문 복호화에는 사용되지 않습니다.

- DES

DES : 미국 국립기술 표준원(NIST)는 1973년 국가적으로 사용할 대칭키 암호시스템의 제안 요청서를 발표하였고, 그에따라 Lucifer 프로젝트의 수정판인 IBM의 제안이 DES로 채택되었다.

DES 특징 : Fiestel 구조이며, 평문의 길이는 64비트이고 키의 길이는 56비트이다. 라운드 횟수는 16이고, 56비트짜리 원래 키로부터 16개의 서브키를 생성하고 그 서브키를 각 라운드에서 사용한다. 암호화 과정과 복호화과정이 동일하다.

 

<DES의 구조 및 함수>

DES 함수 : DES의 핵심은 DES 함수로 각 라운드 함수에 사용된다. DES함수는 확장 P-박스, 키 XOR, 8개의 S-박스 그리고 단순 P-박스의 4개부분으로 구성되어있다. 안전성은 주로 비선형 함수로 구성된 8개의 S-Box에 의존한다.

 

<DES함수의 취약점>

DES의 키값은 56비트로 그때당시만 해도 2^56의 경우의 수는 전사공격을 할 수 없을 정도의 수였지만, 1998년에 3일만에 전사공격에 의해 해독되었으며 현재는 DES만으로 암호화에 적용할 수 없는 상태가 되었다.

 

- AES

AES : 1997년 미국 국립기술표준원은 DES를 대체하기위해 Advanced Encryption Standard 또는 AES로 불리는 암호 알고리즘을 공모하였고, 레인달(Rijndael)이 선택되었다.

AES 특징 : SPN구조이다. 키 크기에따라 AES의 세가지 버전이 존재하지만 어떠한 경우라도 키 확장 알고리즘으로부터 생성되는 라운드 키의 크기는 평문과 암호문 크기와 동일한 128비트이다. 복호화는 각 암호화 함수의 역함수로 진행된다.

 

<AES 구조>

 

- 기타 대칭키 암호 알고리즘

<국제>

IDEA(International Data Encryption Algorithm) : DES를 대체하기위해 스위스 연방기술 기관에서 개발한 알고리즘으로 8.5라운드 구조를 갖고있다. 

RC5 : 미국 RSA 연구소의 라이베스트가 개발한 것으로 빠른 암호화와 복화기능을 제공하며 모든 하드웨어에 적합하다. 속도는 DES의 약 10배 빠르다.

 

<국내>

SEED : 한국정보진흥원과 국내 암호전문가들이 함께 개발한 알고리즘으로 인터넷, 전자상거래, 무선 통신등에서 개인정보를 보호하기위해 만든 대칭키 알고리즘이다. 128비트 비밀키에서 생성된 16개의 64비트 라운드 키를 사용하여 128비트 평문을 128비트 암호문으로 암호화한다. Fiestel 구조이다.

ARIA : 전자정부 구현등을 이유로 암호화 알고리즘이 필요하게 됨에 따라 국가보안기술연구소 주도로 학계, 연구소, 정부기관으로 구성하며 공동 개발했다. ARIA-128, ARIA-192, ARIA-256으로 키에따라 구분한다. 

HIGHT : 고려대와 KISA가 공동개발한 64비트 블록암호이다.

LEA : 국가보안기술연구소가 개발한 128비트 경량 고속 블록 암호 알고리즘이다. AES보다 2배가량 빠르다.

 

- 블록 암호의 사용 방식

블록 암호는 고정된 n 비트 블록을 n 비트 블록으로 변환시키는 함수이다. 실제 임의의 길이의 평문을 암호화시키기 위해서는 블록을 맞추기위해 패딩을 넣거나 특정한 길이로 분할하는 사용 방식이 필요하다. 이를 위해 NIST에서는 5가지 운영 모드를 정의하였다.

 

<ECB모드>

ECB(Electronic CodeBook) 모드 : 평문을 n개의 비트로 분할하여 사용한다. 만약 평문의 크기가 블록 크기의 배수가 아니라면 패딩을 통해 부족한 부분을 채워준다. 각각의 블록에 사용되는 키는 동일하다.

특징 : 블록에서 발생하는 오류가 다른 블록에 영향을 주지않는다.

 

<CBC모드>

CBC(Cipher Block Chaning) 모드 : 이전의 평문이 현재의 평문과 XOR, 암호화한후 다음 평문으로 넘겨지는 방식, 처음에는 이전의 평문이 없기에 예측 불가능한 초기 벡터(IV)라고 불리우는 허구의 블록이 사용된다.

암호화 특징 : 이전평문-XOR-암호화-전달, 평문블록에 에러가 있다면 이후 모든 평문블록의 암호화에 영향을 끼친다.

복호화 특징 : 암호문 블록에 에러가 있다면 현재 암호문의 평문블록과 다음 평문 블록에 영향을 끼친다. 만약 암호문에 비트가 누락되어 한비트씩 밀리게된다면 이후 모든 복호화 과정에 영향을 끼친다.

 

<CFB모드>

CFB(Cipher FeedBack) 모드 : 이전의 평문값을 암호화하고 현재의 평문값과 XOR 한후 다음 평문으로 넘겨지는 방식

암호화 특징 : 이전평문-암호화-XOR-전달, 마지막 결과값으로 XOR을 하기에 비동기식 스트림 암호로 볼 수 있다. 평문블록에 에러가 있다면 이후 모든 평문블록의 암호화에 영향을 끼친다.

복호화 특징 : 암호문 블록에 에러가 있다면 현재 암호문의 평문블록과 다음 평문 블록에 영향을 끼친다. 만약 암호문에 비트가 누락되어 한비트씩 밀리게된다면 이후 모든 복호화 과정에 영향을 끼친다.

 

<OFB 모드>

OFB(Output FeedBack) 모드 : 초기화벡터를 암호화하고 평문과 XOR, 다시 암호화해서 그 다음 평문과 XOR 하는 방식으로 평문, 암호문과 관계없이 전달 되는 방식

암호화 특징 : 초기화벡터-암호화-전달-XOR, 현재 평문 블록이 손상됬을경우 현재 암호문에만 영향을 끼친다. 만약 비트 손실이 발생하여 비트가 밀린다면, 그 다음에 오는 평문은 모두 에러가 발생한다. 결과로 마지막에 XOR하므로 동기식 스트림 암호로 볼 수 있다.

복호화 특징 : 현재 암호문 블록이 손상됬을 경우 현재 평문 블록에만 영향을 끼친다.

 

<CTR 모드>

CTR(CounTeR) 모드 : 의사난수로 카운터를 만들어 키처럼 사용하는 방식

특징 : 블록에서 발생하는 오류가 다른 블록에 영향을 주지않는다. 동기식 스트림 암호로 볼 수 있다. 

 

- 블록암호모드 정리

ECB : 평문 암호화 

CBC : 평문 xor 암호화 전달

CFB : 평문 암호화 xor 전달

OFB : 키 암호화 전달 xor

CTR : 키 암호화 xor

Comments