컴퓨터 네트워크 - Network Security: Confidentiality(대칭 키/비대칭 키), Message Integrity, End-Point Authentication

5 분 소요


K-MOOC에서 부산대학교 유영환 교수님의 “컴퓨터 네트워킹” 강의를 수강하며 적은 노트


Network Security

안전한 통신에 필요한 성질

  • confidentiality: 내용의 기밀성, 송신자와 송신자가 의도한 수신자만이 내용을 이해
    • 중간에 패킷을 가로채도 알 수 없어야 함
    • 보내는 사람이 암호화해서 수신자가 decrypt(복구)
  • message integrity: 송신자나 수신자가 메시지가 변하지 않았다는 것을 믿을 수 있음
  • end-point authentication: 송신자와 수신자가 정말 맞는지 확신할 수 있음
  • operational security: 운영 상의 보안
    • 시스템에 대한 접근이나 사용 권한은 믿을 수 있는 사용자에게만 허용함

용어

  • 안전한 통신을 요구하는 주체 Alice, Bob
    • 실제 두 사용자들
    • 전자 상거래나 인터넷 뱅킹, DNS의 클라이언트와 서버
    • OSPF와 같은 라우팅 프로토콜에서 Routing advertisement message를 주고받는 라우터들
  • 통신을 방해하는 공격자 Trudy
    • Eavesdrop: 엿듣기
    • 허위 메시지 추가
    • IP 주소 등 헤더 정보를 바꿔 다른 주체인 척
    • hijacking: 중간에 가로채기, 또는 대신에 다른 정보를 넣기
    • denial of service: 서버에 많은 허위 메시지 보내기




Cryptography Principles

용어

  • 플레인텍스트(plaintext): 암호화되기 전의 일반적인 메시지
  • 사이퍼텍스트(ciphertext): 플레인텍스트에 encryption(암호화) 알고리즘으로 암호화를 한 암호문
    • 실제 통신 채널을 통해서 전달되는 메시지
    • decryption(복호화) 알고리즘을 통해 수신자가 플레인텍스트를 다시 제작
  • 평문 메시지 m에 Alice가 비밀 키 KA를 통해 암호화, Bob은 KB로 복호화

ex) substitution cipher: 치환

  • 초창기 알고리즘
  • 각 문자를 다른 문자로 mapping
  • 각 문자는 빈도수가 다르기 때문에 그 빈도수로 추정하기 쉬움

symmetric key cryptosystem: 대칭 키, 하나의 키를 암호화할 때와 복호화할 때 똑같이 사용

  • secret key system: 키는 반드시 두 사용자만 알고 있어야 함
  • substitution cipher는 대칭 키의 예 중 하나
  • 비밀 키를 온라인으로 주고받는 것 자체가 탈취될 수 있으므로, 먼저 해결이 되어야 함
  • DES(Data Encryption Standard): 56 bit의 symmetric key
    1. 평문을 64 bit 블록 단위로 나누고 규칙에 따라 순서를 섞음
    2. 라운드 1~16까지 라운드마다 다른 56 bit 키 입력
      • 56 bit를 7 bit씩 나눔: 1의 개수를 맞추기 위해 각 8번째 bit는 parity bit
      • permuted choice 표에 따라 비트를 섞어 키를 바꾸고 반으로 나누어 left half 28 bit, right half 28 bit 선택(parity bit는 사용 x)
      • binary 로테이션으로 매 라운드마다 몇 비트씩 left shift하고 또 permutation으로 총 48 bit 길이의 키를 생성 - 키를 모르는 상태에서 원문을 찾아내는 데에 당시 컴퓨팅 파워로는 굉장히 오래 걸림, 하지만 키를 찾아낸 뒤부터는 메시지를 쉽게 번역 - 3DES(Triple DES): 서로 다른 세 개의 키로 메시지를 세 번 암호화
  • AES(Advanced Encryption Standard): 128, 192, 256 비트 길이 등의 블록 단위로 암호화
    • brute force로 키를 찾는다고 가정하면 DES가 1초면 AES는 149조 년 걸림
    • 키에 대해 정보를 알고 있는 경우 시간이 많이 줄어들 수 있으나, DES에 비하면 훨씬 안전하다고 평가받아 많이 쓰임

asymmetric key cryptosystem: 비대칭 키, 어떤 하나의 원리에서 만들어진 한 쌍의 키를 암호화와 복호화에 각각 사용

  • public key system: 두 키 중 하나는 공개키
  • symmetric key는 비밀 키를 미리 공유해야 하는 문제
    1. Alice는 자신의 평문 m을 전달할 때 Bob의 퍼블릭 키로 암호화. $K_B+(m)$
    2. Bob은 해당 메시지를 자신의 프라이빗 키를 적용
  • 즉 공개키로 누구나 암호화 가능하고, 그 메시지는 프라이빗 키로만 복원 가능해야 함
  • RSA
    • $P_U$: 퍼블릭 키, $P_R$: 프라이빗 키
    • ex)
      1. Bob의 $P_U$: (7, 187)
      2. Alice는 평문 m 88을 보내고 싶음: $88^7 \% 187 = 11$을 전송
      3. Bob의 PR: (23, 187)
      4. 복호화: $11^{23} \% 187 = 88$
        • 2개의 매우 큰 소수 p, q를 찾음(1024 bit 이상)
        • $pq = n$, $(p-1)(q-1) = z$ 구함
        • 퍼블릭 키로 사용할 e(encryption)와 프라이빗 키 d(decryption)를 만듦
        • z와 서로소인 소수 2개를 찾음 - 퍼블릭 키는 (n, e), 프라이빗 키는 (n, d) - 즉 $P_U$(n, e)를 사용해 $m^e\%n = c$를 전달하고, c를 받으면 $c^d\%n = m$을 복구
    • p, q를 유의미한 시간 안에 알아내기 매우 어려우므로 안전성 있음
    • 소인수분해를 매우 잘하는 양자 컴퓨터가 상용화되면 안전하지는 않게 될 것임

RSA와 DES

  • RSA 쪽이 안전성은 좋지만, 연산이 DES에 비해 많이 필요
    • DES는 RSA의 100배 이상 빠름
  • RSA를 통해 암호화를 해서 DES의 공통 비밀 키를 주고받을 수 있음




Message Integrity

DES, RSA 알고리즘은 메시지 내용 자체를 감출 수 있기 때문에 기밀성(confidentiality) 제공

message integrity(메시지 무결성): 송신자가 처음에 전달한 형태 그대로 수신자에게 도착 보장

  • 2가지 필요
    • 메시지가 진짜 Alice가 보낸 것임을 보장
    • 메시지가 전달되는 과정에서 내용이 바뀌지 않았음을 보장
  • message digest(메시지 요약): 긴 메시지에서 어떤 fixed-length의 짧은 요약
    • 만약 confidentiality가 제공되어 전체 메시지가 다 암호화되어 내용 자체를 중간의 누군가가 볼 수 없다면 message integrity가 제공될 것임
      • 연산이 오래 걸림
    • 그러나 message integrity의 목적은 공개되어도 상관없지만 바뀌지 않았다는 것만 보장하면 됨
    • CRC와 비슷하게, 전체를 다 암호화 X
    • 주로 hash 함수 사용
      • 메시지를 요약한 것이므로 같은 해시가 나올 수도 있지만, 어떤 Trudy가 자신이 노리는 특정 부분을 바꾸었을 때 동일한 해시가 나올 확률은 매우 낮음
      • 주로 MD5, SHA-1 사용
    • 전체 메시지를 해시 함수를 통해 암호화를 적용함으로써 message integrity 보장

대칭 키 방식

  • MAC(message authentication code)
    • ver. 1
      1. Alice는 전체 메시지 m에 해시 함수를 적용해 H(m)의 짧은 메시지 제작
      2. m과 H(m)을 수신한 Bob은 동일한 해시 함수로 요약본과 원본 메시지 비교
        • 그러나 Trudy가 Alice와 Bob이 사용하는 해시 함수를 알고 있다면 가짜 메시지를 만들어서 요약본도 가짜로 생성해서 보낼 수 있음
    • ver. 2
      1. Alice와 Bob이 공통된 인증 키 s를 가짐
      2. Alice가 m에 s를 더한 것에 해시 함수를 적용해 메시지 다이제스트 제작
        • Trudy는 s를 모르기 때문에 m+s로 가짜 메시지 다이제스트를 제작할 수 없음

비대칭 키 방식

  • 전자 서명
    • RSA는 개인 키와 공개 키가 한 번씩만 적용이 된다면 어떤 순서로 적용되어도 상관없이 똑같이 하나의 메시지 m을 만들어 낼 수 있음
      1. Bob이 전체 메시지 m으로 메시지 다이제스트 H(m) 제작
      2. 다이제스트를 개인 키로 암호화한 것을 m과 함께 Alice에 전달
      3. Alice는 받은 평문 m으로 H(m) 제작
      4. H(m)을 Bob의 공개 키로 복호화하여 둘을 비교
  • Bob은 원래 메시지 m으로 만든 메시지 다이제스트에 자신의 개인 키를 적용했기 때문에, Bob만이 암호화를 서명할 수 있다는 것이 증명됨




End-Point Authentication

End-point authentication: 하나의 통신 개체가 다른 개체에게 온라인 상에서 자신의 신분을 증명할 수 있는 인증

  • 패스워드 전달
    1. Alice가 자신의 패스워드를 전달
    2. 그 패스워드가 Bob이 알고 있는 패스워드와 같다면 Alice임이 증명
      • Playback attack(replay attack, 재생 공격)
      • Trudy가 이전에 Alice가 다른 주체에 보낸 메시지를 탈취해서 캡쳐해 놓음
      • 패스워드가 무엇인지는 모르지만, 그냥 전체 내용을 복사해 뒀다가 Bob에게 전달해도 Bob은 Alice가 보낸 것으로 착각
      • Alice의 패스워드를 암호화해도 상관없음
        • Trudy는 패스워드 상관없이 메시지를 통째로 저장하고 전달하는 것
        • 또, 계속 동일한 시크릿 키가 사용되면 encrypted된 내용이 같으므로 Trudy가 Alice처럼 행세할 수도 있음
          • Nonce
            1. 서버가 임의로 알아내기 힘든 굉장히 큰 랜덤 넘버 R 부여
            2. R을 시크릿 키로 암호화해서 전송, 수신자는 암호화된 R 값 확인
      • 매번 접속할 때마다 다른 R을 부여하므로 playback attack 방지
      • Alice와 Bob은 secret 키를 공유하고 있어야 함 -> 퍼블릭 키 알고리즘 사용
        • Bob이 R을 주면 Alice는 자기 비밀 키로 암호화
        • Bob은 Alice의 퍼블릭 키 적용하여 확인
      • man-in-the-middle-attack
        • Bob은 공개키를 모를 경우 Alice에게 요청해야 함
        • Trudy가 메시지를 가로 채서 Alice인 척 하고 Bob에게 자신의 비밀 키로 암호화해서 전송하고, 자신의 퍼블릭 키를 가르쳐 줌
      • certification authority(인증 기관)
        • 인증 기관을 거쳐 공개키를 인증 기관의 비밀키로 암호화해서 외부에 공개


태그:

카테고리:

업데이트:

댓글남기기