Skip to content

网络安全

网络安全是保护网络通信免受窃听、篡改、冒充的机制。网络安全涉及加密、认证、密钥交换、证书管理等技术。

对称加密

对称加密使用相同的密钥加密和解密,算法简单、速度快。

对称加密算法

AES(Advanced Encryption Standard):最常用的对称加密算法,支持 128、192、256 位密钥。AES 是分组加密,分组长度 128 位,支持 ECB、CBC、CFB、OFB、CTR 等模式。

ChaCha20:Google 开发的流加密算法,性能好,适合移动设备。ChaCha20-Poly1305 是 AEAD(Authenticated Encryption with Associated Data)算法,同时提供加密和认证。

对称加密的问题

密钥分发:如何安全地交换密钥?密钥在网络上传输,可能被窃听。

密钥管理:多个通信对需要多个密钥,密钥管理复杂。

非对称加密

非对称加密使用公钥加密、私钥解密,或私钥签名、公钥验证。

非对称加密算法

RSA:基于大整数分解难题,密钥长度 1024、2048、4096 位。RSA 速度慢,不适合加密大量数据,通常用于加密对称密钥。

ECC(Elliptic Curve Cryptography):基于椭圆曲线离散对数难题,密钥长度 256、384、521 位。ECC 比 RSA 强度更高、密钥更短、速度更快。

非对称加密的应用

密钥交换:Diffie-Hellman 密钥交换,双方协商出共享密钥,不在网络上传输密钥。

数字签名:私钥签名,公钥验证。签名保证数据完整性、不可抵赖性。

证书:公钥证书绑定公钥和身份,防止中间人攻击。

TLS 协议

TLS 握手

客户端发送 Client Hello,包含支持的加密套件、随机数。

服务端回复 Server Hello,包含选择的加密套件、随机数、证书。

服务端发送证书,客户端验证证书。

(可选)服务端发送 Certificate Request,请求客户端证书。

(可选)服务端发送 Server Hello Done。

(可选)客户端发送证书,服务端验证证书。

客户端生成随机数,用服务端公钥加密,发送给服务端。双方根据客户端随机数、服务端随机数、预主密钥生成会话密钥。

客户端发送 Change Cipher Spec、Finished,表示后续消息用会话密钥加密。

服务端发送 Change Cipher Spec、Finished,表示后续消息用会话密钥加密。

双方使用会话密钥加密应用数据。

TLS 版本

SSL 2.0:已淘汰,存在安全漏洞。

SSL 3.0:已淘汰,存在 POODLE 攻击。

TLS 1.0:已淘汰,存在 RC4 弱加密算法。

TLS 1.1:已淘汰,存在 RC4 弱加密算法。

TLS 1.2:当前主流,支持 strong 加密套件。

TLS 1.3:最新版本,简化握手、0-RTT、移除不安全算法。

TLS 加密套件

加密套件格式:TLS_密钥交换_认证_加密_消息认证。

示例:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。

ECDHE:密钥交换算法(椭圆曲线 Diffie-Hellman 临时密钥)。

RSA:认证算法(RSA 证书)。

AES_128_GCM:加密算法(AES 128 位 GCM 模式)。

SHA256:消息认证算法(SHA-256)。

推荐加密套件:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256。

TLS 的性能

TLS 握手增加 1-2 个 RTT,连接建立慢。

TLS 加解密占用 CPU,影响吞吐量。

优化措施:Session Resumption(会话恢复,减少握手)、TLS 1.3(0-RTT 握手)、硬件加速(AES-NI 指令集加速 AES)。

证书

X.509 证书

X.509 证书是公钥证书的标准格式,包含:版本、序列号、签名算法、颁发者、有效期、主题、公钥、扩展、签名。

证书链:Root CA(根证书)→ Intermediate CA(中间证书)→ Leaf Certificate(终端证书)。客户端验证证书链,确保证书可信。

证书颁发机构(CA)

CA 是颁发证书的可信第三方,如 DigiCert、Let's Encrypt。

CA 验证申请者的身份(如域名所有权),签发证书。

客户端信任 Root CA,验证证书链。

证书类型

DV(Domain Validation):验证域名所有权,适用于普通网站。

OV(Organization Validation):验证组织信息,适用于企业网站。

EV(Extended Validation):严格验证,适用于金融、支付网站。

Let's Encrypt

Let's Encrypt 是免费、自动化、开放的 CA,提供 90 天有效期的证书。

certbot 是 Let's Encrypt 的官方客户端,自动签发、续期证书。

常见网络攻击

中间人攻击

攻击者拦截通信,窃听、篡改数据。

防御措施:TLS 加密、证书验证、HSTS(HTTP Strict Transport Security)。

重放攻击

攻击者重放之前的请求,冒充合法用户。

防御措施:时间戳、nonce(随机数)、签名。

DDoS 攻击

攻击者发送大量请求,耗尽服务器资源。

防御措施:限流、黑名单、DDoS 防护服务(如 Cloudflare)。

SQL 注入

攻击者在输入中注入 SQL 代码,窃取或篡改数据。

防御措施:输入验证、参数化查询、ORM。

XSS 攻击

攻击者在页面中注入恶意脚本,窃取用户信息。

防御措施:输入验证、输出编码、CSP(Content Security Policy)。

网络安全是系统工程,需要加密、认证、密钥管理、防御攻击等多种技术。理解网络安全的原理和威胁,有助于构建安全的网络应用。