安全协议的形式化黑盒监控:SSL 服务器监控示例解析
1. 监控转换流程
当对代码行 2a 应用 a2m 函数进行转换时,会生成代码行 2m - 5m。在 2m 行,监控器接收由 A 发送的数据,并将其存储在变量 {M}k 中。随后,a2m 函数会对接收的值进行一系列检查。一般而言,每次从被监控应用接收到新消息时,都会将消息或其部分内容与预期(已知或重构)的值进行比对。
由于 {M}k 既不是已知的(假设)也未被重构(因为 M 未知或未被重构),所以无法直接将其与已知或重构的值进行比较,因此需要将其分解为各个组件。因为 {M}k 是加密形式且密钥 k 已知,所以在 3m 行进行解密操作,将 M 绑定到明文的值上,该值理论上应为 M。由于 M 未知或未被重构,且它是一个名称,无法再进一步拆解,监控器会假定存储在 M 中的项就是 M 的正确项。在通过 M 得知 M 之前,H(M) 可通过 H(M) 得知,但并未被重构。在对 M 进行赋值后,H(M) 也可通过 H( M) 被重构。4m 行的匹配过程确保了同一术语的已知值和重构值是一致的。
完成对接收数据的所有可能检查后,数据会在 5m 行被转发给攻击者。接着,3a 行被转换为 6m 行。在转换输入过程时,监控器会代表代理从攻击者处接收消息 x 并进行缓冲,此时称 x 通过自身被知晓。然后,监控器会按照代理的操作方式进行处理(通常是对接收的数据进行检查,就像当前示例中那样)。存储在 x 中的接收消息不会立即转发给 A,因为这可能导致 A 接收到恶意数据,例如引发拒绝服务攻击。相反,接收的数据会被缓冲,只有在必要时才会转发给 A,即当进程结束(0 情况)或期望从 A 获得输出数据时。
随后,4a 行被转换为 7m 行,
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



