2019 · 15 citations · 24 references
ComputingComputer EngineeringComputer ScienceCompilersComputer ArchitectureProgramming LanguagesCompiler ConstructionControl-flow AnalysisCryptographic AlgorithmsCryptographic ImplementationData-flow AnalysisMicroarchitectural SecurityAutomatic ParallelizationConstant-time AlgorithmsConstant-time ImplementationConstant-time ProgrammingFunctional CorrectnessMicroarchitectural OptimizationParallelizationType-level Programming
Cryptographic primitives are subject to diverging imperatives. Functional correctness and auditability pushes for the use of a high-level programming language. Performance and the threat of timing attacks push for using no more abstract than an assembler to exploit (or avoid!) the micro-architectural features of a given machine. We believe that a suitable programming language can reconcile both views and actually improve on the state of the art of both. Usuba is an opinionated dataflow programming language in which block ciphers become so simple as to be “obviously correct” and whose types document and enforce valid parallelization strategies at the granularity of individual bits. Its optimizing compiler, Usubac, produces high-throughput, constant-time implementations performing on par with hand-tuned reference implementations. The cornerstone of our approach is a systematization and generalization of bitslicing, an implementation trick frequently used by cryptographers.
24
John L. Gustafson · Communications of the ACM · 1988 · 1.4K citations · Full text
How to make ad-hoc polymorphism less ad hoc
Philip Wadler, Stephen Blott · 1989 · 770 citations · Full text
LUSTRE: a declarative language for real-time programming
P. Caspi, D. Pilaud, Nicolas Halbwachs et al. · 1987 · 557 citations · Full text
LUSTRE: A declarative language for programming synchronous systems*
Paul Caspi, D. Pilaud, Nicolas Halbwachs et al. · 1987 · 463 citations