background image

28

µέγεθος λιγότερο από

2

128

bit. Η διαδικασία αυτή αρχίζει µε την προεπεξεργασία του

µηνύµατος

M , όπου προστίθεται ένα bit "1" και ένας αριθµός bit "0" έως ότου το µήκος

του µηνύµατος ϕτάσει το 448 mod 512 = 448.

Στη συνέχεια, το µήκος του αρχικού

µηνύµατος προστίθεται στο τέλος του µηνύµατος ως µια τιµή 64-bit µε big-endian

σειρά, όπως ϕαίνεται στο Σχήµα 2.1.

Σχήµα 2.1: Μηχανισµός συµπλήρωσης µηνυµάτων του SHA-1

Το επεξεργασµένο µήνυµα στη συνέχεια διαιρείται σε µπλοκ των 512 bit. Κάθε µπλοκ

υποβάλλεται στη λειτουργία συµπίεσης του SHA-1,

η οποία αποτελείται από 80

διαδοχικά βήµατα, οργανωµένα σε τέσσερις γύρους των 20 βηµάτων ο καθένας. Κάθε

βήµα (

t) της λειτουργίας συµπίεσης αξιοποιεί πράξεις όπως αρθρωτή πρόσθεση,

αριστερή κυκλική µετατόπιση (left rotation), στρογγυλή συνάρτηση (round function)

και στρογγυλοποιηµένη σταθερά (round constant), όπως ϕαίνεται στον Πίνακα 2.2.

Οι στρογγυλές συναρτήσεις και οι σταθερές διαϕέρουν σε κάθε γύρο, προσδίδοντας

στον SHA-1 τα απαραίτητα χαρακτηριστικά κρυπτογραϕικής ασϕάλειας.

Πίνακας 2.2: SHA-1 γύροι, στρογγυλές συναρτήσεις, βήµατα και σταθερές

Γύρος

Βήµατα

Στρογγυλές

συναρτήσεις F (B, C, D)

Στρογγυλοποιηµένες

σταθερές K

t

1

0–19

(B ∧ C) ∨ (¬B ∧ D)

0x5A827999

2

20–39

B ⊕ C ⊕ D

0x6ED9EBA1

3

40–59

(B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D)

0x8F1BBCDC

4

60–79

B ⊕ C ⊕ D

0xCA62C1D6

Κάθε µπλοκ µηνύµατος διαιρείται σε 16 διαδοχικές λέξεις των 32 bit η καθεµία,

από

M

0

έως

M

15

. Στη συνέχεια, οι λέξεις αυτές επεκτείνονται σε 80 λέξεις

W

t

(για

t = 0, . . . , 79) χρησιµοποιώντας την Εξίσωση (2.2). Στην εξίσωση αυτή, η λειτουργία

cyclic shift left (csl) 1 αναϕέρεται σε κυκλική αριστερή µετατόπιση (ολίσθηση) κατά

ένα bit.

W

t

=

M

t

, 0 ≤ t ≤ 15

(W

t−16

XOR W

t−14

XOR W

t−8

XOR W

t−3

) csl 1

, 16 ≤ t ≤ 79

(2.2)