TLS??
user 가 key를 생성하고, 해당 key를 통해 데이터를 암호화한다.
서버에서는 user로 부터 해당 key와 암호화된 데이터를 전송하여, 서버는 해당 key로 복호화 한다.
근데 네트워크를 통해 key를 전송하다가 hacker가 key를 중간에 알아내버리면 큰일남.. 보안에 큰 문제가 생김
--> 따라서 symmetric key를 안전하게 서버에 전송하는게 중요함
어떻게?? 예를 들어 보자.
유저와 서버가 있고, 해커는 항상 모든 네트워크 패킷을 훔쳐본다고 하자.
1. server는 public key와 private key 2개를 발급 받음
그럼 저기 my-key.key, my-key.pem 같이 key가 public, private key가 생긴다.
2. user가 server에 접근 시, (https) 서버로부터 public key를 받는다
3. 서버의 public key로 symmetric key(pem2)를 암호화하여 전송한다.
이 때, 해커는 서버의 public key로 암호화 된 symmetric key(pem2)를 가지고 있으므로 서버의 private key가 유출되지 않는 한, symmetric key를 복호화할 수 없다.
4. 서버는 symmetric key를 복호화 하여 symmetric key를 통해 유저와 통신하면 된당.
5. 해커가 만약 server의 webpage를 복제하여 자신의 key로 user의 symmetric key를 가져오면..?
진짜 나쁜놈이 이러면 큰일난다 ㅠ
--> 따라서 이런것을 방지하기 위해 디지털 인증서를 통해 안전한 브라우저인지 확인한다.
가끔 사이트를 보면
요걸 Certificate Authority가 인증해준다.
인증 절차는 간단하게 다음과 같다.
1. 인증을 원하는 서버에서 CSR 생성
2. 정보 확인
3. CA에서 서명받고 certificate 받음
따라서 해커가 같은 cert를 받으려고 해도 2번에서 거절된다. (정확한 메커니즘을 모름 ㅠ.ㅠ) 그럼 요기서 두개가 궁금해진다.
--> CA가 착한애들인지 사용자(브라우저)는 어떻게 알지?
--> 가짜 CA한테 싸인받아서 가짜 cert를 받으면....?
=> CA를 어떻게 검증하냐!
이 문제는 각각의 CA 또한 각자 고유의 private, public key를 발급해서 CA의 public key가 browser에 있다고 한다. --> 따라서 CA의 validation 가능
만약 private server의 경우.. CA쓰기가 애매한경우..?
--> private CA를 운영!
PKI(Public Key Infrastructure)
1. admin user는 public, private key 생성 후, public key를 server에 전달
2. server는 내부 private CA에 인증서 서명 요청
3. CA는 private key로 CSR에 서명하여 cert를 응답 (이 떄 모든 유저는 CA의 public key를 소유)
4. 유저가 서버에 접근 시, 서버는 cert 전송
5. 유저는 CA의 public key로 서버 cert의 유효성 검사
6. cert 안의 서버 공개키로 사용자의 symmetric key를 서버에 전달(아까 맨처음 했던 asymmtric key)
7. 해당 symmetric key로 통신함 (user는 자신의 single symmetric key만 생성하면 됨)
--> trust가 estabilish되면 id, pw로 서버에 접근
?? 유저는 서버의 유효성을 검사할 수 있지만.. 서버는 유저의 유효성을 어떻게 검사하지?? (유저가 해커면 어캐)
--> 유저의 symmetric key의 pair key를 발급, CA에 같은 방법으로 cert 받고 서버에 전달하면 끝
*** 출처
CA 위키백과: en.wikipedia.org/wiki/Certificate_authority#Industry_organizations
TLS basic : udemy www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
마지막꺼 그림은 쪼까 복잡하다.. 빠른 시일내 그려야게떠ㅏ
CKAD 딸라고 강의 듣는데 쫌 복잡하다... ^)^ 3월까지는 따야게따
'kubernetes' 카테고리의 다른 글
[kubernetes] Authorization, cluster role (0) | 2021.02.18 |
---|---|
[Kubernetes] kubeconfig (0) | 2021.02.18 |