나는 tls-crypt를 읽고 있었고 보안을 강화하고 핸드셰이크 중에 키가 손상될 가능성을 줄이고 tls-auth보다 더 나은 보안을 제공하는지 궁금했습니다.
누군가 tls-auth 및 tls-crypt와 보안 향상 방법을 더 잘 설명할 수 있을까요?
내 현재 클라이언트 파일:
client
tls-client
dev tun
proto udp
remote 1.2.3.4 9999
<ca>
</ca>
<cert>
</cert>
<key>
</key>
pull
auth-nocache
cipher AES-256-CBC
keysize 256
compress lz4-v2
reneg-sec 36000
keepalive 30 120
답변1
TLS 핸드셰이크는 대략 다음 단계로 나눌 수 있습니다.
- 클라이언트는 클라이언트의 임의 값 및 지원되는 암호 제품군과 함께 "클라이언트 안녕하세요"를 서버에 보냅니다.
- 서버는 서버의 임의 값 및 선택한 암호 제품군과 함께 "서버 안녕하세요"를 클라이언트에 응답합니다.
- 서버는 인증을 위해 클라이언트에 인증서를 보냅니다.
- 클라이언트는 서버 ID를 확인합니다.
- 클라이언트는 임의의 사전 마스터 비밀을 생성하고 서버 인증서의 공개 키로 암호화합니다.
- 클라이언트는 암호화된 사전 마스터 비밀을 서버로 보냅니다.
- 서버는 필요한 경우 클라이언트로부터 인증서를 요청할 수 있습니다.
- 서버와 클라이언트 모두 사전 마스터 비밀을 기반으로 세션 키를 생성합니다.
- 이제 서버와 클라이언트는 세션 키를 사용하여 암호화된 메시지를 교환할 수 있습니다.
tls-auth와 tls-crypt의 차이점은 1단계부터 tls-crypt가 사전 공유 키를 사용하여 모든 메시지를 암호화한다는 것입니다.
이는 다음과 같은 몇 가지 이점을 제공합니다.
- OpenVPN 서버와의 TLS 핸드셰이크 초기화를 숨깁니다. 이는 OpenVPN 프로토콜 서명이 감지되어 차단되는 일부 상황에서 유용합니다.
- TLS 서비스 거부 공격을 방지합니다. tls-auth를 사용하면 공격자는 수천 개의 TLS 연결을 동시에 열 수 있지만 유효한 인증서를 제공하지 않아 사용 가능한 포트를 방해할 수 있습니다. tls-crypt를 사용하면 서버는 1단계에서 연결을 미리 거부합니다.
- 데이터는 tls-crypt로 한 번, TLS 세션으로 한 번, 총 두 번 암호화됩니다.