Computer Science/Network Security

[CS][네트워크보안] Chapter2. 암호의 세계

y-seo 2023. 10. 13. 04:14
 
 

통신에서의 참여자 및 주요 공격 유형

  • 송신자 : 메세지를 보내는 사람
  • 수신자 : 메세지를 받는 사람
  • 주요 공격 유형
    • 도청 (Eavesdrop) : 데이터를
      • 방지하려면 암호화를 해야함
      • 그러나 복화화를 위한 키 공유도 노출될 수 있음 (취약점)
    • 위/변조 : 가로채기

 

 
 

암호화와 복호화

  • for 공격 방지
  • 평문 (plaintext) : 암호화 하기 전의 메세지, 암호문을 푼 것
  • 암호문 (ciphertext) : 암호화 한 후의 메세지
  • 암호 기술 : 중간의 도청자가 암호문을 가로챈다 해도 비밀값을 모른다면 암호문을 평문으로 복호화 할 수 없도록 하는 기술, 도청 방지를 위해, 기밀성을 위한 기술
  • 보안 프로토콜 : 어떻게 암호화할지 송수신자가 미리 약속해야 함

 

 
 

암호 해독 (Crptanalysis)

  • 정당한 수신자가 아닌 공격자가 암호문으로부터 평문을 알아내려고 하는 행위
  • 공격자가 아닌 연구자도 암호 해독을 할 수 있음
  • 암호 해독 전략
    • Ciphertext-only Attack : 암호문만을 이용해 키를 찾는 전략 (=평문을 찾는 전략)
    • Known Plaintext Attck : 평문과 암호문의 쌍을 가지고 키를 찾는 전략
    • Chosen Plaintext Attack : 공격자가 선택한 평문과 그 평문의 암호문을 갖고 키를 찾는 전략
    • Chosen Cyphertext Attack : 공격자가 선택한 암호문과 그 암호문을 복호화한 결과인 평문을 갖고 키를 찾는 전략
  • 공격자의 입장 : 위 유형에서 위로 갈수록 난이도 ↑
  • 암호 알고리즘이 안전다하고 할 수 있는 조건
    • 암호를 깨는 데 드는 비용 > 평문의 가치
    • 암호 깨는데 걸리는 시간 > 평문의 수명

 

 
 

암호화와 복호화의 기호 표현

  • 암호화와 복호화는 함수로 나타낼 수 있음
  • 사용 기호
    • 평문 : P
    • 암호문 : C
    • 키 : K

  • 암호화
    • Encryption 
    • 입력 : 평문
    • 출력 : 암호문

  • 복호화
    • Decryption 
    • 입력 : 암호문
    • 출력 : 평문

 

 
 

대칭키 암호화 공개키 암호

  • key
    • 데이터를 암호화 or 복호화하기 위해 필요한 비밀값
    • 복호화에 쓰이는 키 : 해당 사용자들만 소유하거나 알고 있게끔 매우 잘 관리해야 함
  • 대칭 암호
    • 암호 알고리즘 : 암호화에 쓰이는 키 = 복호화에 쓰이는 키
    • 주로 데이터 암호화 시 사용
  • 비대칭 암호 (공개키 암호)
    • 암호 알고리즘 : 암호화에 쓰이는 키 복호화에 쓰이는 키
    • 주로 대칭암호에 사용되는 키를 암호화하는데 사용 (key 공유를 위해)
    • 암호화에 쓰이는 키는 공개하기 때문에 공개키라고 함
    • 단점 : 느리고 제한적
  • 하이브리드 암호
    • 공개키 암호 + 대칭 암호
  • 맨 처음에는 key를 공유해야 함 → Bob이 key를 2개 만듦 (for 암호화 & 복호화) → 암호화 할 때 쓰는 key를 Bob이 Alice에게 그냥 보냄 (앞으로 그렇게 하라고) → Bob이 가진 복호화 key로 Alice에게 받은 data를 복호화 가능

 

 
 

일방향 해시 함수

  • 무결성을 위해
  • 함수 H(x)에 대해, x가 임의의 길이라도 함숫값의 길이는 항상 일정할 때, 이 함수를 해시 함수라 함ㅁ
  • n : 1 함수 (1개의 함숫값에 대응되는 x 값이 多)
  • 해시 함수 예시
    • H(x)=x의 각각의 바이트를 모두 XOR 연산한 값
    • H(x)=x의 처음 10bit
    • 위 예시는 안전한 해시 함수 X
  • 입력 값이 모든 디지털 데이터 가능, 아무 값도 넣지 않은 경우도 계산할 수 있어야 함
  • 해시 함수를 통과시킨 함숫값 : Hash Value, Fingerprint, Message digest

 

 
 

해시 함수와 메세지 인증 코드

  • " 원본 msg + hash 값 "을 같이 받아 hash 값이 맞는지 비교 
    • 문제점 : 내용이 안 바뀐 것은 검증이 되지만, 보낸 사람이 누군지는 모른다
    • 해결을 위해 MAC 도입
  • MAC : 발신자 인증을 하기 위한 메세지 인증 코드
    • 받는 사람만 확인 가능
    • MAC을 생성하기 위해 메세지와 키 값이 해시 함수에 입력됨
    • MAC을 이용해 메세지가 전송 과정에서 변하지 않았다는 것과 해당 사람이 송신자임을 검증할 수 있음
  • False Negative : 공격인데 공격이 아니라고 판단하는 것
    • 메세지는 조작하고 해쉬값은 잘 나오게 할 수 있음

 

 
 

디지털 서명

  • Bob 말고도 다른 사람도 확인 가능하게 하기 위해
  • 무결성을 위해
  • 메세지의 출처와 메세지 내용에 대한 확신을 위한 과정
  • 공개키 암호 시스템 사용 : 비밀키를 이용하여 서명 → 공개키를 이용해 서명을 검증
    • 비밀키를 갖고 있는 사람만 서명 가능 → 서명한 사람이 누구인지 쉽게 검증 가능
  • 암호화 알고리즘 X
    • 문서 전체를 비밀키를 이용해 암호화하면 시간이 오래 걸리므로 보내는 사람이 자신의 비밀키로 문서의 해시값을 암호화함

 

 
 

난수 및 의사 난수 생성기

  • 현재 사용되고 있는 대부분의 보안 프로토콜에서 사용
  • 사용 예시
    • 암호 알고리즘에서 각종 키 생성
    • 프로토콜에서 재전송 공격을 막기 위한 방법
  • 난수 : 예측 불가능성과 무작위성을 만족하며 생성된 수
    • 예측 불가능성 : 그동안 뭐가 나왔든 간에 앞으로 뭐가 나올지 모르는
    • 무작위성 : 모든 수가 나올 확률이 같은
  • 난수 알고리즘 : 입력이 항상 달라야 (보통 시간 값) 알고리즘에 따라 나오는 값이 다름
  • 의사 난수 스트림 (Pseudo Random Number Stream) : 예측 불가능성과 무작위성을 완벽하게 만족하지는 않고 수열이 반복되기는 하지만 (주기O) 충분히 수열이 길고 불규칙해 어느정도는 난수 성질을 만족하는 수열, 주로 무선 통신에 사용
    • Pseudo Random Number Generator : 의사 난수 스트림을 생성하는 알고리즘, 의사 난수 생성기

 

 
 

난수를 이용한 재전송 공격 방지 방법 예시

  • K : Alice와 Bob만 공유하고 있는 값
  • 난수를 사용하지 않았을 때, Replay Attack

  • 난수를 사용할 때 : 위의 상황 해결 가능

 

 
 

보안 위협 완화를 위한 암호 기술 사용 예시

  • 보안을 위해 사용되는 암호 기술
    • 대칭암호 / 공개키 암호
    • 일방향 해시함수
    • 메세지 인증 코드 / 디지털 서명
    • 의사 난수 생성기
  • 보안 위협을 완화시킬 전략
보안 위협 위협 받는 특성 방지를 위한 암호기술
도청 기밀성 대칭 암호 / 공개키 암호
메세지 변경 무결성 메세지 인증 코드 / 디지털 서명
(+ 대칭 암호 / 공개키 암호 / 일방향 해시 함수)
위장 인증 메세지 인증 코드 / 디지털 서명
(+ 대칭 암호 / 공개키 암호 / 일방향 해시 함수)
부인 부인 봉쇄 디지털 서명

 

 
 

스테가노그라피와 디지털 워터마킹

  • 스테가노그래피 (steganography)
    • 기밀성 중시할 때는 사용 X
    • 메세지 내용을 읽지 못하게 하는 것이 아니라, 메세지의 존재 자체를 숨기는 기법
    • 메세지를 숨겨 넣는 방법을 알게 되면 메세지 내용은 금방 노출
    • 예시 : 이합체시, 디지털워터마킹
  • 디지털 워터마킹
    • 저작권자를 확인할 수 있는 특정 마크를 삽입해 불법 복제를 방지하는 기술
    • 오디오, 비디오, 이미지 등 디지털 데이터에 특정 마크 삽입 가능
    • 불법 복제 시 소유권 정볼르 추적 가능
    • 워터마크 삽입 방법 : 공간 or 시간 or 주파수 영역에

 

 
 

암호와 보안 상식

  • 비밀 알고리즘을 사용하지 말 것
    • 테스트를 안해봐서 안전한지 모름
    • 대칭키 암호의 안전성은 키를 비밀로 함으로써 지켜지는 것
    • 암/복호화 알고리즘은 오히려 공개되는 것을 권장
  • 약한 암호화 알고리즘은 사용하지 말 것
    • 공격자가 암호문을, 혹은 평문과 암호문의 쌍을 갖고 있더라도 키를 알아내지 못하도록 해야 함
    • 강한 암호화 알고리즘 : AES, 3DES
  • 어떤 암호라도 언젠가는 해독된다
  • 암호는 보안의 아주 작은 부분이기 때문에 완벽한 보안을 위해서는 암호 기술 외에 다른 여러 가지 요소들도 고려해야 함 : 키&사람 관리, 알고리즘만 믿지 않기