카테고리 없음

[퍼센트마이닝] 정보보호 강의요약

narlo 2023. 12. 11. 04:56

정보보호

정보보호

- 정보의 수집, 가공, 저장, 검색, 송신, 수신 중에 정보의 훼손, 변조, 유출 등을 방지하기 위한 관리적, 기술적 수단 또는 그러한 수단으로 이루어지는 행위

- 보안과 가용성의 균형감을 유지하는 것

 

보안 : 가치 있는 유형과 무형 자산을 도난, 소실, 유출로부터 보호하는 것

보호 : 위협으로부터 안전한 정도, 정보를 저장하거나 유통하는 전반적인 시스템의 약점

 

Security Service(정보보호를 위한 기능)

1. 기밀성(Confidentiality)

2. 무결성(Identity) : 불법적으로 변경된 것은 없는지

3. 사용자 인증(User Authentication) : A가 보낸 게 맞는지

4. 부인 봉쇄(Non-Repudiation)

    - 송신부인봉쇄

    - 수신부인봉쇄

5. 가용성(Availability) : 해킹을 당해 멈추는 현상을 방지해야 함

6. 접근제어(Access Control)

 

더보기

1~4는 네트워크단 => 암호 기술로 해결 가능

5, 6은 서버 관리자 또는 개인이 중요 => 시스템 보안 기술로 해결 가능

 

사회공학적 공격

- 사람의 심리적인 취약점을 활용하여 정보를 취득하거나 접근권한을 얻거나 정보제공을 재정적 이득과 연결하여 시스템을 공격하는 방법

 

E[M] = C, D[C] = M

M : 평문, E : 암호 알고리즘, D : 복호 알고리즘, C : 암호문

Ke : encryption key, Kd : decryption key

 

대칭키(관용) 암호방식 : Ke = Kd

비대칭키(공개키) 암호방식 : Ke != Kd

하이브리드 암호방식 : 관용 암호방식 + 공개키 암호방식

 

시저 알고리즘

- shift 이용

- 알파벳이 26개이므로 25번만 공격해보면 찾을 수 있음

- 관용암호방식, 대칭키 암호방식

 

알파벳을 랜덤으로 대치하는 경우

- 26!의 경우의 수

 

1. 대치(Substitution)

- BOY -> CPZ : B를 C로, O를 P로, Y를 Z로 대치

- 평문이 그대로 나타남

 

2. 치환(Transposition)

- BOY -> OYB : 순서를 바꿈

- 평문이 나타날수도 / 안나타날수도

 

bit 단위로 handling 하는 곳에서도 대치, 치환을 반복적으로 사용해 암호화한다. (관용암호방식의 특징)

 

일방향 해시함수

- 문서의 무결성 점검

 

메시지 인증코드

- 메시지가 생각했던 통신 상대로부터 온 것임을 확인하는 코드

 

디지털 서명

- 거짓 행세, 변경, 부인 같은 위협을 방지하는 기술

 

부인

- 통신 사실을 나중에 아니라고 하는 것

 

보안위협 위협 받는 특성 방지를 위한 암호기술
도청 기밀성 대칭암호, 공개키암호
메시지 변경 무결성 대칭암호, 공개키암호, 일방향 해시함수, 메시지 인증코드, 디지털 서명
위장 인증 대칭암호, 공개키암호, 메시지 인증코드, 디지털 서명
부인 부인봉쇄 디지털 서명

 

크립토그래피 : 메시지의 내용을 읽지 못하게 하는 기법

스테가노그래피

- 메시지의 존재 자체를 숨기는 기법

- 디지털 워터마킹에 사용 (디지털 문서의 그림에 몰래 데이터를 숨겨놓고 이를 기반으로 저작권 확인)

 

일회용 패드(one time pad)

- 절대 해독되지 않는 알고리즘, 현실에서의 사용은 적합하지 않다.

- 평문과 랜덤한 비트열과의 XOR만을 취하는 단순한 암호

- 문자열이 복호화 되었다고 해도, 그것이 바른 평문인지 판정할 수 없다.

- 사용되지 않는 이유

  - 키 배송 : 키의 길이는 통신문의 길이와 같기 때문에 키를 안전하게 보낼 수 있는 방법이 있다면 평문 그 자체를 같은 방법으로 안전하게 보낼 수 있다.

  - 키 보존 : 평문과 같은 비트 길이의 키의 안전한 보존이 가능하면 평문 그 자체를 안전하게 보존할 수 있다.

  - 키 재이용 : 랜덤한 비트열 재이용이 불가능하다.

  - 키 동기화 : 통신하는 동안 송, 수신자 사이에 키 비트열이 1비트라도 어긋나서는 안된다.

  - 키 생성 : 난수 대량 생서이 필요하다.

 

전사공격(brute-force attack)

- 키가 될 수 있는 모든 후보들을 시도해보는 방법

 

단일 치환 암호

- 평문을 구성하는 알파벳을 다른 알파벳으로 변환하는 암호

- 약점 : 문자의 빈도

- 치환표가 필요

- 단일치환암호 중 시저암호는 전사공격으로 해독 가능

 

다중 치환 암호

- 평문에 등장하는 문자의 빈도와 암호문에 등장하는 문자의 빈도를 다르게 만든 알고리즘

 

에니그마

- 암호화, 복호화를 수행하는 기계

- 회전하는 원반과 전기회로 이용

 

DES(Data Encryption Standard)

- 대칭 암호

- 전사공격으로 해독할 수 있는 수준

- 64bit 블록

- 56bit 키, 8bit 패리티 비트 (고정된 키 길이)

- 블록 단위로 나누고 대치와 치환을 반복적으로 사용

- 각 블록은 똑같은 알고리즘 적용

- ECB모드 : 블록이 독립적이기 때문에 해석하기 쉬워짐 => 블록끼리 묶어 어렵게 만드는 Block Cipher 알고리즘 이용

 

Triple DES

- 안전성을 높이기 위해 사용

- 기존 DES의 HW를 그대로 쓰면서 3번 암호화하여 키가 늘어나는 효과

- Ek1Dk2Ek1 : k1을 가지고 encrypt, k2를 가지고 decrypt => 56 * 2 = 112bit의 키를 갖는 효과

- Ek1Dk2Ek3 : 56 * 3 = 168bit의 키를 갖는 효과

- Ek1Ek2 => 56+1 = 57 bit의 안전성

- 은행 등에서 아직 사용한다. 처리 속도가 빠르지 않다.

 

AES(Advanced Encryption Standard)

- Rijndael

- 블록 길이 : 128bit

- 키 길이 : 128, 192, 256bit 등 가변적인 키 길이

 

우리나라 표준으로 사용하는 대칭키 알고리즘(SEED, ARIA)

 

블록 암호(Block Cipher)

- 특정 비트 수의 집합(block)을 한 번에 처리하는 암호 알고리즘

- 블록의 비트 수 : 블록 길이

<-> 스트림 암호 : 데이터의 흐름을 순차적으로 처리해가는 암호 알고리즈

- 블록 암호 모드

  - ECB : 암호문을 살펴보는 것만으로도 평문 속의 패턴 반복성 감지

  - CBC

    - 1단계 앞에서 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR 하고 나서 암호화 수행

    - IV : Fixed 상수(난수)

    - 암호화 : Serial하게 진행됨, 복호화 : 병렬 처리 가능

    - 마지막 블록은 모든 블록의 정보를 담고 있음 (Message Integrity)

    - 암호문 블록이 파손되면 2개의 평문 블록에 영향을 미침

    - 비트가 누락되면 그 이후의 평문 전체에 영향을 미침

    - 공격자가 IV를 반전시키면 복호화되어 얻어지는 평문 블록의 비트를 반전시킬 수 있음

  - CFB

    - 1단계 앞의 암호문 블록을 암호 알고리즘의 입력으로 사용

    - 이전 암호문 블록을 먼저 암호화 => 평문 블록과 XOR

    - 재전송 공격

  - OFB

    - 에러가 많이 발생하는 공간에서 사용

    - 평문 블록과 암호 알고리즘의 출력을 XOR하여 암호문 블록을 만듦

- CTR

    - COUNTER

    - 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만들어내는 스트림 암호

    - 큰 사이즈 파일 암호화에 효과적(암, 복호화 병렬 가능)

 

 

키 배송 문제(Key Distribution)

- 대칭 암호를 사용하려면 송신자와 수신자가 대칭키를 사전에 공유해야 하는 문제

- 인원이 많아질수록 관리해야 할 키 수가 증가한다.

- n명 => nC2만큼의 키 필요

 

키 배포센터(KDC)

- 암호통신 때마다 통신용의 키를 키 배포 센터에 의뢰해서 개인과 키 배포 센터 사이에서만 키를 사전에 공유

- 구성원 전원의 키를 보존

- 구성원 수 증가 시 키 배포 센터의 부하

- 키 배포 센터의 컴퓨터 고장 시 조직 전체의 암호 통신 마비

- 키 배포 센터가 공격의 대상이 될 수 있음

 

공개키 암호

- 암호화, 복호화 키가 서로 다름

- private key, public key (private key는 공개 X)

- 암호화 할 수 있는 한계치가 존재

1. Diffie-Hellman 키 교환

  - 암호 통신을 원하는 두 사람이 어떤 정보를 교환하여 이 교환한 정보를 가지고 동일한 키를 각각 생성

2. RSA

  - 공개키 암호, 디지털 서명, 키 교환에 사용

  - 암호문 = 평문^E mod N  (E, N) : 공개키

  - 평문 = 암호문^D mod N  (D, N) : 개인키

  - 소인수분해의 어려움을 이용

3. ElGamal 방식

  - 이산로그 문제에 기반

  - 암호문의 길이가 평문의 2배가 되어버린다는 결점

4. ECC(타원곡선암호)

  - RSA에 비해 키의 비트 수가 적음

  - 타원곡선 위에 곱셈 정의, 이 곱셈의 역연산이 어렵다는 점을 이용

- 공개키 암호의 인증 문제

  - 입수한 공개키의 진위 판단 필요(중간자공격)

 

하이브리드 시스템 (공개키 + 관용암호방식)

- 대칭 암호는 기밀성을 유지한 통신이 가능하지만 키 배송 문제를 해결할 필요가 있다.

- 공개키 암호는 이 키 배송 문제를 해결할 수 있지만 큰 메시지를 암호화 시 속도가 느리다는 문제가 있다.

=> 공개키 암호를 키 암호화에 사용, 메시지 암호화는 대칭 암호 이용

- PGP : 전자우편 보안 매커니즘

- SSL/TLS : 브라우저, WEB 암호 통신에 사용

- 구성요소

  - 의사난수 생성기(세션 키 생성에 사용)

  - 대칭 암호 : 강한 암호 알고리즘 사용, 충분히 길이가 긴 키 사용, 적절한 블록 암호 모드 사용

  - 공개키 암호 : 세션키 암호화에 사용, 강한 공개키 암호 알고리즘 사용, 충분히 길이가 긴 키 사용

- 키 길이의 밸런스

  공개키 - 관용키

   1024   -   128

   2048   -    256 

1. Ek[M] || EKUB[K] : 기밀성

2. M || EKRA[H(M)] : 무결성, 사용자 인증, 부인봉쇄

3. EK[M || EKRA[H(M)]] || EKUB[K] : 기밀성, 무결성, 사용자 인증, 부인봉쇄

 

해시함수(One way Funciton)

- 계산이 빠르다.

- any size를 넣어도 fixed size가 나온다.

- 한계 : 서로 다른 input이 동일한 output을 가질 수 있음. (찾아내기 어렵다는 조건)

- 충돌 내성

  - 약한 충돌 내성 : 메시지의 해시 값이 주어졌을 때, 같은 해시값을 갖는 M'을 발견해 내는 것이 매우 곤란한 성질

  - 강한 충돌 내성 : 해시값이 일치할 것 같은 다른 2개의 메시지를 발견해 내는 것이 매우 곤란한 성질 (주어지지않음)

- 해시 함수의 활용

  1. SW의 변경 검출

  2. PBE(패스워드 기반 암호화)

    - 패스워드 + salt 의 해시값을 암호화 키로 사용 => 사전공격 방어(salt)

  3. 메시지 인증 코드

    - 송, 수신자만이 공유하고 있는 키와 메시지를 혼합해서 그 해시값을 계산한 값

    - SSL/TLS에서 사용

  4. 디지털 서명 : 처리시간 단출을 위해 메시지의 해시값을 구하고, 그 해시값에 디지털 서명 수행

  5. 의사난수 생성기 : 해시가 random한 bitstream을 만들어줌, 예측불가능성을 보증하기 위해 해시의 일방향성을 이용

  6. 일회용 패스워드 : 정당한 클라이언트인지 서버가 인증할 때 사용

- RIPEMD-160 : 비트코인에서 사용하는 해시함수

- 활용

  1. M || EKRA[H(M)] : 전자서명

  2. EKS[M || EKRA[H(M)]] || EKUB[KS] : 기밀성 + 전자서명(사용자인증, 무결성, 송신부인봉쇄)

  3. M || H(M) : 불법변경 확인

  4. M || H(M || S) : S는 Secret key, S를 모르면 해시값을 바꿀 수 없음

  5. EH(PWD)[KRA]

 

메시지 인증 코드(MAC, Message Authentication Code)

- "메시지가 올바른 송신자로부터 온 것이다"는 성질

- 무결성과 인증에 대한 위협

  1. 공격자가 메시지를 탈취해 변경(중간자)

  2. 공격자가 송신자로 위장하고 메시지 전송

- 무결성, 인증을 해결하는 방법

- 입력 : 메시지, 공유하는 키

- 출력 : 고정 비트의 코드

- 키 배송 문제

  - 공개키 암호

  - 디피 헬만 키 교환

  - 키 배포 센터

  - PSK(Pre Shared Key)

1. 일방향 해시함수를 이용한 실현 (HMAC)

2. 블록 암호를 이용한 실현

  - 블록 암호 키를 메시지 인증 코드의 공유키로 사용

  - CBC모드로 메시지 전체를 암호화, 맨 마지막 블록은 모든 내용을 함축하고 있음

  - 키, 마지막 블록의 암호문을 이용해 MAC으로 사용 가능

3. 스트림 암호

4. 공개키 암호

 

  1. 재전송 공격 : 보존해 둔 정당한 MAC 값을 반복해서 송신

   방어

    1. 순서 번호

    2. 타임 스탬프

    3. 비표(NONCE)

  2. 키 추측 공격

    방어

    MAC값만 획득한 공격자가 키를 추측하지 못하도록 해야함

    1. 해시함수의 일방향성, 충돌 내성

    2. 키 생성에 의사난수 생성기 사용

 

메시지 인증코드로 해결할 수 없는 문제

1. 제3자에 대한 증명 (키를 제3자에게 알려줄 수 X)

2. 부인 방지 (송신자가 송신 자체를 부정하는 경우 제3자에게 증명 불가)

 

HMAC

- 일방향 해시함수를 이용해 메시지 인증 코드를 구성하는 방법

- HMAC(K, M) = H[(K+ XOR OPAD) || H[(K+ XOR IPAD) || M]]

 

디지털 서명

- 메시지 송신 시 개인키를 써서 서명을 작성

- 수신자는 공개키를 써서 서명을 검증

- RSA에 의한 서명

- 중간자 공격 : 입수한 공개키가 정확한 상대의 것인지 확인 필요

- 핑거프린트 : 공개키를 취급하는 SW에서 공개 키의 해시 값을 표시하는 수단

 

인증서

- X.509 : 인증서의 표준 양식

- 공개키 기반 구조(PKI)

- 이용자가 키 쌍을 작성하고 인증기관에 공개키를 등록

- 인증기관으로부터 인증서 발행받기

- 수신한 암호문 복호화, 메시지에 디지털 서명 등에 활용

- 인증 기관(CA)

  - 최상위 인증기관인 RootCA의 경우 self-signature : 자신의 공개키에 대해 자신의 개인키로 서명

  - 인증서 관리

  - 키 쌍 작성

  - 공개키 등록 시 본인인증 (등록기관 RA가 대행하기도 함)

  - 인증서 작성, 발행, 폐지

- CRL (Certificate Revocation List) : 폐지된 인증서인지 확인

 

사설인증서 : 키 생성을 기업이 하고 개인키는 어디에 보관했는지 알 수 없음 (사설인증기관이 알아서)

=> 개인키 관리 부담이 줄어듦

 

DID(Decentralized IDentity)

- 분산형 시스템

- 블록체인 기반 분산 신원 확인

- 자기 스스로 신분을 증명할 수 있는 모델

- 사용자끼리 서명해서 trust chain을 만드는 (내가 잘 아는 B가 서명했으니까 A 맞구나)

 

Computationally Secure

- 양자컴퓨터가 나오면 공개키 2048bit도 깨질 수 있다.

- PQC 알고리즘이 국제표준화되어 나오기 시작 (RSA 대체 예정)

- QKD(Quantum Key Distribution) : 양자통신을 이용해 암호키를 분배하는 방법

 

TEE(Trusted Execution Environment)

- 안전한 스토리지 + 안전한 실행공간을 만들자 => 암호키들을 보관

 

FIDO(Fast Identity Online)

- 공개키 방식

- 생체정보는 해킹당해도 바꿀 수 없기 때문에 서버에 보관하면 안된다.

=> 사용자 인증이 사용자단에서 일어나는 방식

 

CEK(Contents Encrypting Key) : 정보가 암호화의 대상

KEK(Key Encrypting Key) : 키가 암호화의 대상

 

난수의 성질

1. 무작위성 : 통계적인 편중 없이 수열이 무작위로 되어 있는 성질

2. 예측 불가능성 : 과거의 수열로부터 다음 수를 예측할 수 없다는 성질

3. 재현 불가능성 : 같은 수열을 재현할 수 없다는 성질 (SW적으로는 재현불가능성을 구현하기 어려움, HW 필요)

진성난수 : 3가지 성질을 모두 가지는 난수

 

구체적 의사난수 생성기

1. 무작위 방법 : 긴 주기를 가져야 함, 명확한 알고리즘(예측불가능성을 갖는지 판단하기 위해)

2. 선형합동법 : 일반적으로 가장 많이 사용하지만 암호 기술에는 사용 불가

3. 해시 이용 방법 : 해시의 일방향성이 예측불가능성을 보장

4. 암호 사용 방법 : 암호의 기밀성이 예측불가능성을 보장

5. ANSI X9.17 : PGP(전자우편 보안 메커니즘)에서 사용하는 의사난수생성기

Ri = Ek[Ek[DTi] XOR Vi]

Vi+1 = Ek[Ek[DTi] XOR Ri]

Ri : 의사난수열, Vi : 초기값, DTi : 현재시각

 

Authentication by Knowledge : PASSWORD, PASSPHRASE

Authentication by Ownership : OTP

Authentication by Characteristic : 지문, 홍채 인식

 

OTP(One Time Password) : 일회용 비밀번호

 

블록체인

- 한 번 올라가면 안지워짐(안바뀜)

- 신뢰할 수 있는 공간

 

TLS

- 세션관리 필요

- 사용자 인증(수신) 불가 : 사용자가 인증서를 갖는 것 자체가 쉽지 않음, 보통 id, pwd로 인증

- 부인봉쇄 불가 : 전자서명이 기본적으로 필요한데, HTTP 프로토콜 특성 상 지원 불가