HTTPS-핸드쉐이킹, 인증서 및 키 협약
둘째, HTTPS 프로토콜 수준
SSL 및 TLS 는 데이터 보안 통신을 지원합니다.
셋째, HTTPS 의 디자인 아이디어
1. 서버는 공개 키 쌍 a 를 생성하고 공개 키 및 기타 정보 info 를 CA 요청 인증서에 보냅니다.
2.CA 조직에는 자체 공개 키 쌍 세트가 있습니다. CA 조직은 정보로부터 디지털 다이제스트를 생성하고 개인 키로 다이제스트를 암호화합니다. CA 조직은 공개 키를 저장하는 운영 체제에 인증서 세트를 가지고 있습니다.
3.CA 는 서버에 정보와 암호화된 디지털 다이제스트를 보내 인증서를 생성합니다.
4, 서버
Https 웹 사이트를 방문할 때 브라우저는 먼저 인증서가 취소되었는지 확인합니다. 인증서가 취소되면 "해당 조직의 인증서가 취소되었습니다. 보안 인증서 문제는 누군가가 당신을 속이거나 서버로 보낸 데이터를 가로채려고 시도했음을 나타낼 수 있습니다. 이 페이지를 닫고 이 사이트를 계속 방문하지 않는 것이 좋습니다. "
5.2 신뢰 체인
CA 의 조직 구조는 트리 구조입니다. 하나의 루트 CA 아래에 여러 개의 midca 가 있고, midca 에는 여러 개의 midca 가 포함될 수 있습니다.
루트 CA 와 mid CA 모두 루트 인증서와 중간 인증서 모두 사용자에게 인증서를 발급할 수 있습니다. 일반 사용자가 공개 키를 확인하는 데 사용하는 인증서를 최종 사용자 인증서라고 합니다.
최종 사용자 인증서가 mid CA 에서 발급된 경우 핸드쉐이크 단계 중 중간 인증서를 클라이언트에 보내야 합니다.
인증서 체인 검증 프로세스:
여섯째, 키 협상 과정
TLS 핸드쉐이킹 단계에서 쌍방이 사용하는 암호 키트를 확인합니다.
(키 협약, 인증서 인증 및 데이터 암호화는 세 가지 개별 프로세스입니다.)
예를 들면 다음과 같습니다.
TLS _ DHE _ RSA _ 벨트 _ AES_256_CBC_SHA
DHE_RSA: 핸드쉐이크 중 사용되는 비대칭 암호화 알고리즘 (키 교환용 DHE, 인증서용 RSA) 을 나타냅니다. 단 하나만 있는 경우 동일한 알고리즘을 사용하여 정보와 인증서를 교환한다는 의미입니다.
(옵션 키 교환 알고리즘으로는 RSA, DH, ECDH, ECDHE 등이 있습니다. 기본 인증서 알고리즘 (옵션) 은 RSA, DSA, ECDSA 입니다. 둘 다 독립적으로 선택할 수 있으며 충돌하지 않습니다.)
AES_256_CBC_SHA: 암호화된 채널에 대한 대칭 암호화 및 해시 알고리즘입니다.
-응?
일곱, 키 교환 알고리즘
악수하는 동안 쌍방은 키 교환 알고리즘을 통해 후속 통신의 키를 결정합니다.
일반적인 키 교환 알고리즘인 RSA 및 DH 키 교환 알고리즘입니다.
7. 1, RSA 키 교환 절차:
A-> B
B: 공개 키를 인증서에 넣습니다.
A: 난수 알고리즘을 사용하여 키를 생성하고 공개 키 암호화를 사용하여 b 로 보냅니다.
RSA 가 직면한 문제: 개인 키가 노출되면 (개인 키가 협상 과정에 참여) 개인 키가 이전에 수신한 모든 암호문 (전방향 안전하지 않음) 을 암호 해독할 수 있습니다. 보안은 개인 키의 보존 여부에 따라 달라집니다.
7.2 보다 안전한 DH 클래스 키 교환 알고리즘.
DH 키 알고리즘은 DH, DHE, ECDH, ECDHE 입니다.
DH (정적 DH 알고리즘, 키 교환은 항상 동일한 개인 키를 선택하므로 각 개인 키는 동일합니다.)
DHE (임시 DH 알고리즘) 는 연결당 임시 DH 키를 생성하므로 동일한 키가 두 번 사용되지 않습니다. 전방향 기밀 유지)
7.3.DHE 키 교환 알고리즘에 대한 간단한 설명 (이산 로그 문제 기반):
A-> B
A: 난수 x (자신의 개인 키로) 를 생성합니다. 여기서 a = g x mod p(g 의 x 제곱 모델 p) 입니다. 여기서 p 는 큰 소수, g 는 생수, a 는 b 로 전송됩니다.
B: 난수 y 생성 (개인 키로 사용), B = g y mod p, b 를 a 로 전송 .....
A: 계산 키1= b x mod p.
B: 계산 키 2 = a y mod p.
수리논리에 따르면 키1= 키 2 로 키 교환이 성공했습니다.
DHE 의 보안은 A, B, P, G 만 전송하며 중간에 개인 키 X 와 Y 가 없습니다. 이 네 개의 숫자가 알려진 경우 X 와 Y (이산성에 따라 다름) 를 구분하기가 어렵기 때문에 보안이 보장됩니다.
DH 키 계산 예:
G = 10, p = 7, x = 3, a = 6, Y = 1 1, B = 5 라고 가정합니다.
키1= ((g x) mod p) y 모듈 p = (10 3) mod 7)/kloc-0
키 2 = ((g y) mod p) x 모듈 p = (1011) mod 7)
7.4 타원 이산 로그 문제에 기반한 키 교환 알고리즘
ECDHE 의 연산은 DHE 의 모듈러 파워 연산을 포인트 곱셈으로 대체하며, 속도가 더 빠르고 뒤집기가 더 어렵습니다.
A-> B
A: 난수 ra 를 생성하여 Pa(x, y) = Ra * Q(x, Y), Q(x, Y) 는 전 세계적으로 인정받는 타원 곡선 알고리즘의 기준점입니다. 서버에 Pa(x, y) 를 보냅니다.
B: Pb(x, y) = Rb * q (x, y) 로 계산된 임의 값 Rb 를 생성합니다. Pb(x, y) 를 클라이언트로 보냅니다.
A: 계산 Sa(x, y) = Ra * Pb(x, y).
B: 계산 Sb(x, y) = Rb * Pa(x, y).
알고리즘은 Sa =Sb = S 를 보장하고 S 의 X 벡터를 키 (사전 마스터 키) 로 추출합니다.