基于高阶属性文法的网络协议归一化技术解析
在网络协议处理中,协议归一化是一项关键任务,它有助于提高协议解析的准确性和安全性。本文将深入探讨如何使用高阶属性文法(Higher-Order Attribute Grammars,HAGs)来实现网络协议归一化,并分析其可行性、效率和鲁棒性。
1. 属性文法与归一化基础
我们采用Chapman提出的符号来指定属性文法。这种符号用带属性的符号形式取代了上下文无关文法(CFG)的产生式,每个符号形式由一个(终结符或非终结符)符号及其属性的评估规则组成。综合属性的评估规则前加↑,继承属性前加↓,每个带属性的符号形式用尖括号括起来。
属性文法能让符号的底层值在解析树中传递。例如,HEX 标记可以表示所有十六进制数字字符串,属性 val 用于捕获这些数字的数值。属性评估规则可应用某些函数在规则之间传递属性,这种属性流自然对应于归一化过程。编码标记可轻松表示为终结符的属性,而归一化标记则表示为非终结符的属性,这样归一化就完全嵌入到了文法的属性规则中。我们允许特殊函数 output(η) 出现在规则中,表示属性 η 应作为归一化标记输出。
2. 上下文相关文法的归一化问题
尽管基于文法的解析器有诸多优势,但目前大多数现代入侵防御系统(IPS)归一器采用的是临时技术,如手动编码或使用不基于抽象数据结构的解析器生成器。这是因为网络协议的语法并非上下文无关的。
以 HTTP 的分块体(Chunked-Body)类型为例,分块体允许消息以块的形式在持久连接上发送,以提高传输效率。每个块符号以一行十六进制数字(块大小,chunk-size)开头,后跟构成块数据(chunk-data)的数据流,且块
超级会员免费看
订阅专栏 解锁全文
16

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



