Implementing TLS with Verified Cryptographic Security

被引:98
作者
Bhargavan, Karthikeyan [1 ]
Fournet, Cedric [2 ]
Kohlweiss, Markulf [2 ]
Pironti, Alfredo [1 ]
Strub, Pierre-Yves [3 ]
机构
[1] INRIA Paris Rocquencourt, Paris, France
[2] Microsoft Res, Yorktown Hts, NY USA
[3] IMDEA Software, Madrid, Spain
来源
2013 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP) | 2013年
关键词
ENCRYPTION;
D O I
10.1109/SP.2013.37
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
TLS is possibly the most used protocol for secure communications, with a 18-year history of flaws and fixes, ranging from its protocol logic to its cryptographic design, and from the Internet standard to its diverse implementations. We develop a verified reference implementation of TLS 1.2. Our code fully supports its wire formats, ciphersuites, sessions and connections, re-handshakes and resumptions, alerts and errors, and data fragmentation, as prescribed in the RFCs; it interoperates with mainstream web browsers and servers. At the same time, our code is carefully structured to enable its modular, automated verification, from its main API down to computational assumptions on its cryptographic algorithms. Our implementation is written in F# and specified in F7. We present security specifications for its main components, such as authenticated stream encryption for the record layer and key establishment for the handshake. We describe their verification using the F7 typechecker. To this end, we equip each cryptographic primitive and construction of TLS with a new typed interface that captures its security properties, and we gradually replace concrete implementations with ideal functionalities. We finally typecheck the protocol state machine, and obtain precise security theorems for TLS, as it is implemented and deployed. We also revisit classic attacks and report a few new ones.
引用
收藏
页码:445 / 459
页数:15
相关论文
共 57 条
[11]   Refinement Types for Secure Implementations [J].
Bengtson, Jesper ;
Bhargavan, Karthikeyan ;
Fournet, Cedric ;
Gordon, Andrew D. ;
Maffeis, Sergio .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2011, 33 (02)
[12]  
Bhargavan K., 2012, ACM T INFORM SYST SE, V15, P1
[13]   Modular Verification of Security Protocol Code by Typing [J].
Bhargavan, Karthikeyan ;
Fournet, Cedric ;
Gordon, Andrew D. .
ACM SIGPLAN NOTICES, 2010, 45 (01) :445-456
[14]   An efficient cryptographic protocol verifier based on prolog rules [J].
Blanchet, B .
14TH IEEE COMPUTER SECURITY FOUNDATIONS WORKSHOP, PROCEEDINGS, 2001, :82-96
[15]   A computationally sound mechanized prover for security protocols [J].
Blanchet, Bruno .
2006 IEEE SYMPOSIUM ON SECURITY AND PRIVACY, PROCEEDINGS, 2006, :140-154
[16]  
Bleichenbacher D, 1998, LECT NOTES COMPUT SC, V1462, P1, DOI 10.1007/BFb0055716
[17]  
Brumley B., 2011, CT RSA
[18]  
Brumley D, 2003, USENIX ASSOCIATION PROCEEDINGS OF THE 12TH USENIX SECURITY SYMPOSIUM, P1
[19]  
Canvel B, 2003, LECT NOTES COMPUT SC, V2729, P583
[20]   ASPIER: An Automated Framework for Verifying Security Protocol Implementations [J].
Chaki, Sagar ;
Datta, Anupam .
PROCEEDINGS OF THE 22ND IEEE COMPUTER SECURITY FOUNDATIONS SYMPOSIUM, 2009, :172-185