반응형
/********************************************************************************************
-- 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 결합


반응형

+ Recent posts