1993-06-18 - xor w/prbs

Header Data

From: TO1SITTLER@APSICC.APS.EDU (Kragen Sittler)
To: cypherpunks@toad.com
Message Hash: afd8814e2cdeeefe826595eca81c4c4cc1b858119bb02b740ac1ebc7a026e34d
Message ID: <930617221448.c97@APSICC.APS.EDU>
Reply To: N/A
UTC Datetime: 1993-06-18 04:18:34 UTC
Raw Date: Thu, 17 Jun 93 21:18:34 PDT

Raw message

From: TO1SITTLER@APSICC.APS.EDU (Kragen Sittler)
Date: Thu, 17 Jun 93 21:18:34 PDT
To: cypherpunks@toad.com
Subject: xor w/prbs
Message-ID: <930617221448.c97@APSICC.APS.EDU>
MIME-Version: 1.0
Content-Type: text/plain


Some MORON wrote an article in Computer Shopper, about doing a one-time pad
with a PRBS... in fact, he even challenged any cryptographers to break it.
(He used a 32-bit seed for the PRBS.)
He also included a number of fallacies in the article, among them that you
change your algorithm when you think the enemy knows what it is, but you change
your keys regularly even when you don't have any basis to think so.

How *do* you break this cypher?  He is generating a lot of random numbers
between 0 and 255, and xor'ing each successive one with the next byte of plain-
text.  I know that this is a trivial cypher to break, according to PRZ at
least, but how do you do it?

This arrogant moron with pretensions to cryptographic knowledge needs to be
corrected.  (Some might say the above epithet applies to me too, to which I
reply:  I don't pretend to know crypto.  I just read cypherpunks.)

He is:
David Stafford, care of Computer Shopper
ONe Park Avenue
New York, NY 10016

This kind of misinformation is dangerous to the public at large.

The article is on page 558 af the July, 1993 Computer Shopper.
It uses a random number generator, (now that I look, it's not a PRBS) from the
June, 1993, Computer Shopper, by the same author.

The random number generator used is like this:

It uses a global variable called RandomSeed, and each time thru the random
function, RandomSeed, a 32-bit long, is multiplied by 0x015a4e35, and
incremented; and then the new Randomseed, modulo the largest desired return
value, is returned.
(Actually, mod the largest desired value +1.)

a code fragment:

#define MULTIPLIER 0x015a4e35L
#define INCREMENT 1

long RandomSeed;

int GetRandomNumber(int Range)
	{
	RandomSeed = MULTIPLIER * RandomSeed + INCREMENT;

	return(RandomSeed % Range);
	}

So how do you crack this cipher without trying all the keys, guys?

Kragen





Thread