2020. 5. 13.

[암호학] 2장 비밀키 암호 정리


*비밀키 암호의 원리

평문 
(plamtext) 
공용커 
암호 알고리즘 - 
(cipheltext) 
복 호 알고리즘 - 
평문 
(plamtext)

대칭키 방식 특징
  • 암호 알고리즘의 비도는 키의 비밀성에 의존
  • 관용 암호, 대칭키 암호, 공유키 암호등으로 불림

장점
  • 다양한 알고리즘 개발, 알고리즘 수행속도가 빠름

단점
  • 관리 및 키 분배의 어려움
(책임추적성이 떨어져서 관리가 어려운것이다.)
  • 디지털 서명의 어려움

무조건 11 만나는것을 상면한다고 표현한다.
키의 길이가 정해져있다.
보안체인중에 제일 문제가 있는건 사람이다.

Feistel 암호

  • 별도의 복호화 과정이 불필요
  • 블록 암호의 대표적인 구조
  • Li=Ri-1, Ri=Li-1 XOR F(Ri-1)
  • 라운드 함수와 무관하게 복호화가 됨
  • 구조적인 취약점이 발견되지 않음
  • 취약한 라운드 함수를 반복적으로 사용함으로 강한 암호를 설계
  • 암호화와 복호화가 동일


# 1 R i-1 그래도 L i 내려오기 떄문에 라운드 한번돌리면 50% 암호화밖에 되지않는다.
# R i-1 F 들어가서 Li-1 xor 하여 암호화된것이 R i 들어간다
# 16라운드라는것은 이렇게 16 하는것을 말하며
# 마스터키를 주면 알아서 16개의 다른 키를 넣어준다.
# F 암호화시스템이 핵심이기에 중요하다.

대칭키암호의 종류

  • DES, SKIPJACK, IDEA(유럽), AES, SEAL, RC4

*DES (Data Encryption Standard)

IBM에서 Lucifer System을 개선하여 만듬
1977년 미 상무성의 국립 표준국(NBS)에서 표준 암호 알고리즘으로 채택
암호화 키(Encryption key) = 복호화 키(Decryptionkey)
대칭키 암호 시스템, 단일키 암호 시스템, 관용 암호 방식
혼합(confusion), 확산(Diffusion)을 이용 원문과 암호문간에 통계적 연관을 감춘다.

# 70년대에 IT 폭팔적인 성장과 함께 개념의 정립이 됬다.
# lucifer 시스템이 DES 바꾸면서 s-box 조금 다르다.

64비트 블록 암호 알고리즘
  • 입력 메시지를 64비트씩 나누어 처리
56비트 키를 사용
  • 64비트 중 8비트는 parity check(에러 체크)로 사용
기본 구조
  • round : 16 round
  • 복호화는 암호화의 역순

# 신호가 왜곡될수 있는 땅이 넓은 미국에 규격에 맞게 설계되 있는것이다.
# 교환기 한국에서 만드는 기술있음..(전세계 6개국만 할수 있음)
# 56비트 마스터키를 가지고 16개의 서브키를 만든다.
# 서브키는 48bit 이다.


# 모든 평문을 64bit 잘라서 암호화한다.
# 초기전치를 이용해서 64bit 섞는다.
# 왼쪽 32bit, 오른쪽 32bit 나눈다.
# f 함수는 48비트로 키를 받아서 오른쪽 32bit 암호화한다.
# 암호화된 암호문 32bit 왼쪽 32bit xor 한다.
# 오른쪽의 32bit 그대로 내려간다.

초기 전치

2 0 NJ ' C_O 」 | OD 
3 2 4 6 8 
4 , ( 0 8 一 0 一 CD LO 7 , 
5 ()0 CO O 7 , 」 | 
6 8 一 O , 7 , 一 1 OD 
8 2 4 6 8 
LO CO CO CO LO LO CO CO 
CO 0 00 ' 7 , O) 」 | OD 
LO LO LO LO ' LO LO LO 
OD OD OD , OD OD OD OD 
NJ NJ 00 00 NJ NJ NJ 00 
0 一 0 乙 , ( 0 CD

그림과 같이 DES 초기전치값이 정해져있다.

8번째 출력할 것은 2번째 입력값을 출력한다.
60번째 입력값은 9번째로 출력한다.

출력
1
2
3
4
5
6
7
8
입력
6
2
7
1
5
8
3
4

6번째 입력할것을 1번째로 출력한다.

행렬변환
1
2
3
4
1
6
2
7
1
2
5
8
3
4

ex)
입력값
1
2
3
4
5
6
7
8
입력값        1
1
1
0
1
0
0
1
0
출력값        
0
1
1
1
0
0
0
1


4144-

입력순서
1
2
3
4
5
28
29
63
64
출력순서
40
8
48
16
56
13
53
57
25

한번 입력된 값이 두번 출력되는것을 확산이라고 한다.
이렇게 일정 비트가 횟수가 많아지면 결함의 가능성이 있다.

# 입력된 비트의 일부가 없어지면 결함이 생긴다. 어떠한 일이 있어도 누락 X

f 함수

(d) 
( g | 0 彐 )

32 bit 48bit 키와 xor 하기 위해 확장순열을 진행하여 48bit 맞춘다.

k 가지고 확장순열된 xor xor 연산을 진행한다.

L i-1 xor 연산을 하기위해서는 s-box 이용해 32bit 줄인다.
6bit 잘라 8개의 6bit 4bit 바꾼다.

순열표를 이용해서 32bit 뒤섞는다.

xor 하여 R i 만든다.

p    @   k      =         c
평문을 키를 가지고 암호문을 만든다.
c    @   k      =         p
복호화(?)

p xor k = c
c xor k = p

*xor 연산이란
값이 같으면 0 다르면 1
ex) 1100 xor 1010 = 0110

확장순열

2 
3 
4 
5 
6 
7 
32 
4 
8 
12 
16 
20 
24 
28 
2 
5 
9 
18 
17 
21 
25 
29 
3 
2 
6 
10 
14 
18 
22 
80 
4 
3 
7 
11 
15 
19 
23 
27 
31 
5 
4 
8 
12 
16 
20 
24 
28 
32 
6 
5 
9 
18 
17 
21 
123 
25 
29

치환 선택 s-box

48bit 
p 
32 bit 
K (48bit) 
S-box table


2^6 64개가 들어간다.

6개가 들어가서 4개가 나온다.

s-box

< Sl > 
14 4 
0 15 
4 1 
15 12 
13 
7 
14 
8 
4 
8 
2 
2 
14 
13 
4 
15 
2 
6 
9 
11 
13 
8 
11 
7 
3 
10 
15 
5 
10 
6 
12 
11 
6 
12 
9 
3 
12 
11 
7 
14 
5 9 
9 5 
3 10 
10 0 
0 
3 
5 
7 
8 
0 
6 13 
예) 101101 
행 (3행) 
열 (6열) 
10진수 11'를 4비트로 출력 :0001

4 16
값이 0부터 15까지 있다. 16개가 4 반복된다.

101101 맨앞과 맨뒤의 11 이용해서 3행을 찾는다.(ex 00-0, 01-1, 10-2)
가운데 4bit 가지고 0110 6열을 찾는다 (ex 1110-14, 0001-1)

# s1 행렬 숫자를 바꾸면 이상한 값들이 튀어나온다.
# 개인적인 생각으로는 통계적인 무언가를 찾아서 sbox안에 프레임을 찾아낸거같다.

순열(p)

2 
3 
4 
5 
6 
7 
8 
1 
29 
5 
2 
32 
19 
22 
2 
7 
12 
15 
18 
27 
13 
11 
3 
20 
28 
23 
31 
24 
3 
30 
4 
4 
21 
17 
31 32 
26 
10 
14 
9 
6 
25

역전치


# 초기 전치를 뒤집어서 하면된다.

*DES - Key

64비트의 키를 이용
  • 64비트를 56비트로 축약하여 서브키를 생성
  • 8번째 비트마다 패리트비트를 포함하여 64비트를 키로 이용
  • 패리트비트를 제거하여 56비트로 이용

암호화 과정에 맞추어 16라운드를 실행
  • 라운드마다 서비키를 생성

ID 
(cod)

# pc1에서 8번째마다 1bit 버린다.
# 좌측이동은 왼쪽으로 shfit하는것을 말한다. 매번 횟수 다름
# 순열/수축을 이용해서 48bit 뽑아낸다. 8 bit 버린다. 순서없음
# 16번을 반복하여 키를 16개를 만들어낸다.

PC - 1

57 
10 
19 
7 
14 
21 
8 번째 비트를 제거한우 
작성한 전치 테이블 
59 51 
60 52 44 36 
63 55 
39 31 
30 22 
53 45 37 29 
28 20 
49 
2 
11 
62 
6 
13 
33 
58 50 42 34 26 
46 
41 
3 
47 
54 
61 
5 
25 
38 
17 
43 35 27 
23 
12 
9 
18 
15 
4

PC 
1 
2 
3 
4 
5 
6 
7 
8 
14 
3 
3 
16 
41 
30 
44 
46 
2 
17 
28 
19 
7 
52 
40 
49 
42 
3 
15 
12 
27 
31 
51 
39 
4 
24 
6 
4 
20 
37 
45 
56 
36 
5 
1 
6 
13 
47 
33 
34 
29 
21 10 
6 
5 
2 
55 
48 
53 
32

최측이동 횟수

10 
12 
13 
14 
15 
2 
2 
2 
2 
2

*DES - 작동 원리

(g | 0 彐 ) 
丨 04

# bit 적는것이 중요하다.
# 마름모와 네모 등의 표현이 다르다는것을 알아야한다.

ECB(Electrnoic codebook) 모드

DES 
DES 
DES

블록단위로 쪼개 암호해독 가능
언어가 가진 특징 떄문에 통계 공격 가능

CBC(Cipher Block chaining)


통상 정상적인 암호시스템에서 이렇게 한다.

CFB(Cipher feedback)

saa 
saa 
sac

CFB OFB 같은 것이다.
NASA에서 인공위성 통신하기 위해서 만든것이다.
그때 위성은 8비트가 최대처리연산이엇는데 DES표준암호는 64bit 잘라서 한다.
링크 암호화 기법이기에 특별한 장치에서만 사용했다.
DES 안써도된다.. 블록암호화 된다.

미리 64비트 레지스트리를 나눠갖는다. 이것이 유출되면 안된다. 여기에 키가 포함됨
k p 유추할수가 없다
암호화된 선택 j비트를 p1 평문과 xor하여 c1 만든다.
c1 다음레지스터에 padding 시킨다.
p 몇비트든 맘대로 자를 있다.

OFB(Output Feeback)

평문에 xor 하기 전에 미리 다음으로 넘긴다.
블록 암호화 기법을 가지고 스트링 암호화 기법인거처럼 보일 있다.

saa 
saa 
sac

운용모드
설명
전형적인 응용
ECB
블록이 독립적으로 암호화
단일 값의 기밀전송(:암호키)
CBC
암호알고리즘의 입력이 다음 평문 64비트 선행 64 비트의 XOR 결과
범용 블록형 전송 인증
CFB
입력은 번에 j 비트씩 처리됨
선행 암호문 블록이 암호 알고리즘의 입력으로 사용되어 의사난수 출력을 생성하고, 이것은 다시 평문과 XOR 되어 암호 블록을 생성
범용 스트림형 전송 인증
OFB
CFB 유사한 방식이며 암호 알고리즘의 입력으로 선행단계의 DES 출력을 사용
잡음있는 채널상의 스트림형 전송(: 위성통신)

*DES의 작동 모드-3DES

DES brute-force공격에 대한 취약성을 보완
  • 새로운 알고리즘 개발 : IDEA (128 bit 키 사용)
  • DES의 응용 : 3 DES, 2 DES

3 DES
  • 2개의 키를 사용
  • 암호화 : 암호화, 복호화, 암호화
  • 복호화 : 복호화, 암호화, 복호화
  • brute-force 공격에 DES보다 강함

# 99년도에 쓰지말라고 권고했다. 그뒤에 자리잡은것이 AES.

암호화 복호화 과정


*추가된 암호 알고리즘

AES (Advanced Encryption Standard)
  • DES를 대체하기 위한 표준암호 알고리즘
  • 리인델(Rijndael), 투피쉬(Twofish), 서펀트(Serpent),MARS 등이 2차 선정 (2000)
  • 2000 102일 리인델이 AES로 선정

Rijndael
  • 128, 192, 256 비트의 다양한 길이의 키를 사용
  • 알려진 모든 공격에 대응 가능
  • 스마트 카드상의 컴팩트한 보조 프로세서등에 이용 가능

# 미국에서 표준을 지정하고 모든 프로그래밍언어에 쓰임

IDEA (International Data Encryption Algorithm)
  • 국제 데이터 암호 알고리즘
  • 64비트 평문 블록에서 128비트 키를 이용 작동
  • 8라운드로 작동
  • PGP (Pretty Good Privacy) 의 메일 시스템에 이용
    • 필 짐머맴이 개발.. (덕분에 미국에서 실형 살고 유럽으로 이주(?))

RC5
  • 32,64,128비트 블록 사이즈를 이용
  • 0에서 255까지 다양한 라운드 사용
  • 0에서 2048비트까지의 키를 이용
# 링크암호기법 장비에서 매우 많이 쓰인다.


댓글 없음:

댓글 쓰기