반응형
/********************************************************************************************
-- Title : [CISSP] 암호학
-- Reference : its21c.net
-- Key word : cissp
********************************************************************************************/
▶ 암호학과 보안
- 암호학(cryptology) = 암호기술(cryptography) + 암호분석(cryptanalysis)
- 암호학에 대한 보안 요구사항
- 기밀성
- 무결성
- 인증
- 부인봉쇄
- 암호 시스템의 안전성은 키의 비밀성에 달려있음
- 암호화의 3요소 : 알고리즘, 키, 키 사이즈
- 원시 암호법 : Eg) 시저 사이퍼
- 현대 암호학
- 대치(substitution)
- Mono-alphabetic Substitution : 평문의 문자가 항상 동일한 암호문의 문자로 대치
빈도수 분석에 취약
- Poly-alphabetic Substitution : 일정한 규칙 적용, 평문의 동일한 문자가 암호문의 다른 문자로
치환
통계적 분석에 취약
- 전치(transposition) : 평문 문자를 재배열, 치환(permutation)
- 대칭키 암호 : 대치/전치 암호 기반, DES
- 공개키 암호 : 큰 수의 소인수분해 문제, 유한체ㅔ서의 이산대수 문제 등을 기반, RSA
- 정보 이론
- 혼합(confusion) : 1:1 대치 기법 이용
- 확산(diffusion) : 전치, 치환 기법 이용
▶ 암호 시스템에 대한 공격 모델
- 수동형 공격과 능동형 공격의 예
- 위조(fabrication) : replay attack
hacker가 암호화 된 data packet 을 가로채 server에 계속 보내 data 무결성 훼손
client에서 timestamp(1970.01.01~)를 붙여 보내고 server에서 받은 후 비교, 큰 차이 발생
시 공격 인지
TCP에서 sequence를 붙여 보내고 같은 sequence가 반복 시 공격 인지
Application에서 nonce(1/100억) 값을 붙여 보내고 같은 nonce가 반복 시 공격 인지
Eg) OAuth for facebook
- 평문(M/P) : Plain Text
- 암호문(C) : Cipher Text
- 키(Key) : KE / KD / KU / KR
- 암호분석(cryptanalysis)
- COA (Ciphertext-Only Attack) : 동일한 알고리즘으로 암호화 된 일부의 암호문으로 평문을 알아
내고자 함 또한 암호화에 사용 된 Key를 알아내기 위한 사실상
전수조사 공격
- KPA (Known-Plaintext Attack) : 일부의 평문과 대응하는 암호문을 함께 가지고 이를 바탕으로
Key를 획득
- CPA (Chosen-Plaintext Attack) : 일부의 암호문과 대응하는 평문을 가지고 있음
암호화 될 평문을 선택 가능
특정 평문 블록(긴 블록)을 선택해 암호화 가능
- ACPA (Adaptively CPA) : 특정 평문 블록을 선택해 평문을 암호화 한 결과를 얻을 수 있음
평문의 일부(작은 블록)를 변경했을 때의 암호문을 알아내서 계속 추적
- CCA (Chosen-Ciphertext Attack) : 공개 키 암호화 알고리즘을 공격 시 사용
복호화 될 암호문을 선택 가능, 암호문에 해당하는 평문을
얻어냄
- Chosen-Text Attack = CPA + CCA
- Rubber Hose Cryptanalysis : Key를 알고 있는 사람을 찾아 그 사람을 회유
- 링크 암호화
- 각 노드와 노드를 건너 뛸 때마다 암/복호화를 반복
- 각 노드 내에서 일시적으로 평문이 존재해 중간 노드에서 데이터 유출 가능성
- 운영이 간단하고 키 관리가 단순함 (인접한 노드들과 키를 교환)
- 긱 링크 당 한 세트의 키만 필요함
- 라우팅 정보까지 암호화해 트래픽 분석이 어려움
- Network 장비(Swetch 장비) 간 암호화
- L1 ~ L2 계층에서 구현 됨
- 종단간 암호화
- 라우팅 정보를 암호화 하지 않음, 트래픽 분석에 취약
- Payload 만 암호화
- 모든 노드간 Key를 교환해야 하므로 Key 관리가 복잡함
노드의 갯수가 n 이면 n+(n(n-3)/2)개
- 중간 노드에서도 데이터가 암호문으로 존재
- L7 에서 작동하기 때문에 높은 수준의 보안 서비스 제공
▶ 암호학의 용어와 기본 도구
- 대칭키 암호 알고리즘
- 암호화 하는 key 와 복호화 하는 key 가 같음
- 암호의 안전성은 key의 비밀 유지에 의존
- key 분배 문제가 가장 어려움
- 스트림 사이퍼, 블록 사이퍼 방식
- 계산 속도가 빠름
- 안전한 인증이 힘들고 전자 서명이 불가
- 공개키 암호 알고리즘
- 송신측에서 공개키와 개인키를 만들어 암호화해서 먼저 보냄
- 수신측에서 key를 받아 데이터를 암호화
- Key Pair (공개키, 개인키)
- 개인키가 안전성의 근거이므로 비밀 유지, 복호화 키로 사용함
- 큰 수의 소인수분해 문제, 유한체에서의 이산 대수 문제 기반
- 계산 속도가 느림
- 안전한 인증이 가능하고 전자서명이 가능
- 일방향 해시 함수
- SHA1 (160 bits), SHA256 (256 bits), SHA512 (512 bits)
- 평문의 크기가 다양해도 해시값은 일정함
- 평문을 알면 해시가 나옴, 해시가 있더라도 평문을 알 수는 없음
- 해시값을 계산하기는 쉽지만 역방향 계산은 불가능
- 해시값이 128 bits 일 경우 유추를 통해 계산이 가능
- 해시값은 보통 20 bytes(160 bits) 이내
- 메시지 다이제스트(요약) 라고도 함
- MAC (Message Authentication Code)
- 송수신측이 Secret(비밀 키)를 안전하게 나누어 가지고 있다는 전제
- 암호학적 해시 (만들어진 해시를 Secret을 사용해 암호화)
- 수신한 메시지가 평문을 유지하고 있는지 확인 가능 (무결성)
- 수신한 메시지가 정말 발신자로부터 온 것인지 확인 가능 (사용자 인증)
- 가장 주된 목적은 무결성 확인
- 전자 서명 (Digital Signature)
- 전자서명 생성키는 개인키, 전자서명 검증키는 공개키
- 송신자의 개인키(해시)로 암호화 한 일종의 해시
- 사용자 인증, 무결성, 부인봉쇄(non-repudiation)를 제공함
- 가장 주된 목적은 무결성 확인
▶ 대칭키 암호 시스템
- 대칭키 암호의 분류
▲ Click to Enlarge ▲
-- Title : [CISSP] 암호학
-- Reference : its21c.net
-- Key word : cissp
********************************************************************************************/
▶ 암호학과 보안
- 암호학(cryptology) = 암호기술(cryptography) + 암호분석(cryptanalysis)
- 암호학에 대한 보안 요구사항
- 기밀성
- 무결성
- 인증
- 부인봉쇄
- 암호 시스템의 안전성은 키의 비밀성에 달려있음
- 암호화의 3요소 : 알고리즘, 키, 키 사이즈
- 원시 암호법 : Eg) 시저 사이퍼
- 현대 암호학
- 대치(substitution)
- Mono-alphabetic Substitution : 평문의 문자가 항상 동일한 암호문의 문자로 대치
빈도수 분석에 취약
- Poly-alphabetic Substitution : 일정한 규칙 적용, 평문의 동일한 문자가 암호문의 다른 문자로
치환
통계적 분석에 취약
- 전치(transposition) : 평문 문자를 재배열, 치환(permutation)
- 대칭키 암호 : 대치/전치 암호 기반, DES
- 공개키 암호 : 큰 수의 소인수분해 문제, 유한체ㅔ서의 이산대수 문제 등을 기반, RSA
- 정보 이론
- 혼합(confusion) : 1:1 대치 기법 이용
- 확산(diffusion) : 전치, 치환 기법 이용
▶ 암호 시스템에 대한 공격 모델
- 수동형 공격과 능동형 공격의 예
- 위조(fabrication) : replay attack
hacker가 암호화 된 data packet 을 가로채 server에 계속 보내 data 무결성 훼손
client에서 timestamp(1970.01.01~)를 붙여 보내고 server에서 받은 후 비교, 큰 차이 발생
시 공격 인지
TCP에서 sequence를 붙여 보내고 같은 sequence가 반복 시 공격 인지
Application에서 nonce(1/100억) 값을 붙여 보내고 같은 nonce가 반복 시 공격 인지
Eg) OAuth for facebook
- 평문(M/P) : Plain Text
- 암호문(C) : Cipher Text
- 키(Key) : KE / KD / KU / KR
- 암호분석(cryptanalysis)
- COA (Ciphertext-Only Attack) : 동일한 알고리즘으로 암호화 된 일부의 암호문으로 평문을 알아
내고자 함 또한 암호화에 사용 된 Key를 알아내기 위한 사실상
전수조사 공격
- KPA (Known-Plaintext Attack) : 일부의 평문과 대응하는 암호문을 함께 가지고 이를 바탕으로
Key를 획득
- CPA (Chosen-Plaintext Attack) : 일부의 암호문과 대응하는 평문을 가지고 있음
암호화 될 평문을 선택 가능
특정 평문 블록(긴 블록)을 선택해 암호화 가능
- ACPA (Adaptively CPA) : 특정 평문 블록을 선택해 평문을 암호화 한 결과를 얻을 수 있음
평문의 일부(작은 블록)를 변경했을 때의 암호문을 알아내서 계속 추적
- CCA (Chosen-Ciphertext Attack) : 공개 키 암호화 알고리즘을 공격 시 사용
복호화 될 암호문을 선택 가능, 암호문에 해당하는 평문을
얻어냄
- Chosen-Text Attack = CPA + CCA
- Rubber Hose Cryptanalysis : Key를 알고 있는 사람을 찾아 그 사람을 회유
- 링크 암호화
- 각 노드와 노드를 건너 뛸 때마다 암/복호화를 반복
- 각 노드 내에서 일시적으로 평문이 존재해 중간 노드에서 데이터 유출 가능성
- 운영이 간단하고 키 관리가 단순함 (인접한 노드들과 키를 교환)
- 긱 링크 당 한 세트의 키만 필요함
- 라우팅 정보까지 암호화해 트래픽 분석이 어려움
- Network 장비(Swetch 장비) 간 암호화
- L1 ~ L2 계층에서 구현 됨
- 종단간 암호화
- 라우팅 정보를 암호화 하지 않음, 트래픽 분석에 취약
- Payload 만 암호화
- 모든 노드간 Key를 교환해야 하므로 Key 관리가 복잡함
노드의 갯수가 n 이면 n+(n(n-3)/2)개
- 중간 노드에서도 데이터가 암호문으로 존재
- L7 에서 작동하기 때문에 높은 수준의 보안 서비스 제공
▶ 암호학의 용어와 기본 도구
- 대칭키 암호 알고리즘
- 암호화 하는 key 와 복호화 하는 key 가 같음
- 암호의 안전성은 key의 비밀 유지에 의존
- key 분배 문제가 가장 어려움
- 스트림 사이퍼, 블록 사이퍼 방식
- 계산 속도가 빠름
- 안전한 인증이 힘들고 전자 서명이 불가
- 공개키 암호 알고리즘
- 송신측에서 공개키와 개인키를 만들어 암호화해서 먼저 보냄
- 수신측에서 key를 받아 데이터를 암호화
- Key Pair (공개키, 개인키)
- 개인키가 안전성의 근거이므로 비밀 유지, 복호화 키로 사용함
- 큰 수의 소인수분해 문제, 유한체에서의 이산 대수 문제 기반
- 계산 속도가 느림
- 안전한 인증이 가능하고 전자서명이 가능
- 일방향 해시 함수
- SHA1 (160 bits), SHA256 (256 bits), SHA512 (512 bits)
- 평문의 크기가 다양해도 해시값은 일정함
- 평문을 알면 해시가 나옴, 해시가 있더라도 평문을 알 수는 없음
- 해시값을 계산하기는 쉽지만 역방향 계산은 불가능
- 해시값이 128 bits 일 경우 유추를 통해 계산이 가능
- 해시값은 보통 20 bytes(160 bits) 이내
- 메시지 다이제스트(요약) 라고도 함
- MAC (Message Authentication Code)
- 송수신측이 Secret(비밀 키)를 안전하게 나누어 가지고 있다는 전제
- 암호학적 해시 (만들어진 해시를 Secret을 사용해 암호화)
- 수신한 메시지가 평문을 유지하고 있는지 확인 가능 (무결성)
- 수신한 메시지가 정말 발신자로부터 온 것인지 확인 가능 (사용자 인증)
- 가장 주된 목적은 무결성 확인
- 전자 서명 (Digital Signature)
- 전자서명 생성키는 개인키, 전자서명 검증키는 공개키
- 송신자의 개인키(해시)로 암호화 한 일종의 해시
- 사용자 인증, 무결성, 부인봉쇄(non-repudiation)를 제공함
- 가장 주된 목적은 무결성 확인
▶ 대칭키 암호 시스템
- 대칭키 암호의 분류
▲ Click to Enlarge ▲
- SPN 사이퍼 : AES, Rijndael
- Feistel 사이퍼 : DES
- 스트림 사이퍼
- one-time pad : 랜덤하지 않은 평문이 랜덤한 키 열과 더해져 랜덤한 암호문을 생성
한 번 사용한 키는 폐기
평문의 길이 = 키의 길이 = 암호문의 길이
대량의 데이터는 암호화가 불가능
Exclusive-OR 알고리즘을 통해 암 복호화
COA로 평문을 알아내는 것은 키를 알아내는 작업과 동일
수학적으로 절대 깨지지 않음
비 실용적 - 키 전달 및 키 동조의 문제
- 하드웨어 구현에 적합
- 블록 사이퍼보다 빠른 연산속도
- 종종 알고리즘을 비공개로 하고 하드웨어로만 구현(SW 구현 시 비효율적)
- 종류 : RC4, A5, SEAL(IBM)
- 블록 사이퍼
- DES : Data Encryption Standard
블록사이퍼의 원조격
64비트의 평문, 64비트의 암호문 (64비트의 블록을 나누어 암호화)
16라운드로 구성(1라운드 = 혼합과 확산을 한 번 하는 것)
각 라운드마다 대치와 치환 시행
56비트의 키 사이즈 + 8비트의 패리티 = 64비트
키 사이즈가 너무 작음 (56비트에 불과함)
트랩도어가 존재하지만 현재까지 발견되지 않음
취약키 4개, 준취약키 12개가 존재 - 암호화를 두 번 수행하면 평문으로 복원됨
S-Box는 혼합을 구현하는 가능을 가짐
- Triple DES : Double DES의 실패 극복 대안
암호화 : DES E-D-E
복호화 : DES D-E-D
Meet-in-the-middle 공격에 견딜 수 있음(Double DES 는 취약)
연산 속도가 느림
- Rijndael 알고리즘 : SPN 구조를 사용
- AES : Advanced Encryption Standard
미국 NIST 에서 DES 대체 용도로 공모
Rijndael Algorithm을 선정
- Feistel : 라운드 함수를 반복적으로 적용(CBC, Cipher Block Chaining)
이전 블록 암호문과 평문을 XOR(Exclusive-OR) 한 형태
- SPN : Substitution-Permutation Network (대치-치환망 구조)
전치와 치환을 이용해서 관용 암호방식의 문제 해결
세션키를 교환
128비트 키를 4X4 행렬로 나타내어 행렬을 이용한 암호화
각 열은 4바이트(32비트) = Word
- 블록 사이퍼의 운용모드
- 패딩(padding) : 블록의 길이를 일괄되게 맞춤 (0으로 채움)
- 모드(mode) : 기본 암호 연산 단위를 결합하여 큰 길이의 평문을 처리
ECB, CBC, CFB, OFB
인증용(MAC)으로 사용할 수 있는 것은 CBC, CFB
암호화, 인증 용도로는 CBC, CFB가 사용 가능함
- ECB : Electronic Code Block
항상 동일한 키로 블록단위 암호화
- CBC : Cipher Block Chaining
평문에 초기 벡터(키와는 별개)를 가지고 평문에 XOR 연산을 한 후 키를 가지고 암호화
(DES)
이 암호문이 다음 블록의 평문을 XOR 연산을 처리를 하기 위한 벡터값이 됨
블록간 상호 의존성을 가짐, 에러 전파
- CFB : Cipher Feedback
초기 벡터를 암호화(DES) 한 후 평문에 XOR 연산을 해 암호문을 만들어 냄
이 암호문을 다시 암호화(DES) 해서 다음 평문과 XOR 연산을 해서 암호문을 만들어 냄
- OFB : Output Feedback
초기 벡터를 암호화(DES) 한 후 평문과 XOR 연산을 해 암호문을 만들어 냄
초기 벡터를 암호화 한 값을 다시 암호화(DES) 해 다음 평문과 XOR 연산을 해 암호문을
만들어 냄
성능이 떨어짐, 에러 전파 안됨
- 기타 주요 블록사이퍼
- RC2, RC5, RC6, IDEA, SKIPJACK, Blowfish
▶ 공개키 암호 시스템
- 공개키 암호의 배경 이론 : 트랩도어 일방향 함수, 수학적으로 어려운 계산
큰 수의 소인수 분해 문제
유한체에서의 이산대수 문제
거듭제 곱근 문제
- 공개키 암호의 활용 : 비밀 키 분배, 부인봉쇄(전자서명), 암호화(키 암호화)
- 하이브리드 암호 시스템 : 대용량 데이터 암호화에 대칭키 암호 사용
키를 안전하게 나누어 가지기 위해 공개키로 키를 암호화
일반적으로 가장 많이 사용(SSL)
- 주요 알고리즘
- RSA Series : 암호화, 서명, 키 교환(분배)
- DSA : 서명
- Diffie-Hellman : 키 교환
- ElGamal : 암호화, 서명
- KCDSA : 국내 알고리즘
- ECC(Elliptic Curve Cryptography) : 타원 곡선 암호 시스템, 기존의 공개키 암호를 새롭게 구현
하는 방법
- RSA
- 가장 널리 쓰이는 공개키
- 소인수분해 문제에 기반
- DES 에 비해 약 100~1000배 느림(공개키 암호화가 속도가 빠름)
- 대용량 암호화에 사용하지 않음
- 안전을 위해 n이 최소 268비트, 권장 2048비트 이상을 사용하지만 실제 1024 ~4096비트가 쓰임
- 기타 주요 공개키 암호 알고리즘
- Diffie-Hellman
- DSA : 해시함수 SHA-1 과 함께 사용됨 (HSS)
유한체에서의 이산대수 문제에 근거
서명 생성 속도가 빠르고 서명 검증 속도가 느림
- Rabin
- ElGamal : 유한체에서의 이산대수 문제에 근거
특허가 없어 연구개발 모델로 많이 활용
- KCDSA
- ECC(타원곡선암호) : 기존보다 작은 키 크기로 더 빠르게 암호 연산 수행 가능
▶ 일방향 해시 함수
- 임의의 길이의 비트 스트림을 고정된 길이의 출력값으로 압축
- 요구사항
- h=H(x) 계산이 쉬울 것
- 주어진 해시에 대해 x를 찾아내기 힘들어야 함 (일방향성)
- 해시코드(h)의 집합에 경우의 수가 더 많아야 함
- 충돌(collision)에 대한 저항성이 있어야 함
- 충돌회피(collision resistance)
- 활용 : 무결성 검증도구, MAC, 전자서명에 활용
- Birthday attack : birthday paradox
해시 충돌 쌍을 찾아내는 것
m비트의 해시값을 가지는 경우 서로 다른 2^(m/2) 가지의 메세지를 비교하여
동일한 해시값을 산출하는 서로 다른 메시지 쌍을 찾을 확률은 0.5 이상
-> 전수 조사가 충분히 가능 함
해시코드 크기가 64비트이면 2^32 가지 메시지 중에서 충돌쌍을 찾을 확률 0.5
이상
해시코드 최소크기로 128 비트를 사용
- 주요 해시 함수 : MD2, MD4, MD5, RIPEMD-128 (128 bits)
SHA-1, RIPEMD-160, HAS-160 (160 bits)
HAVAL (128 ~ 256 bits 가변)
▶ 메시지 인증 코드 (MAC)
- 임의의 비트 스트림과 비밀키를 입력으로 가지는 축약 함수
- 데이터의 무결성과 데이터 작성자가 유효한 사람인지 검증(메시지 인증)하는 용도로 사용
- 사용자 인증(전자서명)의 개념이 아님
- 인증(Authentication) : Message / User
- 대칭키 기반 MAC : CBC로 MAC을 만듬
평문을 벡터와 XOR 연산을 한 후 암호화(DES) 한 암호문을 가지고 해시를 만듬
다음 블록의 벡터로 재 사용
- HMAC : 전용 해시 함수에 <메시지 + 키>를 입력함
HMAC-SHA-1, HMAC-RSA-2, HMAC-MD5
▶ 유사 암호화 도구들
- 스테가노그래피 : 메시지 속에 메시지를 숨기는 기술
이미지, 동영상, 사운드 파일속에 메시지를 숨김
- 비밀채널(subliminal channel) : 위장채널(covert channel)
정규 통신 채널 대역폭의 손실을 감수하면서 눈치채지 못하게
통신
- 디지털 워터마킹 : 지적재산권 보호 도구로 활용
- 템페스트(TEMPEST) : 전자파 채널을 맞추어 전파 수신기로 정보를 해독
- 유사 암호화 도구의 한계
- 알고리즘의 비밀성에 의존, 키를 사용하지 않음
- 탐지하는 기법이 알려지면 위변조가 가능함
▶ 키 관리
- Password 기반 키 생성 시 사전공격(dictionary attack)을 염두하고 키의 엔트로피를 높일 수
있도록 주의 운용
- 키 저장
- ROM Chip, 메모리카드, 스마트카드 사용
- 키 위탁
- 평상시 비밀키를 나누어 가지고 있다가 허가 후 여러 곳으로부터 키를 제출받아 사용
- 키 폐기
- EEPROM, PROM, HDD에 저장된 키를 지울 경우 여러차례 덮어쓰기
- Degaussing : 자성 제거
- 물리적 파괴
▶ 공개키 기반 구조 (PKI, Public Key Infrastructure)
- 공개 키 암호기술에 기반을 둔 인증서를 생성, 관리, 저장, 분해, 말소 등을 수행하는 집합체
- 기술이 아닌 공개키를 신뢰성 있게 관리할 수 있게 하는 집합체
- 공개키를 검증없이 수용할 경우 중간자 공격에 취약
- 구성요소
- CA (Certificate Authority) : 인증서 관리
- RA (Registration Authority) : 사용자 신원 확인, 정보 등록, CA에 대리 인증 요청
- Certificate Revocation List(디렉토리) : 인증서 목록과 취소된 인증서 목록을 관리
- Client : Key Pair 생성(공신력있는 기관으로부터 make cert 라는 툴을 내려받아 생성)
전자서명 및 검증, 공개키 암복호화
- 인증서 관리 실무준칙 : 처리 절차, 규칙
▶ 이메일 보안
- 인증서 기반의 공개키로 암호화
- 클라이언트 단에서 암복호화 하므로 암복호화 속도가 큰 의미가 없음
- PEM
- PGP : Web of Trust (웹 상에서 메일 송신자를 신뢰하고 있다는 전제)
- S/MIME
▶ IPSEC (IP Security)
- IP 상에서 오가는 메시지에 기밀성, 접근제어, 인증, 부인봉쇄 제공
- IPv6 와 호환이 가능하도록 IETF (http://www.ietf.org/) 에서 설계한 표준
(http://www.rfc-editor.org/cgi-bin/rfcsearch.pl?searchwords=IP%20Security : 재조회 필요)
- AH Protocol : 무결성, 인증 기능 제공
- ESP(보안 페이로드) 프로토콜 : 주로 데이터 암호화 기능(선택적으로 무결성, 인증) 제공
- VPN 구현을 위한 사실상 표준
- OSI model의 L3 에서 동작
- 동작 모드
- 전송모드 : ESP 구문만 암호화, 원래의 IP header는 암호화 하지 않음
- 터널모드 : IP header를 Payload에 포함시키고 보안 게이트웨이 주소가 포함된 IP header를
추가
IP packet 전체에 대한 보호가 가능
- 키 관리
- SA(Security Association)
- IKE(Internet Key Exchange) : 키 교환 프로토콜
ISAKMP + OAKLEY 결합
- Feistel 사이퍼 : DES
- 스트림 사이퍼
- one-time pad : 랜덤하지 않은 평문이 랜덤한 키 열과 더해져 랜덤한 암호문을 생성
한 번 사용한 키는 폐기
평문의 길이 = 키의 길이 = 암호문의 길이
대량의 데이터는 암호화가 불가능
Exclusive-OR 알고리즘을 통해 암 복호화
COA로 평문을 알아내는 것은 키를 알아내는 작업과 동일
수학적으로 절대 깨지지 않음
비 실용적 - 키 전달 및 키 동조의 문제
- 하드웨어 구현에 적합
- 블록 사이퍼보다 빠른 연산속도
- 종종 알고리즘을 비공개로 하고 하드웨어로만 구현(SW 구현 시 비효율적)
- 종류 : RC4, A5, SEAL(IBM)
- 블록 사이퍼
- DES : Data Encryption Standard
블록사이퍼의 원조격
64비트의 평문, 64비트의 암호문 (64비트의 블록을 나누어 암호화)
16라운드로 구성(1라운드 = 혼합과 확산을 한 번 하는 것)
각 라운드마다 대치와 치환 시행
56비트의 키 사이즈 + 8비트의 패리티 = 64비트
키 사이즈가 너무 작음 (56비트에 불과함)
트랩도어가 존재하지만 현재까지 발견되지 않음
취약키 4개, 준취약키 12개가 존재 - 암호화를 두 번 수행하면 평문으로 복원됨
S-Box는 혼합을 구현하는 가능을 가짐
- Triple DES : Double DES의 실패 극복 대안
암호화 : DES E-D-E
복호화 : DES D-E-D
Meet-in-the-middle 공격에 견딜 수 있음(Double DES 는 취약)
연산 속도가 느림
- Rijndael 알고리즘 : SPN 구조를 사용
- AES : Advanced Encryption Standard
미국 NIST 에서 DES 대체 용도로 공모
Rijndael Algorithm을 선정
- Feistel : 라운드 함수를 반복적으로 적용(CBC, Cipher Block Chaining)
이전 블록 암호문과 평문을 XOR(Exclusive-OR) 한 형태
- SPN : Substitution-Permutation Network (대치-치환망 구조)
전치와 치환을 이용해서 관용 암호방식의 문제 해결
세션키를 교환
128비트 키를 4X4 행렬로 나타내어 행렬을 이용한 암호화
각 열은 4바이트(32비트) = Word
- 블록 사이퍼의 운용모드
- 패딩(padding) : 블록의 길이를 일괄되게 맞춤 (0으로 채움)
- 모드(mode) : 기본 암호 연산 단위를 결합하여 큰 길이의 평문을 처리
ECB, CBC, CFB, OFB
인증용(MAC)으로 사용할 수 있는 것은 CBC, CFB
암호화, 인증 용도로는 CBC, CFB가 사용 가능함
- ECB : Electronic Code Block
항상 동일한 키로 블록단위 암호화
- CBC : Cipher Block Chaining
평문에 초기 벡터(키와는 별개)를 가지고 평문에 XOR 연산을 한 후 키를 가지고 암호화
(DES)
이 암호문이 다음 블록의 평문을 XOR 연산을 처리를 하기 위한 벡터값이 됨
블록간 상호 의존성을 가짐, 에러 전파
- CFB : Cipher Feedback
초기 벡터를 암호화(DES) 한 후 평문에 XOR 연산을 해 암호문을 만들어 냄
이 암호문을 다시 암호화(DES) 해서 다음 평문과 XOR 연산을 해서 암호문을 만들어 냄
- OFB : Output Feedback
초기 벡터를 암호화(DES) 한 후 평문과 XOR 연산을 해 암호문을 만들어 냄
초기 벡터를 암호화 한 값을 다시 암호화(DES) 해 다음 평문과 XOR 연산을 해 암호문을
만들어 냄
성능이 떨어짐, 에러 전파 안됨
- 기타 주요 블록사이퍼
- RC2, RC5, RC6, IDEA, SKIPJACK, Blowfish
▶ 공개키 암호 시스템
- 공개키 암호의 배경 이론 : 트랩도어 일방향 함수, 수학적으로 어려운 계산
큰 수의 소인수 분해 문제
유한체에서의 이산대수 문제
거듭제 곱근 문제
- 공개키 암호의 활용 : 비밀 키 분배, 부인봉쇄(전자서명), 암호화(키 암호화)
- 하이브리드 암호 시스템 : 대용량 데이터 암호화에 대칭키 암호 사용
키를 안전하게 나누어 가지기 위해 공개키로 키를 암호화
일반적으로 가장 많이 사용(SSL)
- 주요 알고리즘
- RSA Series : 암호화, 서명, 키 교환(분배)
- DSA : 서명
- Diffie-Hellman : 키 교환
- ElGamal : 암호화, 서명
- KCDSA : 국내 알고리즘
- ECC(Elliptic Curve Cryptography) : 타원 곡선 암호 시스템, 기존의 공개키 암호를 새롭게 구현
하는 방법
- RSA
- 가장 널리 쓰이는 공개키
- 소인수분해 문제에 기반
- DES 에 비해 약 100~1000배 느림(공개키 암호화가 속도가 빠름)
- 대용량 암호화에 사용하지 않음
- 안전을 위해 n이 최소 268비트, 권장 2048비트 이상을 사용하지만 실제 1024 ~4096비트가 쓰임
- 기타 주요 공개키 암호 알고리즘
- Diffie-Hellman
- DSA : 해시함수 SHA-1 과 함께 사용됨 (HSS)
유한체에서의 이산대수 문제에 근거
서명 생성 속도가 빠르고 서명 검증 속도가 느림
- Rabin
- ElGamal : 유한체에서의 이산대수 문제에 근거
특허가 없어 연구개발 모델로 많이 활용
- KCDSA
- ECC(타원곡선암호) : 기존보다 작은 키 크기로 더 빠르게 암호 연산 수행 가능
▶ 일방향 해시 함수
- 임의의 길이의 비트 스트림을 고정된 길이의 출력값으로 압축
- 요구사항
- h=H(x) 계산이 쉬울 것
- 주어진 해시에 대해 x를 찾아내기 힘들어야 함 (일방향성)
- 해시코드(h)의 집합에 경우의 수가 더 많아야 함
- 충돌(collision)에 대한 저항성이 있어야 함
- 충돌회피(collision resistance)
- 활용 : 무결성 검증도구, MAC, 전자서명에 활용
- Birthday attack : birthday paradox
해시 충돌 쌍을 찾아내는 것
m비트의 해시값을 가지는 경우 서로 다른 2^(m/2) 가지의 메세지를 비교하여
동일한 해시값을 산출하는 서로 다른 메시지 쌍을 찾을 확률은 0.5 이상
-> 전수 조사가 충분히 가능 함
해시코드 크기가 64비트이면 2^32 가지 메시지 중에서 충돌쌍을 찾을 확률 0.5
이상
해시코드 최소크기로 128 비트를 사용
- 주요 해시 함수 : MD2, MD4, MD5, RIPEMD-128 (128 bits)
SHA-1, RIPEMD-160, HAS-160 (160 bits)
HAVAL (128 ~ 256 bits 가변)
▶ 메시지 인증 코드 (MAC)
- 임의의 비트 스트림과 비밀키를 입력으로 가지는 축약 함수
- 데이터의 무결성과 데이터 작성자가 유효한 사람인지 검증(메시지 인증)하는 용도로 사용
- 사용자 인증(전자서명)의 개념이 아님
- 인증(Authentication) : Message / User
- 대칭키 기반 MAC : CBC로 MAC을 만듬
평문을 벡터와 XOR 연산을 한 후 암호화(DES) 한 암호문을 가지고 해시를 만듬
다음 블록의 벡터로 재 사용
- HMAC : 전용 해시 함수에 <메시지 + 키>를 입력함
HMAC-SHA-1, HMAC-RSA-2, HMAC-MD5
▶ 유사 암호화 도구들
- 스테가노그래피 : 메시지 속에 메시지를 숨기는 기술
이미지, 동영상, 사운드 파일속에 메시지를 숨김
- 비밀채널(subliminal channel) : 위장채널(covert channel)
정규 통신 채널 대역폭의 손실을 감수하면서 눈치채지 못하게
통신
- 디지털 워터마킹 : 지적재산권 보호 도구로 활용
- 템페스트(TEMPEST) : 전자파 채널을 맞추어 전파 수신기로 정보를 해독
- 유사 암호화 도구의 한계
- 알고리즘의 비밀성에 의존, 키를 사용하지 않음
- 탐지하는 기법이 알려지면 위변조가 가능함
▶ 키 관리
- Password 기반 키 생성 시 사전공격(dictionary attack)을 염두하고 키의 엔트로피를 높일 수
있도록 주의 운용
- 키 저장
- ROM Chip, 메모리카드, 스마트카드 사용
- 키 위탁
- 평상시 비밀키를 나누어 가지고 있다가 허가 후 여러 곳으로부터 키를 제출받아 사용
- 키 폐기
- EEPROM, PROM, HDD에 저장된 키를 지울 경우 여러차례 덮어쓰기
- Degaussing : 자성 제거
- 물리적 파괴
▶ 공개키 기반 구조 (PKI, Public Key Infrastructure)
- 공개 키 암호기술에 기반을 둔 인증서를 생성, 관리, 저장, 분해, 말소 등을 수행하는 집합체
- 기술이 아닌 공개키를 신뢰성 있게 관리할 수 있게 하는 집합체
- 공개키를 검증없이 수용할 경우 중간자 공격에 취약
- 구성요소
- CA (Certificate Authority) : 인증서 관리
- RA (Registration Authority) : 사용자 신원 확인, 정보 등록, CA에 대리 인증 요청
- Certificate Revocation List(디렉토리) : 인증서 목록과 취소된 인증서 목록을 관리
- Client : Key Pair 생성(공신력있는 기관으로부터 make cert 라는 툴을 내려받아 생성)
전자서명 및 검증, 공개키 암복호화
- 인증서 관리 실무준칙 : 처리 절차, 규칙
▶ 이메일 보안
- 인증서 기반의 공개키로 암호화
- 클라이언트 단에서 암복호화 하므로 암복호화 속도가 큰 의미가 없음
- PEM
- PGP : Web of Trust (웹 상에서 메일 송신자를 신뢰하고 있다는 전제)
- S/MIME
▶ IPSEC (IP Security)
- IP 상에서 오가는 메시지에 기밀성, 접근제어, 인증, 부인봉쇄 제공
- IPv6 와 호환이 가능하도록 IETF (http://www.ietf.org/) 에서 설계한 표준
(http://www.rfc-editor.org/cgi-bin/rfcsearch.pl?searchwords=IP%20Security : 재조회 필요)
- AH Protocol : 무결성, 인증 기능 제공
- ESP(보안 페이로드) 프로토콜 : 주로 데이터 암호화 기능(선택적으로 무결성, 인증) 제공
- VPN 구현을 위한 사실상 표준
- OSI model의 L3 에서 동작
- 동작 모드
- 전송모드 : ESP 구문만 암호화, 원래의 IP header는 암호화 하지 않음
- 터널모드 : IP header를 Payload에 포함시키고 보안 게이트웨이 주소가 포함된 IP header를
추가
IP packet 전체에 대한 보호가 가능
- 키 관리
- SA(Security Association)
- IKE(Internet Key Exchange) : 키 교환 프로토콜
ISAKMP + OAKLEY 결합
반응형