SRS - Amber Jain

advertisement
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
Download