Graphics Programs Reference
In-Depth Information
Since the key is currently unknown, the
K
array is loaded up with what
currently is known, and the
S
array is filled with sequential values from 0 to
15. Then,
j
is initialized to 0, and the first three steps of the KSA are done.
Remember that all math is done modulo 16.
KSA step one:
i
=0
j
=
j
+
S
[
i
]+
K
[
i
]
j
=0+0+3=3
Swap
S
[
i
] and
S
[
j
]
K
[] = 3 15 2
XXXXX
3152
XXXXX
S
[] =
3
12
0
456789101112131415
KSA step two:
i
=1
j
=
j
+
S
[
i
]+
K
[
i
]
j
=3+1+15=3
Swap
S
[
i
] and
S
[
j
]
K
[] = 3 15 2
XXXXX
3152
XXXXX
S
[] = 3
0
2
1
456789101112131415
KSA step three:
i
=2
j
=
j
+
S
[
i
]+
K
[
i
]
j
=3+2+2=7
Swap
S
[
i
] and
S
[
j
]
K
[] = 3 15 2
XXXXX
3152
XXXXX
S
[]=30
7
1456
2
89101112131415
At this point,
j
isn't less than 2, so the process can continue.
S
[3] is 1,
j
is
7, and the first byte of keystream output was 9. So the zeroth byte of the key
should be 9 − 7 − 1 = 1.
This information can be used to determine the next byte of the key,
using IVs in the form of (4, 15,
X
) and working the KSA through to the
fourth step. Using the IV (4, 15, 9), the first byte of keystream is 6.
output = 6
A
=0
IV = 4, 15, 9
Key = 1, 2, 3, 4, 5