현대 블록 암호

:(이동, 교환, 분할, 조합), 전치 장치(Permutation, P-box), 치환 장치(Substitution, S-box), XOR연산의 조합으로 만들어진다.


S-box(혼돈,비선형 함수)

:입력비트와 출력비트의 개수가 같지 않아도 된다.

:역함수가 존재할 수 있고, 존재하지 않을 수도 있다.

:역함수가 존재하는 S-box는 입력 비트 == 출력 비트 개수가 동일


P-box(확산)

단순(Straight) P-box : 입력 비트와 출력비트는 일대일 대응, 역함수가 존재한다.

축소(Compression) P-box : 입력 비트 중 특정 비트는 소실되어 출력되지 않는다, 역함수 X

확장(Expansion) P-box : 입력 비트 중 특정 비트는 한 개 이상의 출력비트와 연결된다, 역함수 X , 비트 증가


혼돈과 확산

혼돈 : 암호문과  사이의 관계를 숨긴다.

확산 : 암호문과 평문 사이의 관계를 숨긴다. 평문의 통계적 성질을 암호문 전체에 퍼뜨려 숨긴다.


혼합 암호(Product Cipher)

:치환(Substitution) 암호와 전치(Permutation) 암호의 2가지 방법을 모두 사용하는 암호화 방법이다.


라운드(Round)

:반복적으로 사용되는 혼합 암호를 라운드라고 한다.


양자 암호

:하이젠베르크의 불확정성 원리를 응용한 암호화 방식이다.


파이스텔 암호(Feistel Cipher)

:블록 암호의 일종으로, 암호화 방식이 라운드 함수의 반복으로 이루어 진다.

:키 순서를 제외한 암호화 방식과 복호화 방식이 동일하다.

:파이스텔 구조(파이스텔 네트워크)는 3라운드 이상이며, 짝수 라운드로 구성된다.

:파이스텔 구조는 많은 블록 암호 알고리즘 (MARS, RC6, Twofish)에서 사용되고 있다.

방식

암호화하려는 정보를 길이가 같은 두 개의 정보로 쪼갠다. 이를 이라고 하고, 라운드 에서 사용되는 키를 , 그리고 라운드 함수를 로 놓는다.

암호화 과정에서는 각 라운드에서는 다음과 같은 연산이 이루어진다.

모든 라운드가 끝난 후, 최종적으로 가 암호화된 값이 된다.

복호화 과정에서는 반대의 연산이 이루어진다. 가 주어졌을 때, 각 복호화 라운드에서는 다음과 같은 연산이 이루어진다.

최종적으로 원래 값 를 얻는다.

출처:https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8A%A4%ED%85%94_%EC%95%94%ED%98%B8


SPN 구조(Substitution-Permutation Network)

:평문을 여러 개의 작은 블록으로 나누고 각 블록을 S-box로 입력하여 치환하고 나온 출력값을 P-box로 전치하는 과정을 반복하는 방식이다.

:라운드 함수가 역변환이 된어야 한다.

:많은 병렬성을 제공하기 때문에 암·복호화 알고리즘의 고속화를 요구한다.


현대 스트림 암호

:동기식과 비동기식 두 가지 종류로 분류된다.


동기식 스트림 암호

:키 스트림은 평문 or 암호문 스트림독립적이다.

-One-Time Pad(가장간단하고 안전한 암호, 키의 전달과 보관이 문제) 

-FSR(귀환 함수, 시프트 레지스터로 구성) 

-LFSR(하드웨어로 쉽게 구현, 선형성 때문에 공격에 취약)

-NLFSR(LFSR보다 안전한 스트림 암호)

-OFB(Output FeedBack)모드


비동기식 스트림 암호

:키 스트림은 평문 or 암호문 스트림종속적이다.

-CFB(Cipher FeedBack)모드는 스트림 암호 생성


DES(Data Encryption Standard)

:64bit 블록 암호 알고리즘

:Feistel 구조

키의 크기 : 64bit(56bit 비밀키 + 8bit parity bit), 56bit 비밀키를 사용 라운드 키 생성기48bit 라운드 키 16개 생성

암호화 과정 : P-box 2개, 16 라운드의 파이스텔 구조

DES 함수 구조 : 확장 P-box, 키 XOR, S-box 8개, 단순 P-box 4개

취약점 : 키의 크키가 작음


3DES(Triple-DES)

:하드웨어에서 매우 효율 적, 소프트웨어에서는 비효율적이다.


키의 개수

암호화-복호화-암호화 

키의 크기 

라운드 

 2개

 DES-EDE2

 112

48

 3개

 DES-EDE3

 168

48


AES(Advanced Encrypiton Standard)

:128bit 블록 암호 알고리즘

:SPN 구조

:AES 알고리즘으로 선택된 것은 라인달(Rijndael)이다.

버전 : AES-128, AES-192, AES-256 

키의 크기 : 128bit, 192bit, 256bit, 키 확장 알고리즘으로 부터 생성되는 라운드 키의 크기는 128bit 이다.

암호화 과정 : SubBytes(바이트 치환), ShiftRows(행의 이동), MixColumns(열의 혼합), AddRoundkey(라운드 키와 XOR)

라운드 : 10라운드-128bit, 12라운드-192bit, 14라운드-256bit


기타 대칭키 암호 알고리즘

IDEA : 64bit 블록, 128bit 키, 파이스텔 구조 변형, 8라운드, S-box 사용X, DES에 비해 안전, PGP 채택

Skipjack : 64bit, 80bit 키, 32라운드, Fortezza Card에 사용

RC5 : 입출력,키,라운드 수가 가변인 블록 알고리즘, 빠른 암·복호화

SEED : 128bit 블록, 128bit 키, 16라운드, 파이스텔 구조 변형, 한국표준 블록암호 알고리즘

AIRA : 입출력 크기와 키 크기는 AES와 동일

HIGHT : 64bit 블록, 저전력·경량화를 요구하는 컴퓨팅 환경

LEA : 128bit 블록, 경량 고속 블록 암호 알고리즘, AES보다 1.5~2배 빠름, 스마트폰 보안, 사물인터넷 등 저전력 암호화에 쓸 수 있음


Feistel , SPN 알고리즘

Feistel구조 알고리즘 종류

:DES, LOKI, CAST, CAST256, Twofish, Blowfish, MISTY, RC5, RC6, E2, MARS

SPN구조 알고리즘 종류

:SAFER, SAFER+, SHARK, Square, CRYPTON, PRESENT, Serpent, Rijndael


블록 알고리즘 종류

구분 

개발국가 

개발년도 

특징 

블록크기 

키의 크기 

라운드 

DES

미국

1972

NIST에서 표준으로 공표(1977년) 

64

56

16

FEAL

일본

1987

S/W구현에 적합 

64

64

4

IDEA

미국

1990

PGP 채택 

64

128

8

SKIPJACK

미국

1990

Fortezza카드에 사용 

64

80

32

RC5

미국

1994

알고리즘 간단, 빠른 암·복호화 

64

0-256

16

MISTY

일본

1996

차분/선형공격에 안정성증명구조 

64

128

8

CRYPTON

한국

1998


128

0-256

12

SEED

한국

1999

한국표준 블록암호 알고리즘

128

128

16

 Rijndael

 벨기에

 

2000년 AES알고리즘으로 선정 

128

128,192,256

10,12,14


블록 암호 모드

모드 이름

장점 

단점 

비고 

ECB 모드

간단/고속/패딩O

병렬 처리 가능(암/복호화 양쪽)

동일한 평문은 동일한 암호문 블록을 갖음

암호문의 한 블록에서 에러가 발생하면 대응되는 평문 블록에서 에러 발생

암호문 블록의 삭제나 교체에 의한 평문의 조작 가능

재전송 공격이 가능

비권장

CBC 모드

동일한 평문은 동일한 암호문 블록을 갖지 않음

병렬 처리 가능(복호화만)

암호화에서 병렬 처리 불가능

암호문 에서 오류가 발생하면 평문 와 에서 에러가 발생

평문 블록의 한 비트 오류는 출력되는 모든 암호문에 영향을 미침

권장 

CFB 모드

패딩X

병렬 처리 가능(복호화만)

암호화에서 병렬 처리 불가능

재전송 공격이 가능

CTR모드사용이 나음 

OFB 모드

패딩X

암/복호화의 사전 준비 가능

암/복호화가 같은 구조

비트 단위의 에러가 있는 암호문을 복호화하면 평문에 대응하는 비트만 에러가 난다

병렬 처리 불가능

암호문 에서 에러가 발생하면 그 다음에 오는 평문은 모두 에러가 발생

CTR모드 사용이 나음

CTR 모드

패딩X

암/복호화 사전 준비 가능

암/복호화가 같은 구조

비트 단위의 에러가 있는 암호문을 복호화하면 평문에 대응하는 비트만 에러가 난다

병렬 처리 가능(암/복호화 양쪽)

공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.

권장 


블록 모드 : ECB, CBC

스트림 모드 가능한 블록 모드 : CFB, OFB, CTR


블록 암호 공격

-차분공격 : 선택 평문 공격법, 두 개의 평문 블록들의 비트의 차이에 대응되는 암호문 블록들의 비트의 차이를 이용하여 사용된 키를 찾는 방법

-선형공격 : 평문 공격법, 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 키를 찾는 방법

-전수공격법 : 암호화할 때 일어날 수 있는 가능한 모든 경우에 대하여 조사하는 방법, 경우의 수가 많은 경우에 실현 불가능한 방법

-통계적 분석 : 암호문에 대한 평문의 각 단어별 빈도에 관한 자료와 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법

-수학적 분석 : 통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법


+ Recent posts