본문 바로가기
(필기) 정보보안기사&산업기사

암호학3~4

by IT매니절 2024. 4. 24.

 

 

ECB 모드에 의한 암호화

출처 https://itwiki.kr/w/ECB_%EB%AA%A8%EB%93%9C#google_vignette

 

CBC 모드 (암호 블록 연쇄 모드)

https://itwiki.kr/w/CBC_%EB%AA%A8%EB%93%9C#google_vignette

 

CFB 모드 (암호 피드백 모드)

https://itwiki.kr/w/CFB_%EB%AA%A8%EB%93%9C

OFB 모드 ( 출력 피드백 모드 )

https://itwiki.kr/w/OFB_%EB%AA%A8%EB%93%9C

CTR 모드 ( 카운터 모드 )

https://itwiki.kr/w/CTR_%EB%AA%A8%EB%93%9C

 

 

블록암호모드 정리

  ECB CBC CFB OFB CTR
순서 PBI → 암호화 → CBI암호문 PBI → XOR ( CBI - 1 ) → 암호화 -> CBI암호문 PBI → XOR (암호화 된 CBI - 1 ) → CBI암호문 PBI → XOR ( 암호화 된 CBI - 1의 XOR하기 전 값 ) → CBI암호문 PBI → XOR (암호화 된 카운터 ) → CBI암호문
병렬
처리
가능(암/복) 가능(복) 가능(복) 불가능 가능(암/복)
초기화
벡터IV
X 불필요 O O O O (카운터)
결과
타입
Block Block Stream Stream Stream
암/복호화 함수 암/복호화 둘 다 사용 암/복호화 둘 다 사용 암호화만 사용 암호화만 사용 암호화만 사용
연산 암호화만 사용 XOR, 암호화 XOR만 XOR만 XOR만
패딩 필요 (조건부) 필요 필요없음 필요없음 필요없음
재전송
공격
가능 불가능 가능 불가능 불가능

- CBC의 경우 CBI - 1을 XOR한 결과값이 다음 CBC에 쓰임 (복호화의 경우, CBI -1의 복호화 전 값이 다음 CBC에 쓰임)
- CFB의 경우 암호화 된 CBI - 1을 XOR한 결과값이 다음 CFB에 쓰임
- OFB의 경우 암호화 된 CBI - 1의 XOR하기 전 값이 다음 OFB에 쓰임

- ECB의 경우 암호문 훔치기 기법을 사용할 경우 패딩이 없어도 된다

 

블록 암호모드 비교

  이름 장점 단점
ECB 전자 부호표 모드 간단, 고속, 암/복호화 병렬 가능 비트단위 에러가 있는 암호문을 복호화하면 평문의 대응하는 블록에 에러가 난다 (= 에러가 증폭됨)
평문의 반복이 암호문에 반영
암호문 블록의 삭제/교체에 의해 평문 조작 가능
재전송 공격 가능
CBC 암호 블록 연쇄 모드 복호화 병렬 가능 암호문 Cn에서 한 비트 오류 발생시,
평문 Pn에서 광범위한 오류 발생. Pn+1에서는 1비트 오류 발생
CFB 암호 피드백 모드 패딩 불필요
복호화 병렬 가능
암호문 Cn에서 한 비트 오류 발생시,
평문 Pn에서 1비트 오류 발생. Pn+1에서는 광범위한 오류 발생
재전송 공격 가능
OFB 출력 피드백 모드 암복호화 사전준비 가능, 비트단위 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러가 난다 (= 에러가 증폭되지 않음) 병렬처리 불가능
ECB 카운터 모드 암복호화 사전준비 가능
병렬처리 가능
암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.

---- 여기까지 전부 대칭키 설명이었음 ----

 

★★★★★
키 배송 문제 해결 방법

1. 키의 사전 공유에 의한 해결 : 키 관리기간TA이 사전에 비밀경로를 통해 임의의 키를 전달 *n(n-1) / 2 개의 키 필요
2. 키배포 센터에 의한 해결 ( 온라인 키 분배 ) : 필요할 때 키배포센터KDC라는 제3자에게 의뢰하여 키를 사전공유
3. 디피-헬만Diffie-Hellman 키 교환에 의한 해결 : 공개키 암호방식의 개념을 이용하여, 두 사용자간 공통의 암호화키를 안전하게 공유할 수 있는 방법을 제시 ( 최초의 비밀키 교환(합의) 프로토콜 )
4. 공개키 암호에 의한 해결 : 송신자는 암호화키(수신자의 공개키)를 하용해 암호화하고, 수신자는 복호화키(수신자의 개인키)를 사용해 복호화함
5. 전자서명에 의한 해결

 

★★★★★

디피-헬만Diffie-Hellman 키 교환 절차

공개해도 되는 것 : P, g, R1, R2
비밀 : X, Y, g의 XY제곱 mod P
g의 X제곱 mod P = Y

 


( p는 임의의 소수 )
1. A의 개인키 X를 이용해 g의 X제곱 mod p 생성
2. B의 개인키 Y를 이용해 g의 Y제곱 mod p 생성
3. 각자 생성한 값을 서로에게 전송
4. A는 개인키 X를 이용해 계산
(g의 Y제곱 mod p)의 X제곱 mod p
= (g의 Y제곱)의 X제곱 mod p
= g의 xy제곱 mod p
5. B는 개인키 Y를 이용해 계산
(g의 X제곱 mod p)의 Y제곱 mod p
= (g의 X제곱)의 Y제곱 mod p
= g의 xy제곱 mod p

출처 https://www.crocus.co.kr/1233 ~의 ~제곱으로 표기하니 뭔가 어색해서 이미지 퍼옴

 


4번, 5번으로 생성된 값이 서로 같고 이것을 대칭키로 사용한다.

 



계산 예시)
( 원래 p는 큰 소수를 설정함 )
p는 3이고, g는 2
A의 개인키는 5, B의 개인키는 4

 

g의 xy제곱 mod p
= 2의 4*5제곱 mod 3
= 2의 20제곱 mod 3

 

( 제곱수의 모듈러 계산을 쉽게 하는 법
2의 5제곱 = 16
=> 16 mod 3 = 1
2의 20(5제곱 * 4)제곱 ≡ 1 * 1 * 1 * 1
=> 1 mod 3 = 1 )

 

결과는 K(키)의 값은 1이다

( 디피-헬만 알고리즘은 이산대수공격, 중간자공격이 발생할 수 있으며
S-T-S protocol 전자서명 기법을 통해 대응함 )

 

 

 

★★★★★

공개키 알고리즘의 분류

소인수분해

- RSA

- Rabin : 2차 합동에 근거

 

이산대수

- ELGamal (디피헬만의 확장개선)

- DSA 

- ECC (타원곡선, 효율적인 짧은 키, 빠름, 스마트 카드 등에 사용)

 

( DSA -> DSS : 서명 전용 )

 

공개키의 사용원칙
1. 암호화키와 복호화키는 동일 사람의 키쌍
2. 한 번만 사용
3. 타인의 개인키를 사용할 수 없음

( 암호모드 : 수신자의 공개키로 암호화 -> 수신자의 개인키로 복호화 )
( 인증모드 : 송신자의 개인키로 암호화 -> 송신자의 공개키로 복호화 )

 

 

★★★★★

RSA 키 생성과 암호화/복호화 알고리즘

 

소수인 p와 q를 선택 ( p와 q는 같지 않다 )
N = p * q
∮(N) = (q - 1)(p - 1)
정수 e를 선택 ( 보통 공개키로, 시험에서 제시함 )
e의 범위는 1 < e < ∮(N)를 만족하여야 한다.
de mod ∮(N) = 1

공개키 = e, n
개인키 = d, n

 

계산 예시) p가 5, q가 11일 때

N = 55, ∮(N) = 40

정수 e는 1보다 크고 40보다 작아야 한다. 정수 e를 7이라고 가정하면

d*7 mod 40 = 1

d*7이 될 수 있는 숫자 : 41, 81, 121, 161, 201, ...

23*7 = 161

즉 d는 23이다.

공개키 e=7, n=55

개인키 d=23, n=55

 

이 때 암호문 C를 구하면

C= 평문 P의 e제곱 mod n

평문 P가 5라고 가정했을 때,

5의 7제곱 mod 55

(5의 3제곱 mod 55 = 125 mod 55 = 15)

5 * 15 * 15 mod 55

= 1125 mod 55

= 25

 

복호화

P = C의 d제곱 mod n

 

 

 

암호학 3 END ----

 

 

MITM 공격
- 공개키가 누구의 소유인지 인증하지 않기 때문에 제3자가 중간에 타겟의 공개키를 가로채고, 자신의 공개키로 암호화하여 통신할 수 있다.

 

ECC와 RSA

ECC : 상대적으로 적은 키, 무선WPKI, 우수
RSA : 상대적으로 큰 키, 유선PKI, 느림

 

★★★★★

대칭키 방식과 비대칭키 방식

  대칭키 비대칭키
상호관계 암호화키 = 복호화키 암호화키 ≠ 복호화키
키길이 128 이상 2048 이상
암호화키 암/복호화키 비밀 암호화키 공개, 복호화키 비밀
키개수 N(N-1)/2 2N
속도 고속 저속
제공 기밀성 기밀성, 부인방지, 인증
목적 데이터 암호화 (대량) 대칭키 교환
전자서명 복잡 간단
알고리즘 DES, 3DES, AES, IDEA RSA, ECC, DSA

 

 

하이브리드 암호시스템의 암호화

- 암/복호화시 대칭키를 사용함
- 대칭키교환 원리 : 대칭키는 키배송 문제가 있는데, 비대칭키를 이용해 키배송 문제를 해결함
- 대칭키를 비대칭키(수신자의 공개키) 암호화하여 전송, 수신자가 개인키로 복호화함 (비대칭키의 암호모드)

https://skogkatt.tistory.com/entry/%ED%95%98%EC%9D%B4%EB%B8%8C%EB%A6%AC%EB%93%9C-%EC%95%94%ED%98%B8%EC%8B%9C%EC%8A%A4%ED%85%9C-Hybrid-cryptosystem#google_vignette

전송 : 수신자의 공개키로 암호화된 세션키 + 세션키(대칭키)로 암호화된 암호문
수신 : 세션키를 수신자의 개인키로 복호화하고, 복호화된 세션키(대칭키)로 암호문 복호화

(PRGN = 의사난수생성기)

 

★★★★★

일방향 해시함수
정의 : 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 출력하는 함수
특징 : 입력값 길이와 무관하게 고정길이 해시값 계산, 고속으로 계산할 수 있어야 함, 일방향성, 메시지가 다르면 해시값도 다름

(해시함수의 결과값 : Message Digest, Hash code, Hash value ... )

 

★★★★★

해시함수가 가져야 할 기본 성질
1. 프리이미지 저항성(역상 저항성) : y=h(x)를 만족하는 x를 찾는 것이 계산적으로 불가능함
2. 제2프리이미지 저항성(두 번째 역상 저항성, 약한 충돌 내성) : 주어진 입력값 x에 대해, h(x)=h(x`)를 만족하는 x`를 찾는 것이 불가능 → 무차별공격
3. 충돌 저항성(강한 충돌 내성) : h(x)=h(x`)를 만족하는 임의의 x와 x`를 찾는 것이 불가능 → 생일공격

 

n-비트 해시코드에 대한 공격 난이도
- 프리이미지 저항성 : 2의 n제곱 난이도
- 제2 프리이미지 저항성 : 2의 n제곱 난이도
- 충돌 저항성 : 2의 (n/2)제곱 난이도 (제일 쉬운 난이도)

 

★★★★★

SHA 해시 알고리즘 비교

  SHA-1 (취약) SHA-221 SHA-256 SHA-384 SHA-512
MD 길이 160 224 256 384 512
최대 메시지 길이 (2의 64제곱) -1 (2의 64제곱) -1 (2의 64제곱) -1 (2의 128제곱) -1 (2의 128제곱) -1
블록 길이 512 512 512 1024 1024
단계수 80 64 64 80 80

- SHA-384를 기준으로 256과 많은 차이 발생 (최대 메시지길이, 블록 길이, 단계수 등)

- SHA-2는 MD구조

- SHA-3는 스폰지구조, 듀플렉스 구조를 사용

 

주요 해시 알고리즘 비교

  MD5 SHA-1 RIPEMD-160
다이제스트 길이 Bit 128 160 160
블록 처리 단위 512 512 512
최대 메시지 크기 무한 (2의 64제곱) -1 (2의 64제곱) -1
앤디언 Little Big Little

 

 

변경 감지 코드MDC

- 송신자가 보낸 메시지에 대한 MD(Message Digest)값을 수신자측에서 MD값을 생성하여 검증

 

메시지 인증 코드MAC
- 메시지를 대칭키로 암호화하고, 암호화된 메시지에 대한 해시값 MAC 1 산출
( 메시지와 키를 이어붙여 해시값을 산출할 수도 있다 )
- 송신자는 대칭키로 암호화하고, 암호화된 메시지에 대한 해시값 MAC 2 산출
- MAC1과 MAC2를 비교하여 검증

 

전자서명DS (Digital Signature)
- 메시지에 대한 해시값 MD 1 산출
- 비대칭키 알고리즘을 이용해, MD값을 송신자의 개인키로 암호화 (인증모드)
- 메시지에 대한 해시값 MD 2 산출
- 수신자는 송신자의 공개키로 MD 1을 복호화하고, MD 2와 비교하여 검증

( = 메시지 부가형 전자서명 해시함수를 사용해 압축되므로 속도가 빠름 )

 

( MDC : 해시 / 무결성
  MAC : 해시 + 대칭키 / 무결성, 인증
  D.S : 해시 + 비대칭키 / 무결성, 인증, 부인방지 )

 

해시함수와 MAC 비교

HASH : 두 MD값을 비교
HMAC : 메시지와 비밀키를 연접시켜 MAC값을 만들고 두 MAC값 비교
CBC-MAC : CBC 모드에서 대칭 블록 알고리즘으로 암호화.
CMAC : CBC-MAC과 동일한 방법으로 동작. 그러나 더 복잡한 논리 함수와 수학함수에 기반을 둠
CCH : WPA-2 무선암호 (기밀성 보장)

 

★★★★★

전자서명의 주요 기능
1. 위조 불가 : 합법적인 서명자만이 생성
2. 서명자 인증 : 불특정다수가 검증가능
3. 부인 방지
4. 변경 불가
5. 재사용 불가

 

공개키 암호시스템의 응용
디피-헬만 : 키교환 O
DSS : 서명 전용으로 키교환 X

 

( 미국 전자 서명 표준 : RSA, DSS, ECDSA )

 

메시지 복원형 전자서명
해시함수를 사용하지 않음
- 속도가 느려서 많이 사용하지 않음
- 송신자는 송신자 개인키를 이용해 메시지를 암호화하고, 수신자는 송신자 공개키를 이용해 복호화함

 

 

암호학에 대해 전혀 모르다보니 이해하는데 시간이 오래 걸렸다.

1시간짜리 강의를 1시간 40분동안 멈춰가며 듣고 계산하고...

암호학 부분에선 시간을 꽤 많이 투자해야 할 것 같다 ㅠㅠ

 

 

'(필기) 정보보안기사&산업기사' 카테고리의 다른 글

시스템보안2 ~ 4, 네트워크 보안  (0) 2024.04.29
접근통제3, 시스템 보안1  (0) 2024.04.26
암호학5, 접근통제1~2  (0) 2024.04.25
암호학2  (0) 2024.04.23
정보보호개요1, 암호학1  (0) 2024.04.22