@inproceedings{210ed6c800d9401f862dc41304465dc8,
title = "Formally Verifying the State Machine of TLS 1.3 Handshake in OpenSSL",
abstract = "The TLS handshake state machine manages the handshake messages exchanged in a session based on the parameters negotiated between the client and the server. Although the TLS 1.3 standard has undergone multiple rounds of analysis and revisions before official release to ensure its security, the process from natural language descriptions to implementations still relies on human expertise and is error-prone. In this paper, we propose a systematic method to conduct equivalence verification between the implementation of the TLS state machine and the standard. We also conduct formal verification of OpenSSL, the extensively utilized open-source TLS implementation for secure communications. Using Cryptol, we model the handshake state machine both from the standards and OpenSSL's implementation to perform its formal verification. Our automatic tool E-Verify performs equivalence verification by comparing the state transition sequences produced by the RFC model and OpenSSL model with all combinations of negotiation parameters. Guided by the verification results, we identify 640 mismatches out of a total of 1,536 scenarios and pinpoint the corresponding negotiation parameter combinations.",
keywords = "Cryptol, formal methods, handshake state machine, SAW, Transport Layer Security",
author = "Jingjing Guan and Hui Li and Li, \{Xiang Dong\} and Wang, \{Xiao Lei\} and Binghan Wang and Qiuye Wang and Shengchao Qin and Mengda He and Md Armanuzzaman and Ziming Zhao",
note = "Publisher Copyright: {\textcopyright} 2025 IEEE.; 2025 IEEE Conference on Computer Communications, INFOCOM 2025 ; Conference date: 19-05-2025 Through 22-05-2025",
year = "2025",
doi = "10.1109/INFOCOM55648.2025.11044576",
language = "English",
series = "Proceedings - IEEE INFOCOM",
publisher = "Institute of Electrical and Electronics Engineers Inc.",
booktitle = "INFOCOM 2025 - IEEE Conference on Computer Communications",
address = "United States",
}