참고한 것들
TLS 에서는 비대칭키만 사용하는 것 아녔음??
- 라고 알았다면, 뭔가 잘못된 것이다.
- TLS 통신에서의 암호화는 간략하게 설명하면 다음과 같이 이루어진다
- Client 가 대칭키를 생성할 시드값 (pre-master secret) 을 생성
- Client 가 인증서에 포함되어 있는 (비대칭) 공개키로 이것을 암호화 하여 Server 에게로 전송함
- Server 는 (인증서를 생성할 때 사용된, 공개키와 쌍을 이루는) 비대칭 개인키로 전송받은 것을 복호화 하여 시드값을 알아냄
- Client 와 Server 모두 이 시드값을 이용해 동일한 대칭키를 계산해냄
- 위의 과정을 거치면 Client 와 Server 에게 동일한 대칭키가 공유되었으므르, 이것을 이용해 본격적인 통신을 하며 데이터를 암복호화함
- 근데 왜? 비대칭키로도 암복호화가 가능한데 왜 대칭키로 통신을 할까?
그것을 알려드림
- 데이터 통신을 사용할 때 비대칭키를 사용하면 발생할 수 있는 문제가 두가지 있다고 한다.
1. 데이터의 크기
- 일단 비대칭키는 많은 데이터를 암복호화 할 용도로 설계되어 있지 않다.
- Modulus 보다 작은 크기의 데이터만 처리 가능하고, 만일 이것보다 클 경우 나눠서 처리해야 한다.
- 하지만 대칭키의 경우에는 거의 무한대 크기의 데이터도 처리가 가능하다고 한다.
2. 연산의 속도
- 비대칭키를 이용해 데이터를 암복호화하는 것은 대침키에서의 암복호화와 비교했을 때, 비용이 큰 연산이다.
- 대칭키의 경우에는 bitwise operation 정도의 간단하고 빠른 (심지어 HW 의 도움으로 더욱 가속이 가능한) 연산이 주가 되어 데이터를 암복호화 하지만,
- 비대칭키의 경우에는 다소 복잡한 연산들이 들어가기 때문