본문 바로가기

교육/암호학

Day 40 (암호학)

반응형

암호화 알고리즘
확장순열

DES에서 확장/순열에 이용하는 테이블을 E 테이블이라고 하며  확장순열을 사용한다. E 테이블을 참조하여 16개의 글자를 중복으로 생성하여 32비트를 48비트로 늘려준다. 치환/선택에서 수행하는 방식은 원문의 모든 비트가 출력 비트를 만드는데 참여해야한다. 이것을 S-BOX를 이용해 비트수를 줄여줍니다. 이때 48비트를 6비트씩 나누고  6비트를 모두 사용하여 4비트로 표현하는것이 포인트 이다.

 

s1박스는 s8박스까지 전부 내용이 다르다. 임의 수정은 가능하지만  중복된 결과값출력이 되므로 좋지 않다.

s-box는 어떤방식으로 구성했는지 알지 못한다.

일정 값을 6비트로 표현한후 맨 앞비트와 맨 뒤비트를 합쳐 행을 구성하고 가운데 숫자로 열을 만든후 S1-Box에 있는 값을 다시 2진수로 변환한다.

 

S-BOX

예를들어 101101을 숫자로 변환하면 11이 행 0110이 열로 하여 숫자를 찾는다 따라서 3행 6열을 찾는데 여기서 주의해야할점은 행렬이기 때문에 숫자가 0부터 시작한다.  그래서 1이 출력되고 이를 4비트로 변환하면 0001이 된다.

 

 

역전치는 전치테이블의 반대로 순서로 넣어 사용한다.

S-BOX를 임의로 고쳐도 암호화는 가능하지만 고치면 안되는 이유는 이미 수학적으로 증명되어 변경하면 안전함을 증명할수없기 때문이다. 키값은 미리 16개를 생성하고 순차적으로 사용한다. 

 

PC-1의 패리티 비트 제거

PC-1에서 8번째 패러티 비트만을 제거한다. 비트를 제거하는 방법은 순열과 비슷한데  그 후에 28비트씩으로 반으로 나눈다. 나눈 28비트를 좌측으로 쉬프트 시키는데 쉬프트 후의 오버헤드는 패딩후 빈 비트에 넣어 비트 수를 일정하게 유지시킨다. 쉬프트 하는 비트수는 정해져있다.

 

PC-2에서는 쉬프트 된 28비트를 다시 합치고 전치 테이블을 이용해 전치시킨다.

 

모듈 알고리즘

 

문제점은 중복된 블록이 여러개 발생가능하다. 이대로 사용하면서 중복된 블록이 적어 유추가 어렵게 하는것이 필요.

일반적인 상황에서는 평문을 여는 속도나 암호화 하고 복호화하여 평문으로 여는 속도나 차이가 거의 없다. 하지만 인공위성등의 잡음이 많은 통신에서는 암호화가 너무 느려 암호화 속도를 높이기 위해 8비트씩 암호화 해야한다. 

 

문제점을 보완하기 위해 작동모드를 사용한다.

ECB(Electronic Codebook)모드는 가장 일반적인 모드로 평문을 64비트씩 나누고 각각 키 값을 대입해 64비트씩의 암호문을 만드는 것이다. ECB모드의 문제점은 만약 평문이 같은 평문이 사용된다면 키값은 1개이기 때문에 같은 암호문이 발생하여 유추가 가능해진다.

CBC(Cipher Block Chaining)모드는 ECB모드의 문제점을 해결하기 위해 사용한다. 먼저 사용한 64비트의 평문의 암호문을 다음 6비트의 평문과 XOR연산한 후 키값을 이용해 암호문을 생성하는 방식이다. 이렇게 되면 같은 평문을 사용하더라도 다른 암호문이 발생되어 유추가 어려워 진다.

CFB(Chiper Feedback)모드는 인공위성통신과 같은 잡음이 많은 통신에서 통신 속도를 높이기 위해 링크암호기법을 이용하고 DES방식을 추가한 것이다. 링크 암호 기법은 키 값과 레지스터를 장비에 포함시켜 1:1 통신을 하는 기법이다. 링크 암호 기법은 장비가 폐기시까지 사용한다. CFB에서는 먼저 64비트 레지스터에서 키값을 이용한 DES암호화를 시키고 이 값을 j비트만큼 선택 한다. j비트는 암호화 단위 길이에 따라서 달라진다.

인공위성통신은 암호화시킬 비트수가 크면 통신속도가 느려 암호화 하는 시간보다 전송시간이 훨씬느려 버퍼링이 생긴다. 따라서 8비트로 전송하는데 평문의 8비트와 선택된 8비트를 이용해 암호문을 생성하고 이 암호문을 64비트 레지스터의 우측에 패딩한다. 이때 발생하는 오버플로우는 버린다. 그 후 발생하는 패딩된 레지스터와 키를 이용해 DES 암호화를 시켜 선택j비트를 하고 다음 평문 8비트와 XOR연산하여 암호문을 만드는 방식을 반복한다.

OFB(Ouput Feedback)모드는 CFB와 유사한 방식인데 다음 64비트 레지스터에 패딩시키는 값이 직전의 암호문이 아닌 선택j비트를 이용한다.

 

DES방식은 키값이 64비트이기 때문에 사용 가능한 경우의수가 2^64개 뿐이다. 따라서 DES는 모든 키를 모두 넣어 암호를 해독하는 공격방식인  brure-force공격에 취약해 이를 해결하기 위해 128bit의 키를 사용하는 IDEA방식이 개발되었다. DES를 응용한 2중 DES, 3중 DES가 있다. 4중 DES는 효율성이 떨어져 사용하지 않는다.

3중 DES의 암호화 복호화 과정은 키 2개를 이용하여 암호화와 복호화를 번갈아 수행하는 것이다. 여기서 암호화와 복호화는 키를 넣는 순서를 의미한다. 암호화는 키 1 ~ 키 16의 순서로 키값을 입력하는 것이고, 복호화는 키 16~ 키 1의 순서로 키값을 입력하는 것이다.

 

추가적인 알고리즘으로 미국에서 사용하는 표준인 AES(Advanced Encryption Standard)에 Rijndael이 사용된다. Rigndael은 128, 192, 256비트의 다양한 길이의 키가 사용가능하며 알려진 모든 공격에 대응이 가능하다. 또한 스카트 카드상의 컴팩트한 보조 프로세서등에 이용 가능하다.

IDEA(International Data Encryption Algorithm)은 유럽에서 사용하는 표준으로 국제 데이터 알고리즘을 의미한다. 64비트 평문 블록에서 128비트 키를 이용해 암호/복호화하기 때문에 사용가능한 키의 수가 2^64개 더 늘어난다. 또한 8라운드로 작동한다. PGP(Pretty Good Privacy)의 메일시스템에 이용한다.

RC5는 32, 64, 128비트의 다양한 블록 사이즈를 이용가능하다. 또한 0~255까지의 다양한 라운드를 사용하고, 0~2048비트까지의 키를 이용할 수 있다.

SEED는 한국 정보보호센터에서 개발하였고 128비트 평문블록에서 128비트 키를 이용해 작동한다. 16라운드로 작동하며 G함수가 사용된다.

반응형

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

Day 42 (암호학)  (0) 2020.01.16
Day 41 (암호학)  (0) 2020.01.15
Day 39 (암호학)  (0) 2020.01.13
Day 37 (암호학)  (0) 2020.01.09
Day 36 (암호학)  (0) 2020.01.08