Serpenttools Documentation

Total Page:16

File Type:pdf, Size:1020Kb

Serpenttools Documentation serpentTools Documentation The serpentTools developer team Feb 20, 2020 CONTENTS: 1 Project Overview 3 2 Installation 7 3 Changelog 11 4 Examples 19 5 File-parsing API 77 6 Containers 97 7 Samplers 129 8 Settings 137 9 Miscellaneous 143 10 Variable Groups 147 11 Command Line Interface 161 12 Developer’s Guide 165 13 License 201 14 Developer Team 203 15 Glossary 205 16 Indices and tables 207 Bibliography 209 Index 211 i ii serpentTools Documentation A suite of parsers designed to make interacting with SERPENT [serpent] output files simple and flawless. The SERPENT Monte Carlo code is developed by VTT Technical Research Centre of Finland, Ltd. More information, including distribution and licensing of SERPENT can be found at http://montecarlo.vtt.fi The Annals of Nuclear Energy article should be cited for all work using SERPENT. Preferred citation for attribution Andrew Johnson, Dan Kotlyar, Gavin Ridley, Stefano Terlizzi, & Paul Romano. (2018, June 29). “serpent-tools: A collection of parsing tools and data containers to make interacting with SERPENT outputs easy, intuitive, and flawless.,”. CONTENTS: 1 serpentTools Documentation 2 CONTENTS: CHAPTER ONE PROJECT OVERVIEW The serpentTools package contains a variety of parsing utilities, each designed to read a specific output from the SERPENT Monte Carlo code [serpent]. Many of the parsing utilities store the outputs in custom container objects, while other store or return a collection of arrays. This page gives an overview of what files are currently supported, including links to examples and relevant documentation. Unless otherwise noted, all the files listed below can be read using serpentTools.read(). For example: >>> import serpentTools >>> res= serpentTools.read('my_resFile_res.m') would return a ResultsReader Some file-types have an additional reader that is capable of reading multiple files and computing actual uncertainties. These samplers are detailed in Samplers and listed under the supported files. Many of the readers have examples present in the Examples section. Each example is present as a Jupyter notebook at Github: examples. These can be used as a launching point for tutorials or for your own analysis. 1.1 Main output File • File Description: Primary output file for transport calculation - [input]_res.m • SERPENT wiki: result wiki • Primary Reader: ResultsReader • Example - notebook: ResultsReader • Example - manual: Results Reader 1.2 Depletion File • File Description: Output from burnup calculations, showing quantities for various materials - [input]_dep. m • SERPENT wiki: depletion wiki • Primary Reader: DepletionReader • Example - notebook: DepletionReader • Example - manual: Depletion Reader • Sampler - serpentTools.samplers.DepletionSampler 3 serpentTools Documentation 1.3 Detector/ Tally File • File Description: Output generated by creating detectors - [input]_det[N].m • SERPENT wiki: detector definition • Primary Reader: DetectorReader • Example - notebook: Detector • Example - manual: Detector Reader • Sampler - serpentTools.samplers.DetectorSampler 1.4 Sensitivity File • File Description: Output giving sensitivities of defined responses to perturbations - [input]_sens[N].m • SERPENT wiki: sensitivity wiki • Primary Reader: SensitivityReader • Example - notebook: Sensitivity • Example - manual: Sensitivity Reader 1.5 Branching Coefficient File • File Description: Selected homogenized group constants across a variety of defined branch states - [input]. coe • SERPENT wiki: branching wiki • Primary Reader: BranchingReader • Secondary Read function: serpentTools.BranchCollector.fromFile() • Example - notebook: Branching • Example - manual: Branching Reader 1.6 Micro-depletion File • File Description: • SERPENT wiki: microxs wiki • Primary Reader: MicroXSReader • Example - notebook: MicroXSReader • Example - manual: Micro cross section reader 4 Chapter 1. Project Overview serpentTools Documentation 1.7 Cross Section Plot File • File Description: Cross section data and energy grids for various reactions - [input]_xs0.m • SERPENT wiki: xsplot wiki_ • Primary Reader: XSPlotReader • Example - notebook: XSPlot • Example - manual: Cross Section Reader/Plotter 1.8 Depletion Matrix File • File Description: Data pertaining to depletion for a single burnable material at a single point in time - depmtx_[material-identifier]-s[step].m • Primary Reader: DepmtxReader • Example - notebook: DepletionMatrix • Example - manual: Depletion Matrix Reader 1.7. Cross Section Plot File 5 serpentTools Documentation 6 Chapter 1. Project Overview CHAPTER TWO INSTALLATION In order to properly install this package, you need a version of python that plays well with libraries like numpy and matplotlib. This is easy or less easy depending on your operating system, but we have a brief walk through at Obtaining a Python Distribution. 2.1 Terminal terminology Commands below that begin with $ must be run from the terminal containing your preferred python distribution, neglecting the $. Depending on operating system, this could be the normal terminal, or a modified prompt. See Obtaining a Python Distribution for more information if you are not sure. Commands that begin with >>> should be run inside of a python environment. The following would be a valid set of instructions to pass to your terminal, printing a very basic python command: $ python -m "print('hello world')" hello world $ python >>> print('hello world') hello world 2.2 Installing from pip pip is the easiest way to install the latest version of serpentTools. First, ensure that you have numpy installed, as this is one of the required packages that is tricky to install. You can check by opening up a your preferred terminal and executing $ python -c "import numpy" If this fails, please consult Obtaining a Python Distribution. Next, installation with pip can be completed with: $ python -m pip install --user --upgrade pip serpentTools This installs the dependencies of the package, the latest serpentTools release, and upgrades your version of pip along the way. When a new release is issued, run the command again to install the updated version. If you wish to install the development branch to get the latest updates as they happen, use the following command: $ python -m pip install -e git+https://www.github.com/CORE-GATECH-GROUP/serpent-tools. ,!git@develop#egg=serpentTools 7 serpentTools Documentation Note: Changes to the development branch may not always be back-compatible and may cause non-ideal outcomes. Be sure to check the Changelog before/after updating from the develop branch See also pip install from git 2.3 Installing from a Release 1. Download the source code for the latest release from GitHub releases as a .zip or .tar.gz compressed file. 2. Extract/decompress the contents somewhere convenient and memorable 3. Open your terminal and navigate to this directory: $ cd path/to/release 4. Install using our setup script: $ python setup.py install 5. Verify the install by running our test suite: $ python setup.py test 2.4 Installing via git The newest features are available on the develop branch before getting pushed to the master branch. We try to give decent notice when features are going to change via warning messages and our Changelog, but changes to the API and other functionality can occur across the develop branch. 1. Clone the repository and checkout the branch of your choosing. The default is develop: $ git clone https://github.com/CORE-GATECH-GROUP/serpent-tools.git $ cd serpent-tools $ git checkout master 2. Install using our setup script: $ python setup.py install 3. Verify the install by running our test suite: $ python setup.py test 8 Chapter 2. Installation serpentTools Documentation 2.5 Obtaining a Python Distribution Obtaining a version of python into which serpent-tools can be installed varies by operating system, with Win- dows requiring the most finesse. 2.5.1 Linux/Mac/Unix-like Operating Systems If you don’t have numpy installed, you will have to obtain it from your package manager or from pip: # ubuntu $ sudo apt-get install python-numpy # pip $ sudo pip install --upgrade numpy If you already have numpy, then the pip installtion process will take care of our other dependencies. 2.5.2 Windows The easiest and most painless way to obtain packages like numpy on Windows is with either the Anaconda or Mini- conda distributions. Each of these also includes the Anaconda Prompt which is a modified terminal that plays better with Python. The former comes with a few hundred packages, included most of the ones needed for this project, bundled for you. The latter is a very small distribution and requires you to install the packages you want via conda. Should you choose this route, then you need to launch the Anaconda Prompt and install with: $ conda install setuptools numpy matplotlib pyyaml This prompt is what you should use when following the instructions in in Installation. 2.5. Obtaining a Python Distribution 9 serpentTools Documentation 10 Chapter 2. Installation CHAPTER THREE CHANGELOG 3.1 0.9.2 • Officially support installing under Python 3.8 • Support for passing threshold values to hexagonal detector plots - #351 3.1.1 Bug Fixes • Detector reader can handle sequential detectors with very similar names - #374. • serpentTools doesn’t make any modifications to the logging state, other than introducing package-wide logger. • Colorbars for mesh plots are placed next to their corresponding plot, rather than near the last drawn plot - #372 3.2 0.9.1 3.2.1 Bug Fixes • Sensitivity arrays generated with sens opt history 1 will no longer overwrite
Recommended publications
  • The First Biclique Cryptanalysis of Serpent-256
    The First Biclique Cryptanalysis of Serpent-256 Gabriel C. de Carvalho1, Luis A. B. Kowada1 1Instituto de Computac¸ao˜ – Universidade Federal Fluminense (UFF) – Niteroi´ – RJ – Brazil Abstract. The Serpent cipher was one of the finalists of the AES process and as of today there is no method for finding the key with fewer attempts than that of an exhaustive search of all possible keys, even when using known or chosen plaintexts for an attack. This work presents the first two biclique attacks for the full-round Serpent-256. The first uses a dimension 4 biclique while the second uses a dimension 8 biclique. The one with lower dimension covers nearly 4 complete rounds of the cipher, which is the reason for the lower time complex- ity when compared with the other attack (which covers nearly 3 rounds of the cipher). On the other hand, the second attack needs a lot less pairs of plain- texts for it to be done. The attacks require 2255:21 and 2255:45 full computations of Serpent-256 using 288 and 260 chosen ciphertexts respectively with negligible memory. 1. Introduction The Serpent cipher is, along with MARS, RC6, Twofish and Rijindael, one of the AES process finalists [Nechvatal et al. 2001] and has not had, since its proposal, its full round versions attacked. It is a Substitution Permutation Network (SPN) with 32 rounds, 128 bit block size and accepts keys of sizes 128, 192 and 256 bits. Serpent has been targeted by several cryptanalysis [Kelsey et al. 2000, Biham et al. 2001b, Biham et al.
    [Show full text]
  • Multiple New Formulas for Cipher Performance Computing
    International Journal of Network Security, Vol.20, No.4, PP.788-800, July 2018 (DOI: 10.6633/IJNS.201807 20(4).21) 788 Multiple New Formulas for Cipher Performance Computing Youssef Harmouch1, Rachid Elkouch1, Hussain Ben-azza2 (Corresponding author: Youssef Harmouch) Department of Mathematics, Computing and Networks, National Institute of Posts and Telecommunications1 10100, Allal El Fassi Avenue, Rabat, Morocco (Email:[email protected] ) Department of Industrial and Production Engineering, Moulay Ismail University2 National High School of Arts and Trades, Mekns, Morocco (Received Apr. 03, 2017; revised and accepted July 17, 2017) Abstract are not necessarily commensurate properties. For exam- ple, an online newspaper will be primarily interested in Cryptography is a science that focuses on changing the the integrity of their information while a financial stock readable information to unrecognizable and useless data exchange network may define their security as real-time to any unauthorized person. This solution presents the availability and information privacy [14, 23]. This means main core of network security, therefore the risk analysis that, the many facets of the attribute must all be iden- for using a cipher turn out to be an obligation. Until now, tified and adequately addressed. Furthermore, the secu- the only platform for providing each cipher resistance is rity attributes are terms of qualities, thus measuring such the cryptanalysis study. This cryptanalysis can make it quality terms need a unique identification for their inter- hard to compare ciphers because each one is vulnerable to pretations meaning [20, 24]. Besides, the attributes can a different kind of attack that is often very different from be interdependent.
    [Show full text]
  • Serpent: a Proposal for the Advanced Encryption Standard
    Serpent: A Proposal for the Advanced Encryption Standard Ross Anderson1 Eli Biham2 Lars Knudsen3 1 Cambridge University, England; email [email protected] 2 Technion, Haifa, Israel; email [email protected] 3 University of Bergen, Norway; email [email protected] Abstract. We propose a new block cipher as a candidate for the Ad- vanced Encryption Standard. Its design is highly conservative, yet still allows a very efficient implementation. It uses S-boxes similar to those of DES in a new structure that simultaneously allows a more rapid avalanche, a more efficient bitslice implementation, and an easy anal- ysis that enables us to demonstrate its security against all known types of attack. With a 128-bit block size and a 256-bit key, it is as fast as DES on the market leading Intel Pentium/MMX platforms (and at least as fast on many others); yet we believe it to be more secure than three-key triple-DES. 1 Introduction For many applications, the Data Encryption Standard algorithm is nearing the end of its useful life. Its 56-bit key is too small, as shown by a recent distributed key search exercise [28]. Although triple-DES can solve the key length problem, the DES algorithm was also designed primarily for hardware encryption, yet the great majority of applications that use it today implement it in software, where it is relatively inefficient. For these reasons, the US National Institute of Standards and Technology has issued a call for a successor algorithm, to be called the Advanced Encryption Standard or AES.
    [Show full text]
  • Differential Factors: Improved Attacks on Serpent
    Cryptographic Properties of S-boxes Differential Factors Improved Attacks on Serpent Conclusion Differential Factors: Improved Attacks on Serpent Cihangir TEZCAN and Ferruh Ozbudak¨ Department of Mathematics Middle East Technical University Institute of Applied Mathematics Department of Cryptography Middle East Technical University LightSEC 2014 Istanbul,_ Turkey Cihangir TEZCAN and Ferruh Ozbudak¨ Differential Factors: Improved Attacks on Serpent Cryptographic Properties of S-boxes Differential Factors Improved Attacks on Serpent Conclusion Outline 1 Cryptographic Properties of S-boxes 2 Differential Factors 3 Improved Attacks on Serpent 4 Conclusion Cihangir TEZCAN and Ferruh Ozbudak¨ Differential Factors: Improved Attacks on Serpent Cryptographic Properties of S-boxes Differential Factors Improved Attacks on Serpent Conclusion S-box Properties and Cryptanalysis Confusion layer of cryptographic algorithms mostly consists of S-boxes. S-box Properties and Cryptanalysis 1 Differential Uniformity => Differential Cryptanalysis 2 Non-linear Uniformity => Linear Cryptanalysis 3 Branch Number => Algebraic and Cube Attacks 4 Number of Shares => Side-Channel Attacks, DPA 5 Undisturbed Bits => Truncated, Impossible, Improbable Differential Cryptanalysis Cihangir TEZCAN and Ferruh Ozbudak¨ Differential Factors: Improved Attacks on Serpent Example (Serpent S1) 1 Input: 4x => Output: ?1?? 2 Input: 8x => Output: ?1?? 3 Input: Cx => Output: ?0?? 4 Output: 1x => Input: 1??? 5 Output: 4x => Input: 1??? 6 Output: 5x => Input: 0??? Cryptographic Properties of S-boxes
    [Show full text]
  • P4-3200-Gentoo.Pdf
    p4-3200-gentoo libgcrypt Ciphers: Absolute Time by Data Length 1 0.1 0.01 0.001 Seconds 0.0001 1e-05 1e-06 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Serpent Twofish Blowfish CAST5 3DES p4-3200-gentoo libgcrypt Ciphers: Speed by Data Length 25 20 15 10 Megabyte / Second 5 0 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Serpent Twofish Blowfish CAST5 3DES p4-3200-gentoo libmcrypt Ciphers: Absolute Time by Data Length 1 0.1 0.01 Seconds 0.001 0.0001 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Twofish xTEA Loki97 GOST 3DES Serpent CAST6 Safer+ Blowfish CAST5 p4-3200-gentoo libmcrypt Ciphers: Speed by Data Length 45 40 35 30 25 20 Megabyte / Second 15 10 5 0 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Twofish xTEA Loki97 GOST 3DES Serpent CAST6 Safer+ Blowfish CAST5 p4-3200-gentoo Botan Ciphers: Absolute Time by Data Length 1 0.1 0.01 0.001 Seconds 0.0001 1e-05 1e-06 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Twofish GOST Blowfish 3DES Serpent CAST6 xTEA CAST5 p4-3200-gentoo Botan Ciphers: Speed by Data Length 40 35 30 25 20 Megabyte / Second 15 10 5 0 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Twofish GOST Blowfish 3DES Serpent CAST6 xTEA CAST5 p4-3200-gentoo Crypto++ Ciphers: Absolute Time by Data Length 1 0.1 0.01 0.001 Seconds 0.0001 1e-05 1e-06 10 100 1000 10000 100000 1000000 Data Length in Bytes Rijndael Twofish GOST Blowfish 3DES Serpent CAST6 xTEA CAST5 p4-3200-gentoo Crypto++ Ciphers: Speed by Data Length 50 45 40 35
    [Show full text]
  • Applications of Search Techniques to Cryptanalysis and the Construction of Cipher Components. James David Mclaughlin Submitted F
    Applications of search techniques to cryptanalysis and the construction of cipher components. James David McLaughlin Submitted for the degree of Doctor of Philosophy (PhD) University of York Department of Computer Science September 2012 2 Abstract In this dissertation, we investigate the ways in which search techniques, and in particular metaheuristic search techniques, can be used in cryptology. We address the design of simple cryptographic components (Boolean functions), before moving on to more complex entities (S-boxes). The emphasis then shifts from the construction of cryptographic arte- facts to the related area of cryptanalysis, in which we first derive non-linear approximations to S-boxes more powerful than the existing linear approximations, and then exploit these in cryptanalytic attacks against the ciphers DES and Serpent. Contents 1 Introduction. 11 1.1 The Structure of this Thesis . 12 2 A brief history of cryptography and cryptanalysis. 14 3 Literature review 20 3.1 Information on various types of block cipher, and a brief description of the Data Encryption Standard. 20 3.1.1 Feistel ciphers . 21 3.1.2 Other types of block cipher . 23 3.1.3 Confusion and diffusion . 24 3.2 Linear cryptanalysis. 26 3.2.1 The attack. 27 3.3 Differential cryptanalysis. 35 3.3.1 The attack. 39 3.3.2 Variants of the differential cryptanalytic attack . 44 3.4 Stream ciphers based on linear feedback shift registers . 48 3.5 A brief introduction to metaheuristics . 52 3.5.1 Hill-climbing . 55 3.5.2 Simulated annealing . 57 3.5.3 Memetic algorithms . 58 3.5.4 Ant algorithms .
    [Show full text]
  • Hash Function Luffa Supporting Document
    Hash Function Luffa Supporting Document Christophe De Canni`ere ESAT-COSIC, Katholieke Universiteit Leuven Hisayoshi Sato, Dai Watanabe Systems Development Laboratory, Hitachi, Ltd. 15 September 2009 Copyright °c 2008-2009 Hitachi, Ltd. All rights reserved. 1 Luffa Supporting Document NIST SHA3 Proposal (Round 2) Contents 1 Introduction 4 1.1 Updates of This Document .................... 4 1.2 Organization of This Document ................. 4 2 Design Rationale 5 2.1 Chaining .............................. 5 2.2 Non-Linear Permutation ..................... 6 2.2.1 Sbox in SubCrumb ..................... 6 2.2.2 MixWord .......................... 7 2.2.3 Constants ......................... 9 2.2.4 Number of Steps ..................... 9 2.2.5 Tweaks .......................... 9 3 Security Analysis of Permutation 10 3.1 Basic Properties .......................... 10 3.1.1 Sbox S (Luffav2) ..................... 10 3.1.2 Differential Propagation . 11 3.2 Collision Attack Based on A Differential Path . 13 3.2.1 General Discussion .................... 13 3.2.2 How to Find A Collision for 5 Steps without Tweaks . 14 3.3 Birthday Problem on The Unbalanced Function . 15 3.4 Higher Order Differential Distinguisher . 15 3.4.1 Higher Order Difference . 16 3.4.2 Higher Order Differential Attack on Luffav1 . 16 3.4.3 Higher Order Differential Property of Qj of Luffav2 . 17 3.4.4 Higher Order Differential Attack on Luffav2 . 18 4 Security Analysis of Chaining 18 4.1 Basic Properties of The Message Injection Functions . 20 4.2 First Naive Attack ........................ 21 4.2.1 Long Message Attack to Find An Inner Collision . 21 4.2.2 How to Reduce The Message Length . 21 4.2.3 Complexity of The Naive Attack .
    [Show full text]
  • Differential-Linear Cryptanalysis Revisited
    Differential-Linear Cryptanalysis Revisited C´elineBlondeau1 and Gregor Leander2 and Kaisa Nyberg1 1 Department of Information and Computer Science, Aalto University School of Science, Finland fceline.blondeau, [email protected] 2 Faculty of Electrical Engineering and Information Technology, Ruhr Universit¨atBochum, Germany [email protected] Abstract. Block ciphers are arguably the most widely used type of cryptographic primitives. We are not able to assess the security of a block cipher as such, but only its security against known attacks. The two main classes of attacks are linear and differential attacks and their variants. While a fundamental link between differential and linear crypt- analysis was already given in 1994 by Chabaud and Vaudenay, these at- tacks have been studied independently. Only recently, in 2013 Blondeau and Nyberg used the link to compute the probability of a differential given the correlations of many linear approximations. On the cryptana- lytical side, differential and linear attacks have been applied on different parts of the cipher and then combined to one distinguisher over the ci- pher. This method is known since 1994 when Langford and Hellman presented the first differential-linear cryptanalysis of the DES. In this paper we take the natural step and apply the theoretical link between linear and differential cryptanalysis to differential-linear cryptanalysis to develop a concise theory of this method. We give an exact expression of the bias of a differential-linear approximation in a closed form under the sole assumption that the two parts of the cipher are independent. We also show how, under a clear assumption, to approximate the bias effi- ciently, and perform experiments on it.
    [Show full text]
  • LNCS 2887, Pp
    Differential-Linear Cryptanalysis of Serpent Eli Biham1, Orr Dunkelman1, and Nathan Keller2 1 Computer Science Department, Technion, Haifa 32000, Israel {biham,orrd}@cs.technion.ac.il 2 Mathematics Department, Technion, Haifa 32000, Israel [email protected] Abstract. Serpent is a 128-bit SP-Network block cipher consisting of 32 rounds with variable key length (up to 256 bits long). It was selected as one of the 5 AES finalists. The best known attack so far is a linear attack on an 11-round reduced variant. In this paper we apply the enhanced differential-linear cryptanalysis to Serpent. The resulting attack is the best known attack on 11-round Serpent. It requires 2125.3 chosen plaintexts and has time complexity of 2139.2. We also present the first known attack on 10-round 128-bit key Serpent. These attacks demonstrate the strength of the enhanced differential-linear cryptanalysis technique. 1 Introduction Serpent [1] is one of the 5 AES [13] finalists. It has a 128-bit block size and accepts key sizes of any length between 0 and 256 bits. Serpent is an SP-Network with 32 rounds and 4-bit to 4-bit S-boxes. Since its introduction in 1997, Serpent has withstood a great deal of cryptan- alytic efforts. In [8] a modified variant of Serpent in which the linear transforma- tion of the round function was modified into a permutation was analyzed. The change weakens Serpent, as this change allows one active S-box to activate only one S-box in the consecutive round. In Serpent, this is impossible, as one active S-box leads to at least two active S-boxes in the following round.
    [Show full text]
  • Efficient FPGA Implementation of Block Cipher MISTY1
    Efficient FPGA Implementation of Block Cipher MISTY1 Gael Rouvroy, Francois-Xavier Standaert Jean-Jacques Quisquater, Jean-Didier Legat Universite catholique de Louvain, Microelectronic Laboratory Place du Levant, 3, 1348 Louvain-La-Neuve, Belgium rouvroy,standaert,quisquater,[email protected] Abstract on the basis of the theory of provable security against dif- ferential and linear cryptanalysis. In addition, it allows us NESSIE is a 3-year research project (2000-2002). The to realize high speed encryption on hardware platforms as goal of the project is to put forward some algorithms to ob- well as on software environments [2]. The detailed spec- tain a set of the next generation of cryptographic primitives. ification can be found in [2, 3]. In this paper, we study In order to achieve this objective, the project needs to evalu- the efficiency of MISTY1 encryption for an FPGA imple- ate mathematical security levels and software/hardware im- mentation. Our fast core is detailed and compared to AES plementations. This paper investigates the significance of RIJNDAEL, SERPENT, KHAZAD and previous MISTY1 an FPGA implementation of the block cipher MISTY1. Re- circuits to determine the efficiency of our MISTY1 FPGA programmable devices such as FPGA’s are highly attrac- implementation. tive solutions for hardware implementations of encryption The paper is organized as follows: Section 2 de- algorithms. A strong focus is placed on a high through- scribes the FPGA technology used and the synthe- put circuit which completely unrolls all the MISTY1 rounds sis/implementation tools; Section 3 gives a short mathemat- and pipelines them in order to increase the data rate.
    [Show full text]
  • Functional Correctness Proofs of Encryption Algorithms
    Functional Correctness Proofs of Encryption Algorithms Jianjun Duan1, Joe Hurd2, Guodong Li1, Scott Owens1, Konrad Slind1, and Junxing Zhang1 1 School of Computing, University of Utah 2 Oxford University Computer Lab Abstract. We discuss a collection of mechanized formal proofs of sym- metric key block encryption algorithms (AES, MARS, Twofish, RC6, Serpent, IDEA, and TEA), performed in an implementation of higher order logic. For each algorithm, functional correctness, namely that de- cryption inverts encryption, is formally proved by a simple but effective proof methodology involving application of invertibility lemmas in the course of symbolic evaluation. Block ciphers are then lifted to the en- cryption of arbitrary datatypes by using modes of operation to encrypt lists of bits produced by a polytypic encoding method. 1 Introduction Symmetric-key block ciphers represent an important part of today’s security in- frastructure. Besides their main application, information hiding, block ciphers are also used in the implementation of pseudo-random number generators, mes- sage authentication protocols, stream ciphers, and hash functions. There are two main properties that a cipher should have: first, Functional Correctness, namely that decryption should invert encryption; second, Security, namely that the cipher should be hard to break. In this paper, we focus solely on the first property. The formal methods community has, to date, paid surprisingly little atten- tion to the functional correctness of block ciphers. This is a pity, since these algorithms provide an application area in which the algorithms are heavily used, security-critical, often well-specified, and well within the scope of theorem prov- ing methods. In this paper, we formalize seven block ciphers and prove their functional correctness.
    [Show full text]
  • Efficient FPGA Implementations of Block Ciphers KHAZAD and MISTY1
    Efficient FPGA Implementations of Block Ciphers KHAZAD and MISTY1 Francois-Xavier Standaert, Gael Rouvroy, Jean-Jacques Quisquater, Jean-Didier Legat fstandaert,rouvroy,quisquater,[email protected] UCL Crypto Group Laboratoire de Microelectronique Universite Catholique de Louvain Place du Levant, 3, B-1348 Louvain-La-Neuve, Belgium Abstract. The technical analysis used in determining which of the NESSIE candidates will be selected as a standard block cipher includes efficiency testing of both hardware and soft- ware implementations of candidate algorithms. Reprogrammable devices such as Field Pro- grammable Gate Arrays (FPGA’s) are highly attractive options for hardware implementations of encryption algorithms and this report investigates the significance of FPGA implementa- tions of the block ciphers KHAZAD and MISTY1. A strong focus is placed on high throughput circuits and we propose designs that unroll the cipher rounds and pipeline them in order to optimize the frequency and throughput results. In addition, we implemented solutions that allow to change the plaintext and the key on a cycle-by-cycle basis with no dead cycle. The resulting designs fit on a VIRTEX1000 FPGA and have throughput between 8 and 9 Gbits=s. This is an impressive result compared with existing FPGA implementations of block ciphers within similar devices. 1 Introduction The NESSIE project1 is about to put forward a portfolio of strong cryptographic primitives that has been obtained after an open call and been evaluated using a transparent and open process. These primitives include block ciphers, stream ciphers, hash functions, MAC algorithms, digital signature schemes, and public-key encryption schemes. The technical analysis used in determining which of the NESSIE candidates will be selected as a standard block cipher includes efficiency testing of both hardware and software implementations of candidate algorithms.
    [Show full text]