Re: any help appreciated...:)
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


sci.crypt archive

Re: any help appreciated...:)

From: Gregory G Rose <ggr@qualcomm.com>
Date: Fri Jun 10 2005 - 23:42:31 CEST

In article <d8aqr6$us8$1@news.hispeed.ch>, tek <lordsir@yahoo.com> wrote:
>Hi, i'm trying to solve this problem:
>
>x1 = a1 xor b1 xor c1 xor d1
>x2 = a2 xor b2 xor c2 xor d2
>x3 = a3 xor b3 xor c3 xor d3
>x4 = a4 xor b4 xor c4 xor d4
>
>conditions:
>a: a2=a3=a1 xor a4
>b: b1=b2=b3 xor b4
>c: c1=c4=c2 xor c3
>d: d3=d4=d1 xor d2
>
>b,c,d are byte permutations of a
>
>can I make any predicition about a,b,c, or d if I know x?

You keep asking the question, in a group where
lots of people will try to answer any well-formed
question. I suggest to you that this means your
question is not well-formed.

So, I'm going to make some completely unjustified
assumptions about your question, then see if I can
get a meaningful answer. Of course it probably has
nothing to do with your actual question. In
particular, I have absolutely no idea what the
four lines under "conditions:" might mean.

I'm thinking that x, a, b, c, and d are 32-bit
words made up of four bytes each, and that x2 is
the second byte of x. Now, if "b,c,d are byte
permutations of a", that really means that there
are only 4 unique bytes on the right side. You
know x, which means that you have 4 bytes of
information about them. So, if the permutations
are both known and chosen such that nothing
cancels out on the right side, you have four
equations in four unknowns, and you can
presumably solve the system to recover a (and
hence b, c, and d).

If you don't know the permutations, there is more
information to be recovered, and a unique solution
might not be possible. If the permutations are
bad, you might have lost the information on the
right entirely, and have no information at all
about a, given x. For example, if the permutations
are the identity permutation, x is zero all the
time and you get nowhere.

I think one possible interpretation of your
conditions is that there are really only *two*
bytes worth of information on the right side, and
two other bytes that are effectively equal parity
checks of those bytes. Then part of the question
is, can you also recover the permutations?
If this interpretation is correct, there are
really only two variables on the right size, which
are actually a1 and a4. The parity bytes are
always the same, and if you look at the pattern in
which they are laid out, they always cancel out.
So, really, each of your four byte equations are
of the form: xn = (a1|a4) xor (a1|a4), where by
this notation (a1|a4) I mean that the byte is
either a1 or a4. Now, if the two bytes are both
the same byte, it cancels out and xn is zero. If
they are different, x_n is a1 xor a4 in all cases.
So, in this interpretation, the most information
you can ever get is one byte being the xor of a1
and a4. But you might not even get that. If x is
zero, you don't know whether the permutation was
the bad one (out of the 8 possible ones) where all
the information cancelled out, or whether a1 just
happens to be equal to a4. If any byte(s) of x are
non-zero, you can rule out some of the
permutations.

All this is speculation built on a house of
cards.

So, can you clarify your question?

Greg.

-- 
Greg Rose
232B EC8F 44C6 C853 D68F  E107 E6BF CD2F 1081 A37C
Qualcomm Australia: http://www.qualcomm.com.au
Received on Thu Sep 29 21:42:59 2005