Hyunn

컴퓨터네트워크 - 2탄(8장) 본문

CS/Computer Networking

컴퓨터네트워크 - 2탄(8장)

Ravié 2024. 1. 6. 20:12
728x90
반응형

「본 글은 '컴퓨터 네트워킹 - 하양식 접근'을 공부하고 재구성한 글입니다」

8.1 네트워크 보안이란?

- 기말성(Confidentiality): 송신자와 지정된 수신자만이 메시지를 이해할 수 있어야 한다 -> 암호화

- 메시지 무결성(Message integrity): 메시지가 전송 중에 변경되어서는 안된다.

- 종단간 인증(Authentication): 송신자와 수신자는 실제 통신에 참여하고 있는 상대방이 누군지 확인하기 위해 상대방의 신원을 확인할 수 있어야 한다.

 

-침입자가 할 수 있는 활동: 엿듣기 , 메시지 내용 조작, 삽입, 삭제

 

8.2 암호화 원리

- 평문(=원문): 보내려는 메시지

- 암호문(Ciphertext): 암호화 알고리즘을 사용해 만든 메시지

 

8.2.1 대칭키 암호화

블록 암호화: 메시지가 k비트의 블록 단위로 암호화 됨

 

- 문제점: 같은 입력 block에 대해서 같은 출력 값이 나온다!! --> 이를테면 영어에서 알파벳의 사용빈도 통계에 따라 어느정도 암호화 분석이 가능하다.

 

암호블록체이닝(CBC)

 

- 문제점: 전송 데이터가 2배 증가한다. 따라서 CBC알고리즘이 등장한 것이다.

- CBC(Cipher Block Chaining): 첫 번째 메시지와 함께 랜덤 비트를 단 한 번만 전송. 이후의 랜덤 비트는 직전에 계산된 블록을 대신 사용

1) 메시지 암호화 전, 임의의 k비트 열을 생성(=초기화 벡터)해 수신자에게 보낸다. 이 초기화 벡터는 C(0)이다.

2) 첫 블록에 대해 송신자는 m(1) xor C(0)을 계산한다. 이후 암호문 블록을 얻는다. 즉, C(1) = Ks(m(1) xor C(0)). 이후, 수신자에게 전송한다.

3) i번째 블록에 대해 송신자는 Ks(m(i) xor C(i-1))을 수행한다.

 

8.2.2 공개키 암호화

 

- Alice가 Bob에게 메시지를 전송하기 위해

  1. Bob의 공개키를 가져와 함호화한다.
  2. 전송한다.
  3. Bob은 Bob의 비밀키로 이를 복호화한다.

 

RSA알고리즘

- modular 연산의 성질

  1. {(a % n) + (b % n)} % n = (a - b) % n
  2. {(a % n) * (b % n)} % n = (a * b) % n
  3. {(a % n) * (a % n)} % n = a^2 % n
  4. 세 번째 성질로부터 (a % n)^d % n = a^d % n 임을 알 수 있다.

 

- RSA알고리즘 설계

  1. 두 개의 큰 소수 p, q를 설정한다. (p와 q는 서로소)
  2. n = pq, z = (p - 1)(q - 1)
  3. 1을 제외하고 z와 공통인수가 없는 n보다 작은 수 e를 선택한다. (e와 z는 서로소)
  4. ed - 1이 z로 나누어떨어지는 d를 선택한다. (ed % z = 1이 되어야 함)
  5. 공개키는 숫자쌍 (n, e) 비밀키는 숫자쌍 (n, d)이다.

 

- 암호화, 복호화 하기

1) 암호화 과정: 전송하려는 비트의 십진수: m ( m < n)

                          c = m^e % n을 계산하고 c값이 전송된다.

 

2) 복호화 과정: 수신된 c를 계산한다.(개인키인 (n, d)가 필요)

                         m = c^d % n

 

세션키(Session Key)

- 데이터 암호화에 사용된 키(Ks)

- RSA는 대칭키 암호화와 함께 사용된다.

- 세션키는 공유되어야 하므로 세션키를 보낼 때 RSA알고리즘을 사용한다.

 

8.3 메시지 무결성과 전자서명

8.3.1 암호화 해시 함수

- H(x) = H(y) 가 되는 서로다른 두 메시지 x, y를 찾는 것은 불가능하다. (H가 해시함수를 의미)

8.3.2 메시지 인증 코드

- 메시지 무결성을 위해서 비밀키 s를 공유해야 한다.

- 과정

  1. 메시지 m과 비밀키 s를 접합하여 m + s를 만듦. 이후 해시 H(m + s)를 계산한다.
  2. 확장메시지 (m ,H(m + s))를 전송한다.
  3. 수신자는 (m, h)를 받고, 이미 알고있는 s를 이용해 H(m + s)계산 후 이 둘을 비교한다.

8.3.3 전자서명(Digital Signification)

 

8.4 종단간 인증(End-point Authentication)

- 종단간 인증이란? 하나의 통신 개체가 다른 개체에게 자신의 신원을 컴퓨터 네트워크 상에서 증명하는 작업

8.4.1 인증 프로토콜 ap 1.0

- 자신이 누구인지 밝히는 방법

- 이는 너무 허술한 방법이다. 가령, Trudy가 Alice라고 거짓말을 할 수도 있다!

8.4.2 인증 프로토콜 ap2.0

- 자신이 누구인지 밝히기 + IP주소 보내기

- 이는 IP Spddfing을 통해 조작 가능하다.

8.4.3 인증 프로토콜 ap3.0

- 자신이 누구인지 밝히기 + 자신의 비밀번호 말하기

- Sniffing을 통해 비밀번호 도청이 가능하다.

8.4.4 인증 프로토콜 ap3.1

  1. 자신이 누구인지 밝히기
  2. 수신자는 랜덤 수 R을 송신자에게 보냄(R은 한 번 사용하면 재사용하지 않는다).
  3. 송신자는 대칭 비밀키를 통해 R을 암호화 하고 이를 수신자에게 보낸다. 수신자도 대칭 비밀키를 알고 있으므로 올바른 송신자인지 확인이 가능하다.
  4. 받은 암호화된 메시지를 복호화해서 자신이 보낸 R과 비교한다.

8.5 전자우편의 보안

 

「본 글은 '컴퓨터 네트워킹 - 하양식 접근'을 공부하고 재구성한 글입니다」

728x90
반응형

'CS > Computer Networking' 카테고리의 다른 글

컴퓨터네트워크 - 1탄(1장)  (0) 2023.12.24