*비밀키 암호의 원리
대칭키
방식 특징
- 암호 알고리즘의 비도는 키의 비밀성에 의존
- 관용 암호, 대칭키 암호, 공유키 암호등으로 불림
장점
- 다양한 알고리즘 개발, 알고리즘 수행속도가 빠름
단점
- 키 관리 및 키 분배의 어려움
(책임추적성이 떨어져서 키 관리가 어려운것이다.)
- 디지털 서명의 어려움
무조건 1대1로 만나는것을 상면한다고 표현한다.
키의 길이가 정해져있다.
보안체인중에 제일 문제가 있는건 사람이다.
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는 그대로 내려간다.
초기 전치
위 그림과 같이 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
|
|
입력순서
|
1
|
2
|
3
|
4
|
5
|
28
|
29
|
63
|
64
|
|
출력순서
|
40
|
8
|
48
|
16
|
56
|
13
|
53
|
57
|
25
|
한번 입력된 값이 두번 출력되는것을 확산이라고 한다.
이렇게 일정 비트가 횟수가 많아지면 결함의 가능성이 있다.
# 입력된 비트의 일부가 없어지면 결함이 생긴다. 어떠한 일이 있어도 누락 X
f 함수
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
확장순열
치환 선택 s-box
2^6 64개가 들어간다.
6개가 들어가서 4개가 나온다.
s-box
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)
역전치
# 초기 전치를 뒤집어서 하면된다.
*DES - Key
64비트의 키를 이용
- 64비트를 56비트로 축약하여 서브키를 생성
- 8번째 비트마다 패리트비트를 포함하여 64비트를 키로 이용
- 패리트비트를 제거하여 56비트로 이용
암호화
과정에 맞추어 16라운드를 실행
- 각 라운드마다 서비키를 생성
# pc1에서 8번째마다 1bit씩 버린다.
# 좌측이동은 왼쪽으로 shfit하는것을 말한다. 매번 횟수 다름
# 순열/수축을 이용해서 48bit를 뽑아낸다. 8 bit를 버린다. 순서없음
# 총 16번을 반복하여 키를 16개를 만들어낸다.
PC
- 1
최측이동 횟수
*DES - 작동 원리
# bit수 적는것이 중요하다.
# 마름모와 네모 등의 표현이 다르다는것을 알아야한다.
ECB(Electrnoic codebook) 모드
블록단위로 쪼개 암호해독 가능
언어가 가진 특징 떄문에 통계 공격 가능
CBC(Cipher
Block chaining)
통상 정상적인 암호시스템에서 이렇게 한다.
CFB(Cipher
feedback)
CFB 와 OFB 는 같은 것이다.
NASA에서 인공위성 통신하기 위해서 만든것이다.
그때 위성은 8비트가 최대처리연산이엇는데 DES표준암호는 64bit로 잘라서 한다.
링크 암호화 기법이기에 특별한 장치에서만 사용했다.
꼭 DES 안써도된다.. 블록암호화 다 된다.
미리 64비트 레지스트리를 나눠갖는다. 이것이 유출되면 안된다. 여기에 키가 포함됨
k 도 p 도 유추할수가 없다
암호화된 선택 j비트를 p1 평문과 xor하여 c1을 만든다.
c1을 다음레지스터에 padding 시킨다.
p는 몇비트든 맘대로 자를 수 있다.
OFB(Output
Feeback)
평문에 xor 하기 전에 미리 다음으로 넘긴다.
블록 암호화 기법을 가지고 스트링 암호화 기법인거처럼 보일 수 있다.
|
운용모드
|
설명
|
전형적인 응용
|
|
ECB
|
블록이 독립적으로 암호화
|
단일 값의 기밀전송(예:암호키)
|
|
CBC
|
암호알고리즘의 입력이 다음 평문 64비트 선행 64 비트의 XOR의 결과
|
범용 블록형 전송 인증
|
|
CFB
|
입력은 한 번에 j 비트씩 처리됨
선행 암호문 블록이 암호 알고리즘의 입력으로 사용되어 의사난수 출력을 생성하고, 이것은 다시 평문과 XOR 되어 암호 블록을 생성
|
범용 스트림형 전송 인증
|
|
OFB
|
CFB와 유사한 방식이며 암호 알고리즘의 입력으로 선행단계의 DES 출력을 사용
|
잡음있는 채널상의 스트림형 전송(예: 위성통신)
|
*DES의 작동 모드-3중DES
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년 10월2일 리인델이 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비트까지의 키를 이용
# 링크암호기법 장비에서 매우 많이 쓰인다.
댓글 없음:
댓글 쓰기