418 字
2 分钟
Anubis:基于工作量证明的网络访问控制机制分析
最近在网络安全领域出现了一个名为 Anubis 的访问控制机制,它采用了类似比特币挖矿的工作量证明(PoW)概念来防止自动化爬虫。
核心工作原理
Anubis 的核心机制非常简单:要求访问者解决一个基于 SHA-256 的哈希挑战。具体来说,用户需要找到一个随机数(nonce),使得:
SHA-256(challenge + nonce)
的结果以指定数量的零开头。默认难度设置为 4,意味着需要找到一个使哈希值前 16 位全为零的 nonce。
技术实现细节
挑战-响应机制
服务器首先向客户端发送一个挑战值,客户端必须找到正确的 nonce:
// 服务器端验证逻辑(伪代码)calcString := fmt.Sprintf("%s%d", challenge, nonce)calculated := internal.SHA256sum(calcString)
if subtle.ConstantTimeCompare([]byte(response), []byte(calculated)) != 1 { // 验证失败,拒绝访问 return false}
访问凭证管理
成功通过挑战后,用户会获得一个有效期为 7 天的 JWT(JSON Web Token)。这个令牌包含:
- 挑战信息
- 颁发时间戳
- 过期时间
计算成本分析
理论计算量
对于难度为 4 的挑战,平均需要尝试 2^16 = 65,536 次哈希计算才能找到正确答案。这个计算量对现代计算设备来说微不足道。
实际成本评估
根据原作者的分析,即使是资源丰富的 AI 爬虫,解决这类挑战的计算成本也极其低廉:
- 单次挑战解决成本:几乎可以忽略不计
- 月度成本:可能不到一美分
- 对大型数据中心:计算难度几乎不构成障碍
Anubis:基于工作量证明的网络访问控制机制分析
https://blog.lpkt.cn/posts/anubis-pow-captcha/