Software Requirements Specification Proposal And Reference Implementation Of A New Symmetric Cryptographic Algorithm http://amberj.devio.us/projects/crypto/ Master of Computer Applications Semester VIII Session Jan – May, 2011 Under the guidance of Mrs. Yasmin Shaikh Submitted By Amber Jain IC-2K7-05 International Institute of Professional Studies Devi Ahilya Vishwavidyalaya, Indore, M.P. 2011 Table of contents 0. REVISIONS 0 1. INTRODUCTION 1.1. Product Overview 1.2. Purpose 1.3. Scope 1 1 1 1 2. FUNCTIONAL REQUIREMENTS 2.1. Introduction 2.2. Inputs and Outputs 2.3. Exception Handling 2.4. Database Requirements 2 2 2 2 2 3. NON-FUNCTIONAL REQUIREMENTS 3.1. Performance Requirement 3.1.1. Static Requirements 3.1.2. Dynamic Requirements 3.1.3. Capacity Requirements 3.2. External Interface Requirements 3.2.1 User Interfaces 3.2.2 Hardware Interfaces 3.2.3 Software Interfaces 3.2.4 Communication Protocols 3.3 Design Constraints 3.3.1 Software Design Constraints 3.3.2 Hardware Design Constraints 3.3.3 User Interface Design Constraints 3.3.4 Standards Compliance 3.4 Software System Attributes 3.4.1 Reliability and Fault Tolerance 3.4.2 Availability 3.4.3 Security 3.4.4 Software Quality Attributes 3.4.5 Performance 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 5 6 APPENDICES: Appendix-A: References Appendix-B: Glossary 7 7 Revisions S. No. Description 1 Revision Number Software Requirements Specification 1 The latest revision of SRS document for this project is available at: http://amberj.devio.us/projects/crypto/files/ . Changes Initial SRS document. 1. Introduction 1.1. Product Overview This project titled “Proposal and reference implementation of a new symmetric cipher algorithm” (http://amberj.devio.us/projects/crypto/) includes the study of design guidelines and desired properties of symmetric cryptographic algorithms. This will be followed by proposal of a new symmetric cipher algorithm (based on my study) as well as a reference implementation of the proposed algorithm in Python 3 [2] programming language and test vectors for the proposed algorithm. 1.2. Purpose: The cryptographic algorithm, that will be proposed, is intended to be a general purpose symmetric cipher algorithm which will be suitable for many different applications (for e.g. bulk encryption, random bit generation, packet encryption etc.). The algorithm will also be implementable on wide variety of different platforms (including microprocessors, microcontrollers, custom VLSI chips etc.). This document is to outline features of algorithm that will be proposed as part of this project. This document will also describe requirements specification for this project in detail. 1.3. Scope In Scope: 1. Specification of proposed symmetric cipher algorithm. 2. Reference implementation of proposed algorithm. 3. Test vectors Out of Scope: 1. Efficient and optimal implementation of proposed algorithm. 2. Cryptographic application library for proposed algorithm for use by third party applications. 2. Functional Requirements 2.1. Introduction The proposed symmetric cryptographic algorithm will accept the file to be encrypted and return encrypted data in output file. 2.2. Inputs and Outputs The reference implementation will accept input in the form of a file specified as command line argument. It will output encrypted data on the console (or optionally to an output file with filename supplied to binary executable as a command line argument). 2.3. Exception Handling The preferred action in case of any exception or error in reference implementation (e.g. unable to open file or permission denied when writing to file) will be to print appropriate error message and exit program. 2.4. Database Requirements None. 3. Non-Functional Requirements 3.1. Performance Requirement 3.1.1. Static Requirements None. 3.1.2. Dynamic Requirements None. 3.1.3. Capacity Requirements None. 3.2. External Interface Requirements 3.2.1. User Interfaces The reference implementation will include a Command Line Interface (CLI) for user to interact with program. Various options will be available as combinations of command line options and/or arguments. 3.2.2. Hardware Interfaces The algorithm will be efficiently implementable in custom (special purpose) VLSI hardware as well as on general purpose large, medium and small sized processors (for e.g. microprocessors, microcontrollers and smart cards respectively). 3.2.3. Software Interfaces The reference implementation will be in Python 3 [2] programming language (and will execute on any system Python 3 interpreter has been ported to). The portability of other software implementations will depend on portability of chosen programming language. 3.2.4. Communication Protocols None. 3.3. Design Constraints 3.3.1. Software Design Constraints The reference implementation will conform to Unix Philosophy [1]. 3.3.2. Hardware Design Constraints None. For more details, refer to section [3.2.2. Hardware Interfaces] of the same document. 3.3.3. User Interface Design Constraints None. 3.3.4. Standards Compliance The proposed algorithm should conform to as large subset as possible of design guidelines that will be inferenced as part of study of existing symmetric cryptographic algorithms in this project. The inferenced design guidelines will in effect point to established standards used in designing symmetric cipher algorithms in the cryptographic community. 3.4. Software System Attributes 3.4.1. Reliability and Fault Tolerance The reference implementation source code should be reliable and of enterprise quality. 3.4.2. Availability The proposed algorithm will be placed in public domain and it will be unpatented in all countries. Anyone would freely be able to use the algorithm. The specification, source code and test data for the proposed algorithm would be available to anyone wishing to implement the algorithm, in accordance with country specific export laws. 3.4.3. Security The reference implementation will contain strong cryptographic algorithm, so even if it is created, maintained and distributed from liberal countries (where it is legal to do this), it falls under certain export/import and/or use restrictions in some other parts of the world. Please remember that export/import and/or use of strong cryptography software, providing cryptography hooks or even just communicating technical details about cryptography software is illegal in some parts of the world. So, when you import the reference implementation to your country, re-distribute it from there or even just email technical suggestions or even source patches to the author or other people you are strongly advised to pay close attention to any export/import and/or use laws which apply to you. Anyone associated with this project are not liable for any violations you make here. 3.4.4. Software Quality Attributes Adaptability: The algorithm should be efficiently implementable in custom (special purpose) VLSI hardware as well as on general purpose large, medium and small sized processors (for e.g. microprocessors, microcontrollers and smart cards respectively). Availability: The algorithm should be efficiently implementable in custom (special purpose) VLSI hardware as well as on general purpose large, medium and small sized processors (for e.g. microprocessors, microcontrollers and smart cards respectively). Correctness and consistency: The specification of proposed algorithm should be correct. The specification, reference implementation and test vectors should be consistent. Portability: The reference implementation will be in Python 3 programming language (and will execute on any system python interpreter has been ported to). The portability of other software implementations will depend on portability of choice of programming language. 3.4.5. Performance To be able to implement proposed algorithm on special purpose hardware (for e.g. custom VLSI chips, microcontrollers etc.), with the goal to decreasing memory requirements and execution time, special consideration should be given to possible (and alternative) simplifications of proposed algorithm. Appendix-A: References [1]: Unix Philosophy: Wikipedia (http://en.wikipedia.org/wiki/Unix_philosophy) [2]: Python 3: http://www.python.org/download/releases/3.0/ Appendix-B: Glossary CLI: Command Line Interface SRS: Software Requirements Specification VLSI: Very Large Scale Integration