일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 네이버 부스트캠프
- 데이터베이스
- 운영체제
- 애플 디벨로퍼 아카데미
- apple developer academy 후기
- 숭실대
- 애플 디벨로퍼 아카데미 후기
- 소프트웨어분석및설계
- 애플 아카데미 후기
- iOS 개발 오류
- SWIFT
- StateObject
- 네이버 치지직
- ObservableObject
- 제앱소
- swift문법
- OS
- 데이터베이스 공부
- Swift 디자인패턴
- 치지직
- Swift 문법
- 앱 비교 프로젝트
- Apple Developer Academy @ POSTECH
- 애플 디벨로퍼 아카데미 21주차 회고
- sqoop
- Swift 기능
- ObservedObject
- react
- global soop
- useReducer
- Today
- Total
사과하는 제라스
14강. 보안 기본 개념 본문
목차
- 네트워크 관련 보안 protocol, 보안이 적용된 네트워크 프로그래밍을 배울 것임.
1. 정보보호 기초
- 암호기법(cryptography)
: 과거 => 메시지의 기밀성(confidentiality)를 제공하기 위해 사용한 기술.
/ 현재 => 메시지를 공격자로부터 보호하기 위하여 메시지를 변화하는 기술.
Key(uniformly distributed random string)를 사용함. => 랜덤한 바이너리 값으로 매우 중요한 것임.
1) 암호화, 복호화 key = Symmetric key(대칭 키)
2) 공개된 key = Asymmetric key, Public key
- 암호학 관련 대표 용어
1) Plaintext(평문) : 암호화되기 전의 메시지
2) Encryption algorithm(암호화 알고리즘) : 평문을 암호화하는 알고리즘.
3) Secret key : 암호화 키. 암호화에 사용되는 키임.
4) Ciphertext(암호문) : 암호화된 후의 메시지.
5) Decryption algorithm(복호화 알고리즘) : Ciphertext를 복호화하는 알고리즘.
- k1과 k2가 같으면 대칭키, 다르면 공개키!
- 안전한 암호란? 평문에 대한 유추가 불가능한 암호문이 안전함.
ex) [비밀키가 공개 or 암호화 알고리즘이 취약하게 설계 or 암호문을 통해 평문을 유추 가능] => 이러면 안됨!
∴ 키를 잘 보관, 암호화 알고리즘을 안전한 것을 선택해야 함.
- 3대 정보보호 서비스 (NIST) - 미국 표준협회에서 정의한 개념임(일명 C.I.A)
1. 기밀성(Confidentiality) - 암호화 관련
2. 무결성(Integrity) - 데이터가 위조(훼손)되었는지 여부 확인
3. 가용성(Availability) - 시스템 사용에 있어서 원할 때 접근할 수 있는지 여부
ex) myclass.ssu.ac.kr에 있는 컨텐츠들이...
허용된 사람만 보게 접근제어(C)
올려둔 영상, 강의교안, 과제 결과물 등이 훼손X(I)
이 컨텐츠들을 원할 때 접근할 수 있어야 함(A)
=> 인증, 부인방지(전자 서명), 접근 제어를 제공함.
2. 암호학적 해쉬 함수(Cryptographic Hash Function)
: 메시지 무결성(I)을 제공할 수 있는 정보보호 솔루션
=> 무결성을 위해 원문을 암호화적 해쉬 함수를 통해 MDC(Modification Detection Code)를 만들어 사용.
ex) SHA(Secure Hash Algorithm)-1 => 국제 해쉬 함수 표준으로 output이 20byte로 고정되어 있음.
암호학적 해쉬 함수: h = H(M)
1) 임의의 크기의 데이터 M을 입력 값으로 넣을 수 있음.
2) 고정된 크기의 출력 값이 나옴. ex)SHA-1의 경우 20 bytes, SHA256의 경우 32bytes
3) H/W, S/W의 적용이 쉬워야 하므로 엄청 빠르고 출력값 계산이 용이한 함수임.
4) 공개된 함수이며, key가 사용되지 않음
5) key를 간혹 사용하는 경우 있음. h = H(k,M) -> MAC(Message Authentication Code) => 이런 건 무결성 + 인증까지 제공해줌.
- 다음 그림처럼 암호학적 해쉬 함수는 one-way function임.
- Avalanche effect가 있는 함수임(즉, 인풋이 한 비트만 달라도 아웃풋이 모두 다르다!)
- 대부분 SHA-256을 사용중, SHA-512는 많이 사용될 예정이고 SHA-1, SHA-224는 잘 사용 안하자는 주의임.
- MDC는 디지털 포렌식에서도 많이 쓰임.
- MAC은 key가 주어지기 때문에 key를 알고있는 사람만 해쉬함수를 돌려서 값을 얻을 수 있음.
=> key를 사용하기 때문에 안전한 채널로 보내지 않아도 문제없음.
3. 대칭키 암호 시스템(Symmetric Crypto System) => 기밀성을 제공하는 알고리즘
- AES 알고리즘 : 128bit(16bytes)로 쪼개서 각각을 암호화하는 방식의 알고리즘
- AES 구조 : 블록 운용 암호화
4. 공개키 암호 시스템(Public Crypto System) => 기밀성을 제공하는 공개키 암호화 기술, 인증을 제공하는 전자서명 기술.
=> 각 사람마다 한 쌍의 키(공개키, 개인키)를 갖고 있음.
공개키를 가지고서 개인키를 도출하는 것은 계산적으로 불가능함.
- 암호화 과정
=> A가 공개키와 그에 대한 개인키 만듦 - 공개키를 클라우드에 올려둠 - B가 A에게 전송할 메시지를 공개키로 해서 보냄 - 그걸 복호화할 수 있는 건 오직 A의 개인키임.
- 공개키가 느리다는 단점을 보완하기 위해 하이브리드 암호시스템을 쓰기도 함.
- 암호화 과정
=> A가 보내고자 하는 평문을 대칭키로 암호화 - A의 대칭키를 B의 공개키로 암호화 - 이 2개를 같이 보냄 - A의 대칭키를 B의 개인키로 복호화 - 복호화로 얻은 A의 대칭키로 암호화된 평문을 복호화
- One-way Function(일방향 함수) => 복호화가 어려움.
- Trapdoor One-way Function => 비밀키를 가진 자는 복호화가 가능함. (현재 많이 사용하는 함수임.)
- RSA 암호 : 가장 많이 사용되고 있는 공개키 암호시스템
- 전자서명
: 개인키로 암호화(서명)하고 공개키로 복호화(검증)하는 방식.
=> 전자서명의 경우 서명하는 개인키가 매우 클 수 있음.
∴해쉬함수로 원문을 쪼개어 해쉬하고 이를 통해 나온 작은 아웃풋 값을 개인키로 서명함.
이는 하이브리드 암호시스템에서 원문을 대칭키로 암호화, 대칭키를 공개키로 암호화하는 과정과 차이점이 존재.
5. 공개키 기반 구조(Public Key Infrastructure) => 공개키 암호 시스템을 위한구조.
=> 공개키를 모두 관리하는데에 안전성 문제가 생기고 과부하가 발생함.
∴인증서를 이용한 공개키 인증을 생각해냄.
=> A가 공개키, 개인키를 만듦 - 공개키를 CA(인증기관)으로 보내고 인증서를 받음 - B가 A에게 공개키 요청
- B에게 공개키, 인증서 제공 - 인증서를 CA의 공개키를 통해서 B꺼가 맞는지 확인 -OCSP 프로토콜로 유효한 인증성인지 확인
- 공개키 기반 구조(PKI 구조)는 우리나라는 계층적 구조임.
-> 이런 구조를 각 나라들끼리 Mesh Model로 국가간 상호 인증을 함.
인증서 과정 공부 다시 해야함 ㅠㅠㅠ
'대학 전공 공부 > 네트워크 프로그래밍' 카테고리의 다른 글
16. Basic OpenSSL (0) | 2022.06.08 |
---|---|
15. 네트워크 보안 (0) | 2022.06.08 |
13강. HTTP and Web Client (0) | 2022.05.13 |
12강. DNS (0) | 2022.05.13 |
11강. Error, IPv6 and Packet Socket (0) | 2022.05.12 |