1 / 10

CryptoViz

Frank Rowe John Gaetano Chuck Figiel. CryptoViz. CryptoViz – The Basics. CryptoViz implements and visualizes the Data Encryption Standard (DES) algorithm. DES was used by the government and industry from 1976-1999, but is now considered insecure.

marge
Télécharger la présentation

CryptoViz

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Frank Rowe John GaetanoChuck Figiel CryptoViz

  2. CryptoViz – The Basics • CryptoViz implements and visualizes the Data Encryption Standard (DES) algorithm. • DES was used by the government and industry from 1976-1999, but is now considered insecure. • Client: Dr. Don Spickler from the Math & Computer Science Department at Salisbury University.

  3. CryptoViz – Features • Fully implements the DES algorithm in Java. • User interface for quickly encrypting and decrypting data. • Visualizes the DES key generation algorithm using Java Swing and 2DGraphics. • Detailed interactive diagram of the DES encryption algorithm. • Built-in help system

  4. SVN/Google Code • Subversion, a version control system. • Allows developers to maintain current and past versions of code across multiple environments. • No need to email files or swap around USB sticks. • All code changes (diffs) along with comments are saved. • Server: Google Code • Free repository for open source applications • No need to setup and configure a svn server manually • Includes a wiki , additional file hosting, and project management tools. • http://code.google.com/p/cryptoviz/ • Source code: http://code.google.com/p/cryptoviz/source/browse/#svn/trunk • Program download: http://code.google.com/p/cryptoviz/downloads/list • Changelog: http://code.google.com/p/cryptoviz/source/list • Clients: • Many available ( http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients ) • For Microsoft Windows we used TortoiseSVN (gui) • Under linux we used the command line client “svn”

  5. Development Tools • We primarily used simple text editors in Linux and Windows environments (gedit, notepad++). • Began to use Netbeans IDE about halfway through the project. • GUI creation is much easier/better. • Speeds up development through code completion and automation of other repetitive tasks.

  6. The DES algorithm • Block cipher; uses a 64-bit block size. • Base key is 56 bits • Used to generate 16 subkeys, each of 48 bits • Done with a series of shifts and permutations • Initial permutation • 16 rounds of processing • This is the core of the algorithm, called the “Feistel Structure” • Each round uses one of the subkeys and the previous round’s output. • Each round consists of a left-right swap, an expansion function, an XOR, de-expansion function (the “S-boxes”), a permutation, and another XOR. • Final permutation

  7. Implementing DES • BitList • Essentially a fancy array of booleans • Extends built-in BitSet class • Bit Set sometimes creates more bits than requested, doesn’t report size “properly”, and doesn’t have useful constructors. BitList fixes those issues. • BitList also attaches a “color” to each bit that sticks to it with it when the BitList is permuted or copied. • DES.permute() • Copies bits of an input BitList to an output BitList • Uses the mapping provided by an input array of integers • Bit-shifts, left-right swaps, expansion function are all implemented as permutations .

  8. Implementing DES • S-Boxes • Reduces 6 bits down to 4 bits. • This is not a permutation. • There are 8 S-boxes, all similar. • We implemented them as a lookup table. Input is an integer (1-8) and a 6-bit BitList; output is a 4-bit Bitlist. • DES.generateKeys() • 64 bit-input, but 8 bits are unused • Returns an array of 16 BitLists, each of length 48. • DES.round() • DES.encrypt() • DES.decrypt()

  9. Visualization • Java Graphics2D • Animates a binary string based off permutation map. • Individual bits are created as Node objects • Animation is contained within separate thread. • Overrides paintComponent method for JPanel. • Update position of nodes, repaint.

  10. CryptoViz – The Classes • AboutFrame.java HelpAbout • BitList.java Core data type, extends BitSet • ConvertString.java Additional functions for manipulating BitLists • CryptMain.java Main class • DES.java DES implementation • EncryptPanel.java Fiestel Structure, encryption and decryption • KeyFrame.java Key Generation • MyHelpSystem.java Displays help file (credit: Dr.Spickler) • Node.java For visualization • QuickDES.java Encryption & decryption of text files • RoundPanel.java Visualize an individual round • VisualizationPanel.java Core visualization code

More Related