协议设计时产生的缺陷:尝试写一正式验证PDF解析器时的发现
引用:
Bogk A, Schöpl M. The Pitfalls of Protocol Design: Attempting to Write a Formally Verified PDF Parser[C]//Security and Privacy Workshops (SPW), 2014 IEEE. IEEE, 2014: 198-203.
研究内容:
使用支持依赖类型的函数式编程语言实现正式验证的PDF解析器
背景:
Coq是一个证明辅助工具,通过使用Coq提取代码来编写软件是完全可行的;在信息安全技术的语言理论方向可以和依赖类型编程语言结合起来进行正式验证
方法:
在起初的尝试中发现Coq在验证时不支持无限递归,接下来通过使用依赖类型定义parser,成功使得在解析过程中可以通过逐步消耗tokens实现递归
要使用上述的组合库解析器实现一个PDF文档解析器,在解析的PDF文档部分结构的时候非常容易实现,但是在解析完整的文档时就会遇到递归调用问题,如对象的自调用和双对象相互调用、增量交叉引用表的相互引用,而这可以使用此方法解决无限循环的问题
创新点:
使用Coq即函数式编程语言来解决PDF解析中存在的问题