فایل دانلود

Download Report

Transcript فایل دانلود

یا هلابند یاهزمر

stream cipher RC4

RC4

متیروگلا

دش یحارط تسو یر نار طسوت 1987 لاسرد هک تسا یا هلابند ی هدننکزمر کی

کولب کی یدورو کولبره یارب و دنک یم شزادرپ ار یدورو زا کولب کی نامز ره رد یکولب هدننکزمر

و هدرک شزادرپ هتسویپ روط هب ار یدورو رصانع یا هلابند ی هدننک زمر یلو دنک یم دیلوت یجورخ

.

دنک یم دیلوت یجورخ رصنع کی رابره دشاب یم ارگ تیاب ن ا تایلمع هک تسا ریغتم لوط اب یدیلک اب هلابند ی هدننکزمر دنک یم هدافتسا یفداصت تشگیاج زا متیروگلا نیا

 

LOGO

هلابند ی هدننکزمر

.

دنک یم یراذگ زمر ار هداس نتم کی زا رت گرزب یاه دحاو ای تیاب کی راب ره هلابند ی هدننکزمر

.

تساه تیاب زا یا هلابند تروص هب دیلک هلابند

یکولب یاه هدننک زمر هب تبسن و هدومن لمع رتعیرس هدننکزمر نیا هک تسا نیا یکولب یاه هدننک زمر هب تسن یا هلابند ی هدننک زمر ی هدمع زایتما

.

دیامن یم هدافتسا یرتمک یاهدک زا زا یکولب ی هدننکزم ر هکیلاح رد هدوب رتشیب دیلک ندوب یرارکت لامتحا دیامن یم هدافتسا فرصمراب کی یاهدیلک زا نوچ یکولب یاه هدننکزمر

.

دنک هدافتسا دناوتیم دیلک نیا فلتخم یاه تشگیاج LOGO

هلابند ی هدننکزمر راتخاس

دیلک

K

دیلک

K

تیاب هلابند هداس نتم

M

یفداصت هبش تیابدلوم ) دیلک هلابند دلوم ( دیلک هلابند نتم تیاب هلابند هدشزمر C نتم تیاب هلابند هدشزمر C یفداصت هبش تیابدلوم ) دیلک هلابند دلوم ( تیاب هلابند هداس نتم

M

یراذگزمر ی یاشگزمر

LOGO

Stream Ciphers – General Concept key state (data) next state function p

i

(c

i

) ks

i

c

i

(p

i

)

یفداصت هبش تیابدلوم ) دیلک هلابند دلوم ( LOGO

RC4

S-Box Creation

input key; if (key < 256 bytes) { repeat key until 256 bytes; } for (i=0; i < 256; ++i) { S[i] = i; // initialize S-Box K[i] = i th key byte; } j = 0; for (i = 0; i <256; ++i) { j = (j + S[i] + K[i]) mod 256; swap(S[i],S[j]); }

Keystream Generator

i = 0; j = 0; loop { i = (i+1) mod 256; j = (j+S[i]) mod 256; Swap(S[i],S[j]); t = (S[i] + S[j]) mod 256; ks_byte = S[t]; } 2 S-Box entries form index into S-Box Output S-Box entry (byte) S-Box: key dependent permutation of 0 to 255. (lookup table)

LOGO

LOGO

لاثم

تیاب هلابند هداس نتم

p

P= [ 1 2 2 2 ]

دیلک

K

K=[ 1 2 3 6 ]

یفداصت هبش تیابدلوم ) دیلک هلابند دلوم ( دیلک هلابند

k=?

تلاحرادرب

تیا بو هدراو S=[ 0 1 2 3 4 5 6 7 ] مینک دیلوت k رادقمره یتیب 8 دادعا دیلوت اب دنوش یم مامت و زا مینک تشگیاج یتشگیاج دیلوت s میهاوخ زا ار رگیدرابکی s یم k یاه

تقوم رادرب

T= [1 2 3 6 1 2 3 6 ]

نتم تیاب هلابند هدشزمر C

c=?

LOGO

Assume we use a 4 x 3-bit key, K, and plaintext P as below:

تاضورفم

K = [1 2 3 6] P = [1 2 2 2]

The first step is to generate the stream

.

Initialise the tate vector S and temporary vector T. S is initialised so the S[i] = i, and T is initialised so it is the key K (repeated as necessary).

S = [0 1 2 3 4 5 6 7] T = [1 2 3 6 1 2 3 6]

; Now perform the initial permutation on S.

j = 0; for i = 0 to 7 do j = (j + S[i] + T[i]) mod 8 Swap(S[i],S[j]); end

یزاس هدام

s

LOGO

رادرب ا

We will step through for each iteration of i:

S = [0 1 2 3 4 5 6 7] T = [1 2 3 6 1 2 3 6]

For

i = 0:

j = (0 + 0 + 1) mod 8 j= 1 Swap(S[0],S[1]); So in the 1st iteration S[0] must be swapped with S[1] giving:

S = [1 0 2 3 4 5 6 7]

The results of the remaining 7 iterations are: For

i = 1:

j=(1+0+2) mod 8=3 j = 3 Swap(S[1],S[3])

S = [1 3 2 0 4 5 6 7];

For

i = 2

: J=(3+2+3) mod 8=0 j = 0 Swap(S[2],S[0]);

S = [2 3 1 0 4 5 6 7]

For

i = 3

: j =(0+0+ 6)=6; Swap(S[3],S[6])

S = [2 3 1 6 4 5 0 7];

j = 0; for i = 0 to 7 do j = (j + S[i] + T[i]) mod 8 Swap(S[i],S[j]); end

LOGO

For i = 4 : j = 3 Swap(S[4],S[3])

S = [2 3 1 4 6 5 0 7];

For

i = 5:

j = 2 Swap(S[5],S[2]);

S = [2 3 5 4 6 1 0 7];

For

i = 6

: j = 5; Swap(S[6],S[5])

S = [2 3 5 4 6 0 1 7];

For

i = 7

: j = 2; Swap(S[7],S[2])

S = [2 3 7 4 6 0 1 5];

Hence, our initial permutation of S gives:

S= [2 3 7 4 6 0 1 5]

j = 0; for i = 0 to 7 do j = (j + S[i] + T[i]) mod 8 Swap(S[i],S[j]); end

یم تشگیاج ،رثا اهنت ،تسا ی یاجباج

s

یور تایلمع اهنت نوچ دشاب یم 255 ات رفص زا دادعا مامت یواح زونه

S

و .

دشاب LOGO

Now we generate 3-bits at a time, k, that we XOR with each 3-bits of plaintext to produce the ciphertext. The 3-bits k is generated by: i, j = 0; while (true) { i = (i + 1) mod 8; } j = (j + S[i]) mod 8; Swap (S[i], S[j]); t = (S[i] + S[j]) mod 8; k = S[t];

هلابند دیلوت

دریگ یمن رارق هدافتسا دروم رگید یدورو دیلک دش هدام ا رادرب یتقو

.

ددرگ یم نییعت s یلعف یدنبرکیپ طسوت ن ا حرط هک دوش یم اجباج s رد یرگید تیاب اب s[i] ره هکیروط هب تسا s[i] رصانع مامت رورم لماش هلابند دیلوت

.

دبای یم همادا s[0] زا هرابود دنیارف نیا s[255] هب ندیسر زا سپ مینک یم XOR هدش زمر نتم یدعب تیاب اب ار K رادقم ی یاشگزمر یارب و مینک یم XOR هداس نتم یدعب تیاب اب ار k رادقم یراذگزمر یارب

LOGO

The first iteration: S = [2 3 7 4 6 0 1 5] i = (0 + 1) mod 8 = 1 j = (0 + S[1]) mod 8 = 3 Swap(S[1],S[3]) S = [2 4 7 3 6 0 1 5] t = (S[1] + S[3]) mod 8 = 7

k =

S[7] =

5

Remember, that P is: P = [1 2 2 2] So our rst 3-bits of ciphertext is obtained by: k XOR P1 5 XOR 1 = 101 XOR 001 = 100 =

4

C=[4 - - - ] S = [2 4 7 3 6 0 1 5] i = (1 + 1 ) mod 8 = 2 j = (3 + S[2]) mod 8 = 2 Swap(S[2],S[2]) S = [2 4 7 3 6 0 1 5] t = (S[2] + S[2]) mod 8 = 6

k = S[6] = 6

Second 3-bits of ciphertext are: 6 XOR 2 = 110 XOR 010 = 100

= 4

C=[4 4 - - ] The third iteration: S = [2 4 7 3 6 0 1 5] i = (2 + 1) mod 8 = 3 j = (2 + S[3]) mod 8 = 5 Swap(S[3],S[5]) S = [2 4 7 0 6 3 1 5] t = (S[3] + S[5]) mod 8 = 3

k = S[3] = 0

Third 3-bits of ciphertext are: 0 XOR 2 = 000 XOR 010 = 010 =

2

The final iteration: C=[4 4 2 - ] S = [2 4 7 0 6 3 1 5] i = (1 + 3 ) mod 8 = 4 j = (5 + S[4]) mod 8 = 3 Swap(S[4],S[3]) S = [2 4 7 6 0 3 1 5] t = (S[4] + S[3]) mod 8 = 6

k = S[6] = 1

Last 3-bits of ciphertext are: 1 XOR 2 = 001 XOR 010 = 011

= 3

C=[4 4 2 3 ] i, j = 0; while (true) { i = (i + 1) mod 8; j = (j + S[i]) mod 8; Swap (S[i], S[j]); t = (S[i] + S[j]) mod 8; } k = S[t];

LOGO

So to encrypt the plaintext stream P with key K with our simplied RC4 stream we get C: P = [1 2 2 2] K = [1 2 3 6]

C = [4 4 2 3]

Or in binary: P = 001010010010 K = 001010011110

C = 100100010011 LOGO

LOGO