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)