ECB 모드에 의한 암호화
CBC 모드 (암호 블록 연쇄 모드)
CFB 모드 (암호 피드백 모드)
OFB 모드 ( 출력 피드백 모드 )
CTR 모드 ( 카운터 모드 )
블록암호모드 정리
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
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 |
하이브리드 암호시스템의 암호화
- 암/복호화시 대칭키를 사용함
- 대칭키교환 원리 : 대칭키는 키배송 문제가 있는데, 비대칭키를 이용해 키배송 문제를 해결함
- 대칭키를 비대칭키(수신자의 공개키) 암호화하여 전송, 수신자가 개인키로 복호화함 (비대칭키의 암호모드)
전송 : 수신자의 공개키로 암호화된 세션키 + 세션키(대칭키)로 암호화된 암호문
수신 : 세션키를 수신자의 개인키로 복호화하고, 복호화된 세션키(대칭키)로 암호문 복호화
(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 |