Page 21 - 《软件学报》2021年第6期
P. 21

张协力  等:C2P:基于 Pi 演算的协议 C 代码形式化抽象方法和工具                                            1595


             通过转换后的分析表明:代码中存在一条攻击路径,在认证性证明时,单射一致性被打破,参见图 10.代码实
         现逻辑中,在第 5 步消息接收时,并未对 IV5 与 IV4 进行比较,即验证 IV5 值的新鲜性,导致攻击者可以在不拥有
         任何密钥的情况下,仅利用截获消息来构造攻击路径,从而导致 B 对 A 认证并不满足单射一致性,协议的认证性
         被破坏.若可信第三方 S 在局部时间内为 A 和 B 生成的密钥 Kab 不变,攻击者便可以成功构造攻击路径.
             表 4 列出了 C2P 方法与相关文献工作的对比情况.文献[9,10]在函数调用语法处理上均需要人工将所有函
         数调用改写为 inline 模式,再利用预编译程序处理 inline.本文 C2P 方法可以直接支持函数调用语法的自动化处
         理.此外,文献[9,10]仅支持单一执行路径,不支持条件分支语法;而 C2P 方法给出了条件分支的抽象方法.在支持
         安全属性验证方面,C2P 与文献[9]都采用了 Pi 演算模型,可以支持符号模型的安全属性验证;而文献[10]采用
         Blanchet 演算,支持计算模型的安全属性验证.符号模型基于完美密码假设理论,即认为密码学相关设计完美,攻
         击者不具备特殊密码学能力;计算模型则在概率条件下考虑攻击者的破密能力.一般认为:计算模型复杂度高,
         但更符合实际安全.因此,把本文方案迁移到计算模型,也是待拓展工作之一.
                                       Table 4    Comparison of related work
                                             表 4   相关工作对比
                                                      支持的 C 语法
                           文献      抽象模型                                   安全模型
                                               函数调用      条件分支      指针
                          文献[9]     Pi 演算    人工改写 inline  不支持     部分支持    符号模型
                          文献[10]  Blanchet 演算  人工改写 inline  不支持   部分支持    计算模型
                           C2P      Pi 演算        支持        支持     部分支持    符号模型
         5    结   语

             本文基于 Pi 演算模型给出了一种对 C 语言开发的安全协议源码进行形式化验证的方法,继承了以往工作
         先抽象再验证的工作思路以及密码学原语相关函数黑盒化的技巧,并将之拓展到通信模块和可信标准库或第
         三方库;通过定义 FCSG 及函数调用静态执行序列获取算法得到函数静态执行序列,并在此基础上,依照函数调
         用、函数体语句、表达式约简的顺序逐级对代码进行抽象转换成 Pi 演算模型,借助 ProVerif 自动化验证协议安
         全属性;最后,利用 ProVerif 给出了相关抽象的逻辑正确性证明,并通过 Kerberos 协议代码案例分析说明了方法
         的有效性;依据方案实现了 C2P 工具并将之开源,以弥补这一领域工作延续性不足的问题.

         References:
          [1]    Goubault-Larrecq J, Parrennes F. Cryptographic protocol analysis on real C code. In: Cousot R, ed. Proc. of the Int’l Workshop on
             Verification,  Model Checking, and Abstract Interpretation. Berlin:  Springer-Verlag,  2005. 363−379. [doi: 10.1007/978-3-540-
             30579-8_24]
          [2]    Avalle M, Pironti A, Sisto R. Formal verification of security protocol implementations: A survey. Formal Aspects of Computing,
             2014,26(1):99−123. [doi: 10.1007/s00165-012-0269-9]
          [3]    Meng B, Lu JT,  Wang DJ, He XD.  Survey  of security analysis  of security  protocol implementations.  Journal  of  Shandong
             University (Natural Science), 2018,53(1):1−18 (in Chinese with English abstract). [doi: 10.6040/j.issn.1671-9352.2.2017.067]
          [4]    Zhang HG, Wu FS, Wang HZ, Wang ZY. A survey: Security verification analysis of cryptographic protocols implementations on
             real code. Chinese Journal of Computers, 2018,41(2):288−308 (in Chinese with English abstract). [doi: 10.11897/SP.J.1016.2018.
             00288]
          [5]    Kobeissi N. Formal verification for real-world cryptographic protocols and implementations [Ph.D. Thesis]. Paris: Ecole Normale
             Supérieure de Paris, 2018.
          [6]    He X, Liu Q, Chen S, Huang C, Wang DJ, Meng B. Analyzing security protocol Web implementations based on model extraction
             with applied PI calculus. IEEE Access, 2020,8:26623−26636. [doi: 10.1109/ACCESS.2020.2971615]
          [7]    Li ZM,  Meng B,  Wang DJ,  et  al.  Mechanized verification of  cryptographic security of  cryptographic security protocol
             implementation in JAVA through model extraction in the computational model. Journal of Software Engineering, 2015,9(1):1−32.
             [doi: 10.3923/jse.2015.1.32]
   16   17   18   19   20   21   22   23   24   25   26