89 research outputs found
A Performant, Misuse-Resistant API for Primality Testing
Primality testing is a basic cryptographic task. But developers today are faced with complex APIs for primality testing, along with documentation that fails to clearly state the reliability of the tests being performed. This leads to the APIs being incorrectly used in practice, with potentially disastrous consequences. In an effort to overcome this, we present a primality test having a simplest-possible API: the test accepts a number to be tested and returns a Boolean indicating whether the input was composite or probably prime. For all inputs, the output is guaranteed to be correct with probability at least 1 - 2-128. The test is performant: on random, odd, 1024-bit inputs, it is faster than the default test used in OpenSSL by 17%. We investigate the impact of our new test on the cost of random prime generation, a key use case for primality testing. The OpenSSL developers have adopted our suggestions in full; our new API and primality test are scheduled for release in OpenSSL 3.0
Grained integers and applications to cryptography
To meet the requirements of the modern communication society, cryptographic techniques are of central importance. In modern cryptography, we try to build cryptographic primitives, whose security can be reduced to solving a particular number theoretic problem for which no fast algorithmic method is known by now. Thus, any advance in the understanding of the nature of such problems indirectly gives insight in the analysis of some of the most practical cryptographic techniques. In this work we analyze exactly this aspect much more deeply: How can we use some of the purely theoretical results in number theory to answer very practical questions on the security of widely used cryptographic algorithms and how can we use such results in concrete implementations? While trying to answer these kinds of security-related questions, we always think two-fold: From a cryptographic, security-ensuring perspective and from a cryptanalytic one. After we outlined -- with a special focus on the historical development of these results -- the necessary analytic and algorithmic foundations of number theory, we first delve into the question how point addition on certain elliptic curves can be done efficiently. The resulting formulas have their application in the cryptanalysis of crypto systems that are insecure if factoring integers can be done efficiently. The rest of the thesis is devoted to the study of integers, all of whose prime factors are neither too small nor too large. We show with the help of two applications how one can use the properties of such kinds of integers to answer very practical questions in the design and the analysis of cryptographic primitives: The optimization of a hardware-realization of the cofactorization step of the General Number Field Sieve and the analysis of different standardized key-generation algorithms
Implementation and Evaluation of Algorithmic Skeletons: Parallelisation of Computer Algebra Algorithms
This thesis presents design and implementation approaches for the parallel algorithms of computer algebra. We use algorithmic skeletons and also further approaches, like data parallel arithmetic and actors. We have implemented skeletons for divide and conquer algorithms and some special parallel loops, that we call ‘repeated computation with a possibility of premature termination’. We introduce in this thesis a rational data parallel arithmetic. We focus on parallel symbolic computation algorithms, for these algorithms our arithmetic provides a generic parallelisation approach.
The implementation is carried out in Eden, a parallel functional programming language based on Haskell. This choice enables us to encode both the skeletons and the programs in the same language. Moreover, it allows us to refrain from using two different languages—one for the implementation and one for the interface—for our implementation of computer algebra algorithms.
Further, this thesis presents methods for evaluation and estimation of parallel execution times. We partition the parallel execution time into two components. One of them accounts for the quality of the parallelisation, we call it the ‘parallel penalty’. The other is the sequential execution time. For the estimation, we predict both components separately, using statistical methods. This enables very confident estimations, although using drastically less measurement points than other methods. We have applied both our evaluation and estimation approaches to the parallel programs presented in this thesis. We haven also used existing estimation methods.
We developed divide and conquer skeletons for the implementation of fast parallel multiplication. We have implemented the Karatsuba algorithm, Strassen’s matrix multiplication algorithm and the fast Fourier transform. The latter was used to implement polynomial convolution that leads to a further fast multiplication algorithm. Specially for our implementation of Strassen algorithm we have designed and implemented a divide and conquer skeleton basing on actors. We have implemented the parallel fast Fourier transform, and not only did we use new divide and conquer skeletons, but also developed a map-and-transpose skeleton. It enables good parallelisation of the Fourier transform. The parallelisation of Karatsuba multiplication shows a very good performance. We have analysed the parallel penalty of our programs and compared it to the serial fraction—an approach, known from literature. We also performed execution time estimations of our divide and conquer programs.
This thesis presents a parallel map+reduce skeleton scheme. It allows us to combine the usual parallel map skeletons, like parMap, farm, workpool, with a premature termination property. We use this to implement the so-called ‘parallel repeated computation’, a special form of a speculative parallel loop. We have implemented two probabilistic primality tests: the Rabin–Miller test and the Jacobi sum test. We parallelised both with our approach. We analysed the task distribution and stated the fitting configurations of the Jacobi sum test. We have shown formally that the Jacobi sum test can be implemented in parallel. Subsequently, we parallelised it, analysed the load balancing issues, and produced an optimisation. The latter enabled a good implementation, as verified using the parallel penalty. We have also estimated the performance of the tests for further input sizes and numbers of processing elements. Parallelisation of the Jacobi sum test and our generic parallelisation scheme for the repeated computation is our original contribution.
The data parallel arithmetic was defined not only for integers, which is already known, but also for rationals. We handled the common factors of the numerator or denominator of the fraction with the modulus in a novel manner. This is required to obtain a true multiple-residue arithmetic, a novel result of our research. Using these mathematical advances, we have parallelised the determinant computation using the Gauß elimination. As always, we have performed task distribution analysis and estimation of the parallel execution time of our implementation. A similar computation in Maple emphasised the potential of our approach. Data parallel arithmetic enables parallelisation of entire classes of computer algebra algorithms.
Summarising, this thesis presents and thoroughly evaluates new and existing design decisions for high-level parallelisations of computer algebra algorithms
Reconfigurable Architectures for Cryptographic Systems
Field Programmable Gate Arrays (FPGAs) are suitable platforms for implementing cryptographic
algorithms in hardware due to their flexibility, good performance and low power consumption.
Computer security is becoming increasingly important and security requirements
such as key sizes are quickly evolving. This creates the need for customisable hardware designs
for cryptographic operations capable of covering a large design space. In this thesis we explore
the four design dimensions relevant to cryptography - speed, area, power consumption and
security of the crypto-system - by developing parametric designs for public-key generation and
encryption as well as side-channel attack countermeasures. There are four contributions.
First, we present new architectures for Montgomery multiplication and exponentiation based
on variable pipelining and variable serial replication. Our implementations of these architectures
are compared to the best implementations in the literature and the design space is explored in
terms of speed and area trade-offs.
Second, we generalise our Montgomery multiplier design ideas by developing a parametric
model to allow rapid optimisation of a general class of algorithms containing loops with dependencies
carried from one iteration to the next. By predicting the throughput and the area of
the design, our model facilitates and speeds up design space exploration.
Third, we develop new architectures for primality testing including the first hardware architecture
for the NIST approved Lucas primality test. We explore the area, speed and power
consumption trade-offs by comparing our Lucas architectures on CPU, FPGA and ASIC.
Finally, we tackle the security issue by presenting two novel power attack countermeasures
based on on-chip power monitoring. Our constant power framework uses a closed-loop
control system to keep the power consumption of any FPGA implementation constant. Our
attack detection framework uses a network of ring-oscillators to detect the insertion of a shunt
resistor-based power measurement circuit on a device's power rail. This countermeasure is
lightweight and has a relatively low power overhead compared to existing masking and hiding
countermeasures
A framework for implementing outsourcing schemes
En esta tesis se aborda el problema de la externalización segura de servicios de datos
y computación. El escenario de interés es aquel en el que el usuario posee datos y
quiere subcontratar un servidor en la nube (“Cloud”). Además, el usuario puede
querer también delegar el cálculo de un subconjunto de sus datos al servidor. Se
presentan dos aspectos de seguridad relacionados con este escenario, en concreto,
la integridad y la privacidad y se analizan las posibles soluciones a dichas cuestiones,
aprovechando herramientas criptográficas avanzadas, como el Autentificador
de Mensajes Homomórfico (“Homomorphic Message Authenticators”) y el Cifrado
Totalmente Homomórfico (“Fully Homomorphic Encryption”).
La contribución de este trabajo es tanto teórica como práctica. Desde el punto de
vista de la contribución teórica, se define un nuevo esquema de externalización (en
lo siguiente, denominado con su término inglés Outsourcing), usando como punto
de partida los artículos de [3] y [12], con el objetivo de realizar un modelo muy
genérico y flexible que podría emplearse para representar varios esquemas de ”outsourcing”
seguro. Dicho modelo puede utilizarse para representar esquemas de “outsourcing”
seguro proporcionando únicamente integridad, únicamente privacidad o,
curiosamente, integridad con privacidad. Utilizando este nuevo modelo también se
redefine un esquema altamente eficiente, construido en [12] y que se ha denominado
Outsourcinglin. Este esquema permite calcular polinomios multivariados de grado
1 sobre el anillo Z2k . Desde el punto de vista de la contribución práctica, se ha
construido una infraestructura marco (“Framework”) para aplicar el esquema de
“outsourcing”. Seguidamente, se ha testado dicho “Framework” con varias implementaciones,
en concreto la implementación del criptosistema Joye-Libert ([18]) y
la implementación del esquema propio Outsourcinglin.
En el contexto de este trabajo práctico, la tesis también ha dado lugar a algunas
contribuciones innovadoras:
el diseño y la implementación de un nuevo algoritmo de descifrado para el
esquema de cifrado Joye-Libert, en colaboración con Darío Fiore. Presenta un
mejor comportamiento frente a los algoritmos propuestos por los autores de
[18];la implementación de la función eficiente pseudo-aleatoria de forma amortizada
cerrada (“amortized-closed-form efficient pseudorandom function”) de
[12]. Esta función no se había implementado con anterioridad y no supone
un problema trivial, por lo que este trabajo puede llegar a ser útil en otros
contextos.
Finalmente se han usado las implementaciones durante varias pruebas para medir
tiempos de ejecución de los principales algoritmos.---ABSTRACT---In this thesis we tackle the problem of secure outsourcing of data and computation.
The scenario we are interested in is that in which a user owns some data and wants to
“outsource” it to a Cloud server. Furthermore, the user may want also to delegate
the computation over a subset of its data to the server. We present the security
issues related to this scenario, namely integrity and privacy and we analyse some
possible solutions to these two issues, exploiting advanced cryptographic tools, such
as Homomorphic Message Authenticators and Fully Homomorphic Encryption.
Our contribution is both theoretical and practical. Considering our theoretical
contribution, using as starting points the articles of [3] and [12], we introduce a new
cryptographic primitive, called Outsourcing with the aim of realizing a very generic
and flexible model that might be employed to represent several secure outsourcing
schemes. Such model can be used to represent secure outsourcing schemes that provide
only integrity, only privacy or, interestingly, integrity with privacy. Using our
new model we also re-define an highly efficient scheme constructed in [12], that we
called Outsourcinglin and that is a scheme for computing multi-variate polynomials
of degree 1 over the ring Z2k. Considering our practical contribution, we build a
Framework to implement the Outsourcing scheme. Then, we test such Framework to
realize several implementations, specifically the implementation of the Joye-Libert
cryptosystem ([18]) and the implementation of our Outsourcinglin scheme.
In the context of this practical work, the thesis also led to some novel contributions:
the design and the implementation, in collaboration with Dario Fiore, of a new
decryption algorithm for the Joye-Libert encryption scheme, that performs
better than the algorithms proposed by the authors in [18];
the implementation of the amortized-closed-form efficient pseudorandom function
of [12]. There was no prior implementation of this function and it represented
a non trivial work, which can become useful in other contexts.
Finally we test the implementations to execute several experiments for measuring
the timing performances of the main algorithms
RSA, DH, and DSA in the Wild
This book chapter outlines techniques for breaking cryptography by taking advantage of implementation mistakes made in practice, with a focus on those that exploit the mathematical structure of the most widely used public-key primitives
Multiparty Generation of an RSA Modulus
We present a new multiparty protocol for the distributed generation of biprime RSA moduli, with security against any subset of maliciously colluding parties assuming oblivious transfer and the hardness of factoring.
Our protocol is highly modular, and its uppermost layer can be viewed as a template that generalizes the structure of prior works and leads to a simpler security proof. We introduce a combined sampling-and-sieving technique that eliminates both the inherent leakage in the approach of Frederiksen et al. (Crypto\u2718), and the dependence upon additively homomorphic encryption in the approach of Hazay et al. (JCrypt\u2719). We combine this technique with an efficient, privacy-free check to detect malicious behavior retroactively when a sampled candidate is not a biprime, and thereby overcome covert rejection-sampling attacks and achieve both asymptotic and concrete efficiency improvements over the previous state of the art
- …