일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- kaggle
- 에이블스쿨6기
- numpy
- 해외연수
- 자연어처리
- 코딩테스트
- YOLO
- Python
- KT에이블스쿨
- 부트캠프
- 딥러닝
- AI
- AIVEL
- keras
- Anaconda
- 미니프로젝트
- 한국외대
- 내일배움카드
- jupyter notebook
- KT AIVLE SCHOOL
- 내배카
- 에이블데이
- sklearn
- Aivle school
- AIVLE
- HUFS
- 에이블스쿨
- KT
- KT wiz
- pandas
- Today
- Total
Hyunn
컴퓨터네트워크 - 2탄(8장) 본문
「본 글은 '컴퓨터 네트워킹 - 하양식 접근'을 공부하고 재구성한 글입니다」
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에게 메시지를 전송하기 위해
- Bob의 공개키를 가져와 함호화한다.
- 전송한다.
- Bob은 Bob의 비밀키로 이를 복호화한다.
RSA알고리즘
- modular 연산의 성질
- {(a % n) + (b % n)} % n = (a - b) % n
- {(a % n) * (b % n)} % n = (a * b) % n
- {(a % n) * (a % n)} % n = a^2 % n
- 세 번째 성질로부터 (a % n)^d % n = a^d % n 임을 알 수 있다.
- RSA알고리즘 설계
- 두 개의 큰 소수 p, q를 설정한다. (p와 q는 서로소)
- n = pq, z = (p - 1)(q - 1)
- 1을 제외하고 z와 공통인수가 없는 n보다 작은 수 e를 선택한다. (e와 z는 서로소)
- ed - 1이 z로 나누어떨어지는 d를 선택한다. (ed % z = 1이 되어야 함)
- 공개키는 숫자쌍 (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를 공유해야 한다.
- 과정
- 메시지 m과 비밀키 s를 접합하여 m + s를 만듦. 이후 해시 H(m + s)를 계산한다.
- 확장메시지 (m ,H(m + s))를 전송한다.
- 수신자는 (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
- 자신이 누구인지 밝히기
- 수신자는 랜덤 수 R을 송신자에게 보냄(R은 한 번 사용하면 재사용하지 않는다).
- 송신자는 대칭 비밀키를 통해 R을 암호화 하고 이를 수신자에게 보낸다. 수신자도 대칭 비밀키를 알고 있으므로 올바른 송신자인지 확인이 가능하다.
- 받은 암호화된 메시지를 복호화해서 자신이 보낸 R과 비교한다.
8.5 전자우편의 보안
「본 글은 '컴퓨터 네트워킹 - 하양식 접근'을 공부하고 재구성한 글입니다」
'CS > Computer Networking' 카테고리의 다른 글
컴퓨터네트워크 - 1탄(1장) (0) | 2023.12.24 |
---|