DNSCURVE
概要
DNSCurve: Usable security for DNS
Shaping DNS Security with Curves
注意,DNSCURVE提供点到点的安全,而非端到端;也就是说,能保证采用DNSCURVE通信的相邻两节点DNS查询/应答通信数据的加密、认证。
针对“NS”的公钥认证,维护成本较低;一个NS可以有多个公私钥对
挑战码+DH交换协商对称密钥,支持加密通信
客户端时间不准对解析结果无影响,抗重放攻击
不会降低外部探知整个域配置的难度
没有引入新RR,域名配置文件略微增大,主要是NS记录比以前长,可以继续用UDP
耗CPU的攻击威胁增大,每个包都要涉及加解密计算,否定缓存应答不需要特殊处理
放大攻击的风险较小
draft
https://tools.ietf.org/html/draft-dempsky-dnscurve-01
加密算法
备注
c = aes(aes_key, src_data) h = sha256(c) s = rsa_client_private_sign(h) key_s = rsa_server_public_encrypt(aes_key, h, s) main_data = concat(key_s, c)
两种通信方案
Streamlined Format :解包,cryptbox 直接是原始DNS查询、应答包
TXT Format:解压TXT,把内容提取出来,跟header组装成DNS查询、应答包
过程
client : client public key, client_nonce, cryptbox query
server : 用 server private key 解密,用 client public key 验证
server :搞一个 server_nonce,附在 client_nonce 之后,在应答包里用server private加密传回去
client :解包,验nonce,验DATA
讨论
改动量比较大,保密性太好了,又比较耗资源,以致于没法让大家往下用。。。