Https, dns
HTTPS란
HTTPS(HyperText Transfer Protocal Secure)는 HTTP protocal의 암호화된 버전이다. 이것은 대개 클라이언트와 서버간의 모든 커뮤니케이션을 암호화 하기 위하여 SSL 또는 TLS을 사용한다. 이 보안 연결은 클라이언트가 민감한 정보를 서버와 안전하게 주고받도록 해준다.
출처 : https://developer.mozilla.org/ko/docs/Glossary/HTTPS
SSL/TLS란
| SSL | TLS |
|---|---|
| SSL은 보안 소켓 계층의 약자입니다, | TLS는 전송 계층 보안의 약자입니다. |
| SSL 1.0, SSL 2.0, SSL 3.0 | TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3 |
| 모든 버전의 SSL에서 취약점이 발견되어 모두 사용 중단되었다. | 대부분의 경우 TLS 1.2 가 사용된다. |
| 웹 서버와 클라이언트는 명시적 연결을 사용하는 암호화 프로토콜인 SSL을 사용하여 안전하게 통신한다. | TLS를 사용하면 윕 서버와 클라이언트는 암시적 연결을 통해 안전하게 통신 할 수 있다. TLS가 SSL을 대체했다. |
출처 : https://aws.amazon.com/ko/compare/the-difference-between-ssl-and-tls/
HTTPS 암호화 과정에 대해 설명해주세요(SSL Handshake의 동작 과정을 설명해 주세요.)
public-private Key Pair로 symmetric key를 생성한다는게 포인트
동작방식
- 브라우저가 최초 요청시
서버의 공개키와개인키중공개키가 브라우저에 전달됨 브라우저의 개인키를 서버에서 넘어온공개키가 암호화하여 서버로 전달함- 서버에서는 넘어온
브라우저의 개인키를서버의 개인키로 복호화하여 서버에 저장한다. - 종합적으로 키는 다음과 같이 존재한다.
브라우저에는서버의 공개키,브라우저의 개인키가 존재서버에는서버의 공개키,개인키,브라우저의 개인키가 존재함
- 브라우저는
서버의 공개키와브라우저의 개인키로symmetric key를 만든다. - 서버는
서버의 공개키와 넘어온브라우저의 개인키로symmetric key를 만들어 요청이 들어오면 해당 키를 비교하여 동일한지 확인한다.
위와 같이 키를 비교하는 방식으로는 중간자 공격1을 방어하지 못한다.
3rd party certificate를 사용하여 서버에 인증서를 저장하는데 해당 인증서는 브라우저에서 요청이 올때 공개키와 함께 서버에서 브라우저로 전달된다. 브라우저는 헤당 인증서를 확인하여 현재 접속한 사이트가 신뢰할 수있는 사이트인지 확인한다.
출처 : https://www.youtube.com/watch?v=kBlQiwXSx8A&t=1s
대칭 키와 비대칭 키의 차이가 무엇인가요?
대칭키
어떤 정보를 암호화, 복호화 할 때 사용하는 키가 동일한 경우 대칭키라고 한다. 어떠한 정보가 대칭키를 통해 암호화 되엉ㅆ다면, 똑같은 키를 갖고 있는 사용자가 아니면 해당 정보를 확인 할 수 없다. 따라서 암호화 된 정보를 전달하고 확인하기 위해서는 송, 수신자 둘 다 똑같은 키를 가지고 있어야 한다.
단점 : 탈취시 누구나 열어볼 수 있다.
비대칭키
어떤 정보를 암호화, 복호화 할 때 사용하는 키가 서로 다른 경우 비대칭키라고 한다. 비대칭키를 활용한 암호화에는 개인키와 공개키 두가지가 사용된다. 또한 대칭키를 활용한 암호화는 개인키로 암호화하는 방식과 공개키로 암호화하는 방식 두가지가 있다.
- 상대방의 공개키를 통헤 암호화, 상대방이 개인키를 통한 복호화
- 정보 자체에 대한 암호화가 필요 할 때 사용
- 자신의 개인키를 통한 암호화, 자신의 공개키를 통한 복호화
- 정보를 생산(송신)한 사람의 신원에 대한 정보가 필요할 때 사용
출처 : https://universitytomorrow.com/22
DNS가 뭔가요?
도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환시켜주는 것이다.
DNS 작동 방식에 대해 설명해주세요.
- 사용자가 브라우저에서 https://www.google.com에 엑세스
- DNS 서버로 DNS 쿼리를 전송
- DNS 서버로부터 해당하는 IP를 받음
- IP를 이용하여 google 서버 호촐
- goolge 웹서버로부터 HTTPS 리스폰스
DNS 질의 종류에 대해 설명해주세요.
재귀적 (Recursive Queries, 재귀 질의)
- 질의된 도메인에 대해 즉각 응답하거나, 다른 서버에게 질의한 결과로 응답하거나, 찾고 있는 정보가 없다는 에러 메시지를 보내줌
- 가장 단순한 DNS 쿼리 유형
반복적 (Iterative Queries, 반복 질의)
- 질의된 도메인에 대해 응답하거나, 아니면 이 작업을 할 수 있는 다른 DNS 서버에 클라이언트를 연결 시켜 주는 작업
- 자신이 관리하지 않는 알 수 없는 질의에 대해 응답 가능한 네임서버 목록 전달
결국, 클라이언트는 다수의 DNS 서버들에게 같은 질의를 반복할 수 있게됨
- 재귀질의 및 반복질의 선택은, DNS 해석기가 이를 요청할 때 스스로 선택 결정하여 DNS 헤더 내 플래그 필드에 그 표식을 함
DNS 서버에게 IP 주소를 요청할 때, 왜 UDP를 사용하나요?
DNS는 이름 결정(name resolution)2과 존 전송(zone transfer)3이라는 2개 구조를 제공한다. 이 2개 구조는 역할이나 기능, 사용하는 레이어4 프로토콜(Transfer) 등 모든 점에서 크게 다르다. 이름 결정은 웹 엑세스나 메일 전송 등 애플리케이션 통신에 앞서 수행된다. 이 처리에 시간이 걸리면 그 이후의 애플리케이션 통신도 점점 지연된다. 그래서 이름 결정은 UDP(포트 53)를 사용해 처리 속도를 우선한다.
DNS 레코드가 무엇인가요?
하나의 존 파일로 관리하는 도메인 이름의 범위를 존(Zone)이라고 부른다. 존 파일은 여러 종류의 리소스 레코드로 구성되어 있으며, 그 안에 모든 존이 들어있다. 권위 서버4는 존 파일의 정보에 기반해 반복 쿼리에 응답한다.