José Bacelar Almeida
Current Organizations / Institutes
The organizations/institutes from the scholar's latest article
Research Subjects
Research Interests
José Bacelar Almeida has a total of 75 co-authors. Here are the top co-authors by number of shared publications:
- Jorge Sousa Pinto
INESC TEC & Universidade do Minho
18 shared publications - Manuel Barbosa
University of Porto (FCUP), INESC-TEC and Max Planck Institute for Security and Privacy
17 shared publications - Maria João Frade
HASLab/INESC TEC & Universidade do Minho
11 shared publications - Simão Melo de Sousa
Universidade da Beira Interior
11 shared publications - Gilles Barthe
Max Planck Institute for Security and Privacy, Bochum, Germany and IMDEA Software Institute, Madrid, Spain
9 shared publications - François Dupressoir
University of Bristol
5 shared publications
Latest Publications
- 1 January 2026
- Published by Springer Nature
Rigorous Software Development
- Open Access
- 19 November 2025
- Published by Association for Computing Machinery (ACM)
- p. 1409-1423
Jazzline: Composable CryptoLine Functional Correctness Proofs for Jasmin Programs
- 19 November 2025
- Published by Association for Computing Machinery (ACM)
- p. 1409-1423
Open AccessJazzline: Composable CryptoLine Functional Correctness Proofs for Jasmin Programs
- Open Access
- 10 January 2025
- Published by Association for Computing Machinery (ACM)
- p. 3-16
Leakage-Free Probabilistic Jasmin Programs
This paper presents a semantic characterization of leakage-freeness through timing side-channels for Jasmin programs. Our characterization covers probabilistic Jasmin programs that are not constant-time. In addition, we provide a characterization in terms of probabilistic relational Hoare logic and prove the equivalence between both definitions. We also prove that our new characterizations are compositional and relate our new definitions to existing ones from prior work, which could only be applied to deterministic programs. To provide practical evidence, we use the Jasmin framework to develop a rejection sampling algorithm and provide an EasyCrypt proof that ensures the algorithm's implementation is leakage-free while not being constant-time.
- 10 January 2025
- Published by Association for Computing Machinery (ACM)
- p. 3-16
Open AccessLeakage-Free Probabilistic Jasmin Programs
This paper presents a semantic characterization of leakage-freeness through timing side-channels for Jasmin programs. Our characterization covers probabilistic Jasmin programs that are not constant-time. In addition, we provide a characterization in terms of probabilistic relational Hoare logic and prove the equivalence between both definitions. We also prove that our new characterizations are compositional and relate our new definitions to existing ones from prior work, which could only be applied to deterministic programs. To provide practical evidence, we use the Jasmin framework to develop a rejection sampling algorithm and provide an EasyCrypt proof that ensures the algorithm's implementation is leakage-free while not being constant-time.
- 7 February 2024
- Published by Springer Nature
- p. 201-217
Digital Signatures and Quantum Computing
- Open Access
- 9 June 2023
- Published by Universitatsbibliothek der Ruhr-Universitat Bochum in IACR Transactions on Cryptographic Hardware and Embedded Systems
- p. 164-193
Formally verifying Kyber
In this paper we present the first formally verified implementations of Kyber and, to the best of our knowledge, the first such implementations of any post-quantum cryptosystem. We give a (readable) formal specification of Kyber in the EasyCrypt proof assistant, which is syntactically very close to the pseudocode description of the scheme as given in the most recent version of the NIST submission. We present high-assurance open-source implementations of Kyber written in the Jasmin language, along with machine-checked proofs that they are functionally correct with respect to the EasyCrypt specification. We describe a number of improvements to the EasyCrypt and Jasmin frameworks that were needed for this implementation and verification effort, and we present detailed benchmarks of our implementations, showing that our code achieves performance close to existing hand-optimized implementations in C and assembly.
- 9 June 2023
- Published by Universitatsbibliothek der Ruhr-Universitat Bochum in IACR Transactions on Cryptographic Hardware and Embedded Systems
- p. 164-193
Open AccessFormally verifying Kyber
In this paper we present the first formally verified implementations of Kyber and, to the best of our knowledge, the first such implementations of any post-quantum cryptosystem. We give a (readable) formal specification of Kyber in the EasyCrypt proof assistant, which is syntactically very close to the pseudocode description of the scheme as given in the most recent version of the NIST submission. We present high-assurance open-source implementations of Kyber written in the Jasmin language, along with machine-checked proofs that they are functionally correct with respect to the EasyCrypt specification. We describe a number of improvements to the EasyCrypt and Jasmin frameworks that were needed for this implementation and verification effort, and we present detailed benchmarks of our implementations, showing that our code achieves performance close to existing hand-optimized implementations in C and assembly.
- 1 May 2020
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 965-982
The Last Mile: High-Assurance and High-Speed Cryptographic Implementations
We develop a new approach for building cryptographic implementations. Our approach goes the last mile and delivers assembly code that is provably functionally correct, protected against side-channels, and as efficient as hand-written assembly. We illustrate our approach using ChaCha20-Poly1305, one of the two ciphersuites recommended in TLS 1.3, and deliver formally verified vectorized implementations which outperform the fastest non-verified code.We realize our approach by combining the Jasmin framework, which offers in a single language features of high-level and low-level programming, and the EasyCrypt proof assistant, which offers a versatile verification infrastructure that supports proofs of functional correctness and equivalence checking. Neither of these tools had been used for functional correctness before. Taken together, these infrastructures empower programmers to develop efficient and verified implementations by "game hopping", starting from reference implementations that are proved functionally correct against a specification, and gradually introducing program optimizations that are proved correct by equivalence checking.We also make several contributions of independent interest, including a new and extensible verified compiler for Jasmin, with a richer memory model and support for vectorized instructions, and a new embedding of Jasmin in EasyCrypt.
- 1 May 2020
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 965-982
The Last Mile: High-Assurance and High-Speed Cryptographic Implementations
We develop a new approach for building cryptographic implementations. Our approach goes the last mile and delivers assembly code that is provably functionally correct, protected against side-channels, and as efficient as hand-written assembly. We illustrate our approach using ChaCha20-Poly1305, one of the two ciphersuites recommended in TLS 1.3, and deliver formally verified vectorized implementations which outperform the fastest non-verified code.We realize our approach by combining the Jasmin framework, which offers in a single language features of high-level and low-level programming, and the EasyCrypt proof assistant, which offers a versatile verification infrastructure that supports proofs of functional correctness and equivalence checking. Neither of these tools had been used for functional correctness before. Taken together, these infrastructures empower programmers to develop efficient and verified implementations by "game hopping", starting from reference implementations that are proved functionally correct against a specification, and gradually introducing program optimizations that are proved correct by equivalence checking.We also make several contributions of independent interest, including a new and extensible verified compiler for Jasmin, with a richer memory model and support for vectorized instructions, and a new embedding of Jasmin in EasyCrypt.
- Open Access
- 6 November 2019
- Published by Association for Computing Machinery (ACM)
- p. 63-78
A Machine-Checked Proof of Security for AWS Key Management Service
We present a machine-checked proof of security for the domain management protocol of Amazon Web Services' KMS (Key Management Service) a critical security service used throughout AWS and by AWS customers. Domain management is at the core of AWS KMS; it governs the top-level keys that anchor the security of encryption services at AWS. We show that the protocol securely implements an ideal distributed encryption mechanism under standard cryptographic assumptions. The proof is machine-checked in the EasyCrypt proof assistant and is the largest EasyCrypt development to date.
- 6 November 2019
- Published by Association for Computing Machinery (ACM)
- p. 63-78
Open AccessA Machine-Checked Proof of Security for AWS Key Management Service
We present a machine-checked proof of security for the domain management protocol of Amazon Web Services' KMS (Key Management Service) a critical security service used throughout AWS and by AWS customers. Domain management is at the core of AWS KMS; it governs the top-level keys that anchor the security of encryption services at AWS. We show that the protocol securely implements an ideal distributed encryption mechanism under standard cryptographic assumptions. The proof is machine-checked in the EasyCrypt proof assistant and is the largest EasyCrypt development to date.
- Open Access
- 6 November 2019
- Published by Association for Computing Machinery (ACM)
- p. 1607-1622
Machine-Checked Proofs for Cryptographic Standards
We present a high-assurance and high-speed implementation of the SHA-3 hash function. Our implementation is written in the Jasmin programming language, and is formally verified for functional correctness, provable security and timing attack resistance in the EasyCrypt proof assistant. Our implementation is the first to achieve simultaneously the four desirable properties (efficiency, correctness, provable security, and side-channel protection) for a non-trivial cryptographic primitive. Concretely, our mechanized proofs show that: 1) the SHA-3 hash function is indifferentiable from a random oracle, and thus is resistant against collision, first and second preimage attacks; 2) the SHA-3 hash function is correctly implemented by a vectorized x86 implementation. Furthermore, the implementation is provably protected against timing attacks in an idealized model of timing leaks. The proofs include new EasyCrypt libraries of independent interest for programmable random oracles and modular indifferentiability proofs.
- 6 November 2019
- Published by Association for Computing Machinery (ACM)
- p. 1607-1622
Open AccessMachine-Checked Proofs for Cryptographic Standards
We present a high-assurance and high-speed implementation of the SHA-3 hash function. Our implementation is written in the Jasmin programming language, and is formally verified for functional correctness, provable security and timing attack resistance in the EasyCrypt proof assistant. Our implementation is the first to achieve simultaneously the four desirable properties (efficiency, correctness, provable security, and side-channel protection) for a non-trivial cryptographic primitive. Concretely, our mechanized proofs show that: 1) the SHA-3 hash function is indifferentiable from a random oracle, and thus is resistant against collision, first and second preimage attacks; 2) the SHA-3 hash function is correctly implemented by a vectorized x86 implementation. Furthermore, the implementation is provably protected against timing attacks in an idealized model of timing leaks. The proofs include new EasyCrypt libraries of independent interest for programmable random oracles and modular indifferentiability proofs.
- Open Access
- 1 August 2019
- Published by Elsevier in Electronic Notes in Theoretical Computer Science
- Vol. 344, 151-167
Some Applications of the Formalization of the Pumping Lemma for Context-Free Languages
- 1 August 2019
- Published by Elsevier in Electronic Notes in Theoretical Computer Science
- Vol. 344, 151-167
Open AccessSome Applications of the Formalization of the Pumping Lemma for Context-Free Languages