본문 바로가기

교육/암호학

Day 39 (암호학)

반응형

 

암호시스템에는 비밀키 암호 시스템과 공개키 암호 시스템만 있다.

DES는 비밀키 암호에 대표적으로 사용하는 알고리즘이다. DES는 복잡한 문제를 단순화 하는 작업에 최적화 되어있다.DES는 90년대 까지 사용하고 최근에는 미국에서는 AES, 유럽, 캐나다등에서는 IDEA라고하는 알고리즘을 사용한다. 비밀키 암호 시스템은 공용키 암호 시스템, 관용키 암호 시스템이라고도 한다. 비밀키 암호의 원리는 평문을 공용키를 이용해 암호 알고리즘에 넣으면 암호문으로 출력된다. 이 암호문을 복호 알고리즘에 공용키와 함께 넣으면 다시 평문이  출력된다. 공용키는 대칭키, 관용키라고도 하며 64bit나 128bit의 정해진 문자열을 사용한다. 

비밀키 암호 시스템에서는 보통 암호 알고리즘과 복호 알고리즘을 동일하게 사용하는데  암호 알고리즘과 복호 알고리즘이 다르다면 검증에 드는 노력이 두배가 필요하기 때문이다.

또한 비밀키 암호 시스템을 이용한 통신을 공개, 관용, 공용 관로라고 하는데 통신의 중간에 access가 가능하다. 

비밀키 암호 시스템의 장점은 알고리즘 수행속도가 평문을 전송하는 것과 비슷한 속도를 낸다.

단점은 키의 관리와 분배가 어렵다. 대칭키 즉, 동일한 암호를 두 사용자가 나누어 가지고 있으므로 문제가 발생시 책임추적성(=권원지 증명)이 불가능하다. 같은 이유로 디지털 서명, 온라인상에서 본인임을 인증하는것이 어렵다. 유럽에서는 디지털 서명이라고 하고, 한국이나 미국,  일본에서는 전자서명이라고 한다.

 

Feistael암호 블록 암호의 대표적인 구조로 수학적으로 해석했을때 구조적인 취약점이 발견되지 않았다. 암호화와 복호화의 과정이 동일하다. 정해진 bit를 반으로 나눠 반복수행하며 짝수라운드만큼 반복한다. 

 

 

DES(Data Encryption Standard)는 IBM연구소에서 루시퍼 시스템을 개선하여 만들었으며 sbox등 일부가 변경되었다. 표준 알고리즘으로 채택되어 가이드라인으로 사용된다. 64비트 블록 암호 알고리즘으로 입력 메시지를 64비트씩 나누어 처리한다. 이중 56비트 키를 사용하는데 이런 차이가 발생하는 이유는 parity check때문이다. 1글자는 8bit인데 이는 asciicode의 7bit와 글자가 깨지는 것을 체크하는 paritycheck가 사용된다. 이때 7비트만 모아 확인하면 56비트가 되는것이다. 따라서 64비트의 E0방식이나 56비트의 T0방식은 동일한 방식이라고 할수있다. 기본 라운드는 Feistael암호 알고리즘을 사용하여 16round로 진행된다.

 

DES의 기본구조는 평문을 64비트로 나눈 한 블록을 먼저 초기 전치 한다. 그 후  Feistael암호를 사용한다. 이를 16번 반복한다. 이때 들어가는 키값은 전부 다르다. 우리는 키값을 하나로 지정하는데 16개의 다른 키가 생성되는 것은 지정한 master키를 기반으로 만든 sub키를 16개 생성하기 때문이다.

복호화는 암호문을 초기 전치 시키고 키 값을 16부터 입력하여 처음 입력한 키까지 입력한다. 그 결과를 역전치 시키면 평문으로 돌아오게 된다.

 

평문을 ASCII Code를 이용해 2진수로 변경하고 이를 전치 테이블에 넣는다. 전치테이블은 사용자가 임의로 생성이 가능하다. 전치테이블안의 순서에 따라 2진수 값을 넣은 테이블을 행고정열변환 방식으로 2진수를 출력하면 치환된 2진수가 출력된다.

 

F함수는 E 테이블을 이용한 확장/순열 과정을 통해 32bit의 데이터를 key와  XOR연산을 하기 위해 48bit로 확장시킨다. 확장한 데이터와 key를 XOR연산 하게 되면 S-BOX를 이용한 치환/선택 과정을 통해 다시 32bit로 줄이게 된다. 이때 입력값과 출력값은 4:1의 비율이 유지된다. S-BOX는 사용자가 임의로 생성이 가능한데 임의 생성하여 사용하게 되면 일정한 값들이 몰려나와 암호 유추가 쉬워지게 된다.

반응형

'교육 > 암호학' 카테고리의 다른 글

Day 41 (암호학)  (0) 2020.01.15
Day 40 (암호학)  (0) 2020.01.14
Day 37 (암호학)  (0) 2020.01.09
Day 36 (암호학)  (0) 2020.01.08
Day 35 (암호학)  (0) 2020.01.07