Security and Cryptography
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsSystem AdministrationSecurity and Cryptography

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old September 4th, 2011, 02:39 PM
Karl-Uwe Frank Karl-Uwe Frank is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jul 2011
Posts: 48 Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level)Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level)Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level)Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level)Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level)Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level)Karl-Uwe Frank User rank is Second Lieutenant (5000 - 10000 Reputation Level) 
Time spent in forums: 11 h 19 m 38 sec
Reputation Power: 54
How to use an Linear Congruential Generator for cryptographic Purpose

Hi,

today I'm publishing the improved Version of my former Idea on how to using an Linear Congruential Generator for cryptographic Purposes


Here the basic Principle again:


The main Functions of my new Encryption Algorithm (SEA1m5 ) consisting in the following parts


1) A modified use of a regular Linear Congruential Generator (mLCG) feeding now with one Seed and 3 every-time changing Values for the Constants (A, C, M) for every single Encryption, instead of normally using one Seed and three fixed Constants. Long-term Test of the modified LCG (mLCG) showing a very resonable discrete Uniform Distribution of random Numbers.

Similar to:
* http://en.wikipedia.org/wiki/Linear_congruential_generator



2) A simple Hash-Function using MD5-Checksums which are re-hashed over several Rounds as a Key stretching Function.

Similar to:
* http://en.wikipedia.org/wiki/Key_strengthening



3) A Password-Based Random Initialisation Vector Function (PRND_IV) used to create the 4 IV (X, A, C, M) for the modified LCG (mLCG), which are in fact nearly similar to "Numbers used once". This function (PRND_IV) will generate the 4 IV (X, A, C, M) out of a random ASCII-String and the Password. Both represented by re-hashed MD5-Checksum‘s (MD5CHF) which are XOR enciphered, than split up in Numbers of certain length to initialise the Values X, A, C and M for the modified LCG (mLCG).



4) The random String, from which the 4 IV (X, A, C, M) are derived, will be XOR encrypted with the salted Password and placed in Front of every encrypted Message. This way we can secretly submit all 4 IV (X, A, C, M) for the modified LCG (mLCG) and the Message can be deciphered, if the receiver has Knowledge of the Password.


Now just a short Description of the enciphering and deciphering Steps:

'# Encipher Steps (short Description)'
(** Please find the corresponding Number in the JavaScript-Listing.)


(** e1)
//
Generate a random ASCII-String, build it‘s MD5-Checksum and pick some Values of it as Password-Salt

(** e2)
//
Generate a random ASCII-String as the Basis for the Password-Based Random Initialisation Vector Function. (PRND_IV)

(** e3)
//
Derive the 4 IV (Values X, A, C, M) from this random ASCII-String using the Password-Based Random Initialisation Vector Function (PRND_IV). This will put the modified LCG (mLCG) into it‘s internal State for creating the Key-Stream.

(** e4)
//
XOR Encipher the HEX-String of Random-IV with the MD5-based Chained Hash (MD5CHF) of the salted Password. The Result will be the Secret-IV.

(** e5)
//
Prepare the Message-Header containing a Marker for the used Version of the Encryption Algorithm, the Value for the MD5-Based Chained Hash Rounds, the HEX-Value of the Password-Salt and finally the HEX-Value of the Secret-IV.

(** e6)
//
Perform the XOR-Encryption of the Data-Stream with the Key-Stream using the formerly under (** e3) created 4 IV (Values X, A, C, M) with the modified LCG (mLCG) until the End of the Data-Stream has been reached.

(** e7)
//
In this JavaScript-Implementation, as we Encipher just a Text, the Message-Header will be placed in Front of the enciphered Message. When using the Encryption Algorithm on binary Data or a Communication-Stream the Message-Header of course needs to be written or send before the actual enciphered Data.



###

'# Decipher Steps (short Description)'

(** Please find the corresponding Number in the JavaScript-Listing.)


(** d1)
//
Check if the enciphered Message has the proper Version, extract the Value for the MD5-Based Chained Hash Rounds and the HEX-Value of the Password-Salt.

(** d2)
//
XOR Decipher the HEX-String of the Secret-IV from the Beginning of the enciphered Message, using the MD5-based Chained Hash (MD5CHF) of the salted Password. The Result will be the Random-IV from which the 4 IV (Values X, A, C, M) will be derived.

(** d3)
//
Now re-generate the 4 IV (Values for X, A, C, M) out of the Random-IV using a Password-Based Random Initialisation Vector Function (PRND_IV). This will put the modified LCG (mLCG) into it‘s internal State for creating the Key-Stream for Deciphering the Data-Stream.

(** d4)
//
Perform the XOR-Decryption of the Cipher-Stream with the Key-Stream using the formerly under (** d3) re-created 4 IV (Values X, A, C, M) with the modified LCG (mLCG) until the End of the Cipher-Stream has been reached and regain the Data-Stream.


A full functional Example of the Encryption Algorithm (SEA1m5) including Source-Code in JavaScript is available here

JavaScript Example

Cheers,
Karl-Uwe




//######################################################################
//
// Copyright (c) 2011, Karl-Uwe Frank
//
// This Software and it‘s Encryption Algorithm (SEA1m5) is released
// under the Non-Profit Open Software License 3.0 (NPOSL-3.0)
// http://www.opensource.org/licenses/NOSL3.0
//
// This Code and the Encryption Algorithm (SEA1m5) can be used freely
// for all personal, academic or non-commercial purposes.
//
// For commercial purposes please contact karl.frank [a T] freecx.co.uk
//
//######################################################################

Last edited by Karl-Uwe Frank : September 6th, 2011 at 04:27 PM. Reason: Ohh just some more typo :-(

Reply With Quote
Reply

Viewing: Dev Shed ForumsSystem AdministrationSecurity and Cryptography > How to use an Linear Congruential Generator for cryptographic Purpose

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap