BIFROST:安全协议的自动实现综合
1. BIFROST概述
BIFROST的目标是使用相同的输入文件,通过KaRaMeL生成C代码,并为ProVerif生成π - 演算文件。为此,使用了F 的一个子集F$,它既与FS2PV使用的F#子集兼容,也与可编译成C的low (F*的一个子集)兼容。
BIFROST的工作流程如下:
1. 用户根据加密协议模型编写F$文件。
2. 使用FS2PV生成π - 演算模型。
3. ProVerif根据 .query
文件中描述的安全属性对π - 演算模型进行验证。
4. 若协议安全,ProVerif证明所请求属性的安全性。
5. 对初始的F$模型应用KaRaMeL,生成对应协议中各参与者角色实现的C代码。
6. 若协议不安全,ProVerif找到攻击,使用自定义工具解析攻击跟踪,生成对应的F$代码,再应用KaRaMeL生成攻击者角色的C代码。
下面是BIFROST工具链的mermaid流程图:
graph LR
A[加密协议模型] --> B[编写F$文件]
B --> C[FS2PV生成π - 演算模型]
C --> D[ProVerif验证]
D -->|协议安全| E[KaRaMeL生成C代码]
D -->|协议不安全| F[解析攻击跟踪]
F --> G[生成F$代码]
G --> H[KaRaMeL生成攻击者C代码]