Information Security2021. 8. 28. 22:48
반응형

1. 암호와 관련된 기본원칙(. 케르코프의 원칙)

- (케르코프의 원칙) 암호알고리즘은 적의 손에 떨어질 가능성이 있으므로, 암호체계의 안전성은 암호알고리즘의 비밀을 지키는 것에 의존되어서는 않되고, 키의 비밀성에만 의존해야함. 암호학을 art의 개념에서 기술의 개념으로 변화

- (크로드 새넌) 적도 우리가 쓰는 시스템(알고리즘)을 알수 있다

- 알고리즘과 분리된 다른 키를 가져야 하며, 암호키를 암호문에 포함시켜서는 않됨

 

2. Open Crypto Design의 장점

- 공표된 암호설계는 대중의 정밀한 감시를 받게 되므로 광범위한 학습을 통해 더 강해질 가능성이 높음

- 만약 보안 결함이 존재한다면, 윤리적 해커에 의해 밝혀질 수 있음

- 역공학과 산업스파이는 사라지게 됨

- 표준을 제정할 수 있음

 

3. Cryptanalysis 공격 시나리오

암호문 단독 공격(Ciphertext-Only Attack)

- 공격자가 암호문을 얻어서 대응되는 평문이나 키를 찾아내려는 공격

알려진 평문 공격(Known-Plaintext Attack)

- 공격자가 미리 수집한 평문·암호문 쌍을 사용하여 같은 키를 사용하는 암호문을 해독하려는 공격으로 엘런튜닝이 에니그마를 해독할 때 사용한 방법

- 보통 패킷의 해더가 알려진 평문이 됨

선택 평문 공격(Chosen-Plaintext Attack)

- 공격자가 암호알고리즘에 접근하여 선택한 평문에 대한 암호문을 수집한 후, 특정 암호문을 해독하려는 공격

선택 암호문 공격(Chosen-Ciphertext Attack)

- 공격자가 복호알고리즘에 접근할 수 있어 선택한 암호문들에 대한 평문들을 수집한 후, 특정 암호문을 해독하려는 공격

 

4. Shift Cipher의 동작원리

- 이동암호 또는 시저암호라고 불리는 단일문자 대치암호

- 문자와 암호문은 항상 일대일 대응관계로 평문의 알파벳을 일정한 키값만큼 평행이동(밀어내기) 시킴으로서 암호화하는 방법

- 알파벳의 경우 25개의 키만 사용할 수 있기 때문에 전수조사 공격에 의해 쉽게 무력화 됨

 

5. Kasiski 공격의 원리 (, 고전암호가 안전하지 않은 이유)

- (Kasiski 공격) 고전 암호 중 빈도부석법으로는 해석이 불가능한 난고불락의 비제네르암호(복합알파벳-다중 치환암호)를 해독한 방법

- 암호문에서 ‘the’와 같이 흔한 특정 단어가 반복적으로 나오는 주기를 이용해 키워드의 길이를 찾아내는 방식으로 암호문의 길이가 길 때 유효하게 사용할 수 있음

- 고전암호는 전수조사 방식, 통계적 분석방식(알파벳 출현빈도), 수학적 분석 등을 통해 암호문단독 공격기법(Ciphertext only attack)만으로도 해독이 가능

고전암호의 경우 빈도수에서 암호문이 여전히 랜덤하지 않음

 

6. Onetime Pad의 원리 (, Perfect Secrecy의 원리)

- 스트링 암호의 일종으로 데이터 길이와 같은 크기의 암호키를 활용하여 평문과 암호키의 XOR 연산을 통해 암·복호화 하는 방식

- 키의 길이, 평문의 길이, 암호문의 길이가 모두 같으며, 키를 1번만 사용하는 방식으로 메시지와 암호문의 관련성이 없어 완벽한 비밀성(Perfect Secrecy)을 제공

- 매번 평문과 같은 크기의 키를 생성·유지하는 어려움으로 실용성이 낮음

 

7. Practical Security?

- 완벽한 비밀성을 완화한 개념으로 보안은 수행가능한 시간적 수준에서 유능한 으로부터 지켜지는 것을 말함

- 적들이 성공할 가능성이 매우 작아야 하며, 이때 작다는 너무 작아서 실제 발생될 수 있다고 염려되지 않을 정도로 작은 수준을 의미함

 

8. Pseudorandom number generator?(의사난수 생성기)

- 컴퓨터 소프트웨어적인 방법에 의해 난수열을 의사적으로 생성하는 알고리즘으로 암호에서 난수는 키 생성이라는 중요한 역할을 담당

- 진정한 난수는 주기성이 없으나, 컴퓨터에서 발생시키면서 커다란 주기를 갖게 되어 진정한 의미의 난수는 아니지만 사용상 난수로 간주해도 무방한 수준의 값을 생성

- LCG(Linear Conguential Generator) - 가장 일반적이지만 안전하지 않음

< Xn+1 = (aXn + c) mod m >

- LFSR(Linear Feedback Shift Register) - 스트림 암호

- BBS(Blum-Blum-Shub)Fortuna 선형방정식을 보완

< Xn+1 = (Xn)2 mod M, M=pq(큰소수 곱셈) >

- ANSI X9.17FIPS 186-2 : 표준, CryptoGenRandom()

 

9. rand() 함수가 안전하지 않은 이유

- 자연발생적인 난수와 달리 컴퓨터 시스템에서 무작위로 난수를 추출할 수 없기 때문에 ‘random seed’라고 불리는 수열의 집합을 사용하여 유사난수를 추출하게 된다. 따라서 random 함수 값은 seed에 종속되게 되며, seed 개수에 따라 난수가 고르게 분포하지 않거나 동일한 값이 나올 확률이 있게 됨

- 생성된 난수의 분포가 고르지 않고, 반복주기가 상대적으로 짧으며, 공격자에게 seed를 간파당할 수 있음

 

10. Self-Synchronise 스트림 암호의 동작 원리

- 평문의 암호화 연산을 위한 키 값을 생성할 때 키 값의 각 비트가 이전의 암호문의 고정된 값을 순차적으로 담는 방식으로 동작

- 따라서 암호화 문자열 전송 시에 일부 비트 값이 바뀌거나, 혹은 비트가 사라지고 추가되는 오류가 발생하여도 일부분만이 복호화에 실패할 뿐 그 후에는 다시 정상적인 복호화 값을 얻을 수 있는 자기 동기성을 가지게 됨

 

11. ConfusionDiffusion의 개념

- 암호학자 클로드 새넌(Claude Shannon)이 제안

- Confusion(혼란) : 암호문에서 Key의 추론이 어렵도록 키와 암호문의 관계를 가능한한 복잡하게 만드는 것(바꿔치기substitution)

- Diffusion(확산) : 암호문에서 평문의 추론이 어렵도록 평문의 통계적 구조를 암호문 전반에 퍼뜨려 숨기는 것(섞기permutation)

 

12. SPNFN의 비교

- SPN은 평문을 4바이트로 분할해 바꿔치기(substitution, S-box)하고 순서 뒤섞기(permutation, P-box)를 수행하여 한 라운드를 종료하고, 다음 라운드를 반복하여 블록 암호문을 만듦. 암호키는 각 라운드마다 바뀜

- FN은 암·복호화 과정에서 역함수가 필요 없음. 평문 블록을 2등분한 후, 오른쪽 값은 다음 라운드의 왼쪽 값으로 이용되며, 왼쪽 값은 오른쪽 값에 라운드키 k를 적용한 함수계산으로 도출된 값과 XOR 연산을 수행하여 다음라운드의 오른쪽으로 이용된다. 이러한 라운드를 여러번 반복하여 수행되며 DES의 경우 16회의 라운드가 반복됨

 

13-1. DES, 2DES, 3DES의 문제점들

DES의 문제점

- 키의 크기가 56bit에 불과하여 전수조사 공격에 취약

- 미국 NAS가 비밀리에 관여되어 있었고, 설계과정이 비공개로 진행

- 최초 IBM이 제안한 128bit에서 64bit로 키의 길이가 줄어들었음

- DES의 안전성이 다수의 S-BOX에 의존적임

- weak (ex. 0101 0101 0101 0101)가 존재함(하드코딩으로 빼버림)

2DES의 문제점

- 두 개의 키로 두 번의 암호화를 하여 키의 크기가 128bit로 증가하는 것 같지만 known-plaintext attack을 활용한 meet in the middle attack(중간일치 공격)으로 57bit 수준의 안전성 밖에 제공하지 못하여 DES와 같이 전수조사에 취약

3DES의 문제점

- meet in the middle attack을 대비하기 위해 3중 암호화를 적용하여 공격의 복잡도를 112bit로 증가시켰으나, ·복호화에 같은 알고리즘을 사용하여 잇따른 DES챌린지 대회에서 DES가 깨지기 시작한데다, 처리속도가 상대적으로 빠르지 않아 AES암호화가 정착되기 전 일시적인 대체수단으로 사용

 

13-2. DES의 구조

- 64bit의 평문을 64bit의 암호문으로 암호화하는 대칭암호 알고리즘으로 키는 56bit이며, 2개의 전치박스(P-Box, 초기-최종)16개의 라운드 함수로 구성되어 16회의 반복적인 암호화 과정을 거침

- 각 라운드마다 48bit의 라운드키를 사용하여 암호문을 생성하며, FN 암호구조 사용

 

14. AES의 구조

- 평문·암호문 : 128bit, : 128, 192, 또는 256bit

- 키의 크기에 따라 10, 12, 14 라운드 수행

 

15. Mode of operation : CTR, CBC를 중심으로

- Mode of operation(블럭 암호운용 모드)은 암호 알고리즘을 반복 적용하여 임의의 길이를 가지는 평문 전체를 암호화 하는 것을 말함

CTR(Counter) Mode

- 같은 평문이면 같은 암호문 블록이 나오게 되는 문제를 해결하기 위해 Counter 증가 값을 암호문에 대입시키는 방법

- 암호화 : ci = Ek(ctr+i) mi = Fk(ctr+i) mi

- 복호화 : mi = Dk(ctr+i) ci = Fk(ctr+i) ci

- 장점 : 암호문을 독립적(병렬적)으로 처리(ECB의 장점 유지)할 수 있어 빠른 암호화를 수행할 수 있음

- 단점 : 카운터가 되는 수를 재사용하면 동일암호 블록이 발생되므로 반드시 바꿔줘야 함

 

CBC(Cipher Block Chaining) Mode

- 블록을 체인처럼 연결하여 작업하여 병렬식 처리가 않됨

- 과거에 가장 많이 쓰였다가 최근 줄어드는 추세임

- 암호화 : ci = Ek(ci-1 mi) = Fk(ci-1 mi)

- 복호화 : mi = Dk(ci) ci-1 = Fk-1(ci) ci-1

 

16. 안전한 일방향 해쉬함수의 동작원리(즉 요구조건)

압축(compression)

- 임의의 유한한 크기의 입력을 작은 고정된 크기의 값으로 만들 수 있어야 함

쉬운계산(ease of computation, Digest)

- 주어진 입력에 대한 계산이 쉬워야(빨라야)

단방향성(primage resistance = one-wayness)

- 함수의 계산은 일방적이어야 하고, 역방향 계산이 되지 않아야 함

약한 성질의 충돌저항성(2nd-primage resistance = weak collision resistance)

- 주어진 입력값과 동일한 해시결과를 가져오는 또 다른 입력값을 공격자가 구하지 못하게 해야 함

강한 성질의 충돌저항성(Collision resistance = strong collision resistance)

- 공격자가 같은 해시값을 가지는 입력값을 미리 찾지 못하게 해야 함

 

17. MAC의 구성방법과 요구조건

- Message Authentication Code(메시지 인증코드)는 데이터의 무결성을 검증하는데 이용되는 기법으로 수신받은 데이터가 전송된 것과 동일함을 보장하고, 메시지가 생각했던 통신상대로부터 전송된 것인지 확인하기 위한 기술(무결성+인증)

- 요구조건

(1) MAC는 해시함수(function hk)의 가족임

키값을 알고 있다면 계산이 쉬워야 함(ease of computation)

압축(compression), 임의의 길이의 입력값을 고정된 크기로 만들어야 함

계산저항성(computation resistance) : 주어진 (x, hk(x))로 입력값이 서로 다른(xx) 새로운 쌍(x, hk(x))을 계산할 수 없어야 함

(2) 공격

MAC 키에 대한 전수조사공격(known-text attack)2t 연산을 요구

MAC 추정(guessing)은 반드시 2n 연산을 요구해야 함

정확한 키 없이 다른 방법이 없어야 함

 

18. 공개키 암호의 기반 난제

소인수 분해(Integer Factoring) : 주어진 큰 정수의 소인수분해를 찾는 것

- N=pq 에서 N에서 소수인 pq를 찾는 문제로 RSA의 안정성과 관련됨

이산대수문제(Discrete Logarithm) : 주어진 큰 정수에 대해 유한순환군(finite cyclic group)에서 이산대수를 찾는 것

- Y = g^x mod p 가 주어졌을 때 Y를 통해 X를 찾는 문제

) Y = 2^x mod 3 에서 Y1이라고 할 때, X2, 4, 등이 있음.

<g> = {e, g, g^2, g^n-1}

 

19. Diffie-Hellam Key Exchange (개념과 문제점 및 해결방안)

개념

- 대칭키를 서로 만난적 없는 사람끼리 도청되는 통로를 통해 교환하는 방법

- 이산대수문제를 통해 공통의 비밀값을 만들어내는 방법

- 안전한 키 교환을 위해 pg의 선택이 중요함. 비슷한 크기의 pg가 선택되어야 하고, 통신 양측은 충분히 안전한 난수생성 알고리즘을 사용해야 함

문제점

- 비밀정보를 공유할 수 있지만 상대방에 대한 인증은 보장되지 않아 중간자 공격(man in the middle attack)에 취약함

해결방안

- 서명값 등을 이용한 상호인증

- 컴퓨터보안의 기본은 접근통제임(주체 행동(작동) - 객체)

 

20. RSA 암호와 서명의 원리

RSA 암호의 원리

- 소인수분해의 어려움에 기반을 두고 개발한 공개키 암호화 방식

- 두개의 크기가 비슷한 랜덤한 소수 pq를 선택

- n = pq, φ(n) = (p-1)(q-1)

※ φ(오일러함수) : n보다 작은 n과 서로소인 양의 정수 갯수

- e, 1 < e < φ, gcd(φ, e) = 1 (φe의 최대공약수가 1, 즉 서로소임)

- ed1 mod φ (edφ로 나누었을때 나머지가 1이어야 함)

- Alice의 공개키는 (n, e)가 되고 Alice의 비밀키는 d가 됨

- 암호화 : compute c = m^e mod n (암호문은 메세지의 e승을 n으로 나눈값의 나머지)

- 복호화 : m = c^d mod n (복호화는 암호문의 d승을 n으로 나눈값의 나머지)

- 이유 : c^d mod = m^ed mod n = m^1modφ(n) mod n = m^1+kφ(n) mod n = m

RSA 서명의 원리

- 메시지인증코드(MAC)의 한계(3자에 대한 증명 및 부인방지 문제) 해결

- 송신자는 메시지를 송신자 비밀키로 암호화 + 수신자 공개키로 암호화, 수신자는 암호문을 수신자의 비밀키로 복호화 + 송신자의 공개키로 복호화

- 송신자의 비밀키에 의한 암호화

해쉬함수를 이용한 검증 원리

키 생성 : n, p(소수), q(소수), e(공개키), d(개인키)

서명 : compute s = h(m)d mod n, 서명 : (m, s)

검증 : 송신자의 공개키 획득 (n, e)

h(m) = s^e mod n 을 만족하는지 검증

왜냐하면 s^e = (h(m)^d)^e mod n

 

1) H(m) : 우선 메시지를 해쉬화한다

2) S = H(m)^d : 해쉬화한 메시지를 RSA 개인키를 사용해 암호화 한다

3) (m, S) : 메시지와 암호화된 메시지를 함께 전달

4) S^e = H(m) : RSA 공개키를 사용해 암호화된 메시지를 복호화한다

5) H(m) : 송신 받은 메시지에 대한 해시값을 구함

6) H(m) = S^e : 서명을 복호화한 값과 메시지의 해시값이 일치하면 인증 성공을 의미

 

1), 2) m H(m) H(m)^d = S

3) (m, S)

4), 5), 6) S^e H(m) = H(m) m

반응형
Posted by CCIBOMB