PLCrypto is the first 'structured text'-based cryptographic library that is executable on commercial off-the-shelf Programmable Logic Controllers (PLCs).
PLCs are control devices widely used in industrial automation. They can be found in critical infrastructures, like power grids, water systems, nuclear plants or manufacturing systems. The PLCrypto software library implements lightweight symmetric cryptographic algorithms for PLCs, using a standard PLC programming language called structured text (ST). It can be used to protect the confidentiality and integrity of data on PLCs without additional hardware or firmware modification.
The software library includes a wide range of commonly used algorithms, totalling ten algorithms, including one-way functions, message authentication codes, hash functions, block ciphers, and pseudo-random functions/generators. This repository contains the source codes for the paper "PLCrypto: A Symmetric Cryptographic Library for Programmable Logic Controllers" in IACR Transactions on Symmetric Cryptology, 2021.
At the Computer Security research group of CWI, together with our partners in Singapore and China, we benchmarked the algorithms and protocols in PLCrypto on a commercial PLC, Allen Bradley ControlLogix 5571, which is widely used in the real world. Also, we make our source codes publicly available, so plant operators can freely deploy our library in practice.
See also https://github.com/PLCrypto/PLCrypto.