Tải bản đầy đủ (.pptx) (39 trang)

Serpend algorithm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (834.75 KB, 39 trang )

Giáo viên h ng dẫn: PGS, TS. Nguyễn Hiếu Minh
Nhóm th c hi n:
1/ Nguyễn Huy Linh
2/ Trần Quang Khanh
3/ Nguy n c Ti n
KHOA CNTT H C VI N KTQS
NHóM 6 TIN HọC 9A
O0O
BàI THUYếT TRìNH:
Mã HóA THÔNG TIN
THUậT TOáN Serpent
Ngày hoàn thành: 25/04/2013
N I DUNG BÁO CÁOỘ
Lịch sử
Giới thiệu
Giới thiệu về thuật toán Serpent
1
2
5
3
4
Mã hóa
Encryption
6
Kết luận
Các nhận xét
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
Tài liệu tham khảo
Tài liệu tham khảo trong quá trình làm đồ án
Chương trình


NIST đã đề nghị một sự thay thế cho thuật toán DES – Thuật toán AES.

Các thuộc tính của AES:

Khối mã hóa 128 bit.

Khóa đối xứng.

Các biến thể của độ dài khóa: 128, 192, 256 bit.

Nhanh hơn DES 3 lần.

An toàn như 3DES.

Lịch sử
Lịch sử thuật toán Serpent
1/6
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Giới thiệu
Giới thiệu về thuật toán Serpent
2/6

Serpent là một thuật toán mã nguồn mở mã hóa ở dạng khối, còn gọi là khóa đối
xứng. Về cơ bản chỉ có một khóa được sử dụng để mã hóa và giải mã thông điệp.

Thuật toán được phát triển vào năm 1998 bởi 3 nhà nghiên cứu: Ross Anderson, Lars
Knudsen và Eli Biham.


Serpent là một trong 5 ứng viên cuối vào vị trí thuật toán AES (Advanced Encryption
Standard).
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Giới thiệu
Giới thiệu về thuật toán Serpent
2/6

Được thiết kế dựa trên mạng chuyển vị - thay thế (S-P Network).

Các tác giả thiết kế thuật toán này hướng tới việc tuân thủ dựa trên các thiết kế đã có và
coi trọng tính an toàn của thuật toán hơn là tính mới lạ và tốc độ của thuật toán.

Trong mỗi vòng của thuật toán bao gồm 8 hộp S dựa trên các hộp S của mã DES, nó
được thiết kế cho phép tất cả các toán tử có thể thực hiện song song.
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Sơ đồ thuật toán
Sơ đồ thuật toán
2/6
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Sơ đồ thuật toán
Sơ đồ thuật toán
2/6
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Giới thiệu
Giới thiệu về thuật toán Serpent
2/6


Thuật toán bao gồm 32 vòng. Các tác giả của thuật toán khẳng định rằng 16
vòng đã đảm bảo độ an toàn của thuật toán (32 vòng sẽ đảm bảo khả năng
chống lại các kiểu tấn công trong tương lai).

Điều này dễ dàng tạo cho thuật toán một sự an toàn cần thiết (Serpent được
nhìn nhận là thuật toán an toàn nhất trong các thuật toán chung khảo AES),
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT

Giới thiệu
Giới thiệu về thuật toán Serpent
2/6

Nhưng sự trả giá của nó là hiệu suất thấp của thuật toán so với tất cả các
thuật toán chung khảo AES.

Tuy nhiên, vì yêu cầu ít bộ nhớ khi thực hiện, vì vậy thuật toán rất thích hợp
để thực hiện trên smart card (chính điều này giúp cho Serpent chiến thắng thuật toán
CAST-256, mặc dù chúng có cùng hiệu năng và độ an toàn).
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption

Các vấn đề thảo luận ở đây:

Khởi tạo và phân bổ khóa.

Các bảng điều khiển.


Biến đổi tuyến tính.

S-box.

Quy trình mã hóa.

Quy trình giải mã.
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (1/8)

Việc mã hóa của thuật toán Serpent đòi hỏi 132 từ 32 bit của toàn bộ khóa. Đầu tiên, từ
khóa K 256 bits người sử dụng cung cấp, ta mở rộng nó thành 33 khóa con 128 bit (K
0
,
…, K
32
) bằng cách ghi khóa K thành 8 từ 32 bit (w
-8
, ,w
-1
) và mở rộng các từ này thành
khóa trung gian w
0
, …, w
131

bằng công thức sau:
w
i
=(w
i- 8
⊕ w
i-5
⊕ w
i-3
⊕ w
i-1
φ ⊕ ⊕ i) <<< 11
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (2/8)
Trong đó:
φ là phần phân số của tỉ số vàng (sqrt(5) + 1) / 2 hoặc số hexa 0x9e3779b9
<<< : là phép vòng trái 11 bits

Những khóa thực hiện một chu kỳ được suy ra từ các khóa trước khi sử dụng các S–box.
Sử dụng S–box để biến đổi các khóa w
i
thành các từ k
i
của khóa chu kỳ theo cách sau:
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6


Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (3/8)
{k
0
, k
1
, k
2
, k
3
}:= S
3
(w
0
, w
1
, w
2
, w
3
)
{k
4
, k
5
, k
6
, k

7
}:= S
2
(w
4
, w
5
, w
6
, w
7
)
{k
8
, k
9
, k
10
, k
11
}:= S
1
(w
8
, w
9
, w
10
, w
11

)
{k
12
, k
13
, k
14
, k
15
}:= S
0
(w
12
, w
13
, w
14
, w
15
)
{k
16
, k
17
, k
18
,k
19
}:= S
7

(w
16
, w
17
, w
18
, w
19
)

{k
124
, k
125
, k
126
, k
127
} := S
4
(w
124
, w
125
, w
126
, w
127
)
{k

128
, k
129
, k
130
, k
131
} := S
3
(w
128
, w
129
, w
130
, w
131
)

Ta đánh số lại các giá trị 32 bit k
j
giống các subkey 128 bit K
i
(cho i ∈ 0, …, r) như sau:
K
i
:={k
4i
, k
4i+1

, k
4i+2
, k
4i+3
}
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (4/8)
Ví dụ:

Khóa: 133457799BBCDFFIIFDCBB997754331133457799BBCDFFIIFDCBB997754331 (256 bit).

Khóa này ở dạng nhị phân là một chuỗi bít như sau:
00010010001001000101011101111001 W
-8
10011011101111001101111111110001 W
-7
00011111111111011100101110111001 W
-6
10010111011101010100001000100001 W
-5
00010010001001000101011101111001 W
-4
10011011101111001101111111110001 W
-3
00011111111111011100101110111001 W
-2

10010111011101010100001000100001 W
-1
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (5/8)

Tính W
i
w
i
=(w
i- 8
⊕ w
i-5
⊕ w
i-3
⊕ w
i-1
φ ⊕ ⊕ i) <<< 11
W
0
=(w
-8
⊕ w
-5
⊕ w
-3

⊕ w
-1
φ ⊕ ⊕ i) <<< 11
00010010001001000101011101111001 W-8
10010111011101010100001000100001 W-5
10011011101111001101111111110001 W-3
10010111011101010100001000100001 W-1
10011110001101110111100110111001 φ
00000000000000000000000000000000 i
00000101100010111010011001001000
01011101001100100100000000101100 <<< 11
01011101001100100100000000101100 W
0
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (6/8)

Cứ như vậy lần lượt ta tính được 132 từ 32 bit.

Tính kj: sau khi tính được các w
i
ta tính được các khóa:
{k
0
, k
1
, k

2
, k
3
}:= S
3
(w
0
, w
1
, w
2
, w
3
)
{k
4
, k
5
, k
6
, k
7
}:= S
2
(w
4
, w
5
, w
6

, w
7
)
{k
8
, k
9
, k
10
, k
11
}:= S
1
(w
8
, w
9
, w
10
, w
11
)
{k
12
, k
13
, k
14
, k
15

}:= S
0
(w
12
, w
13
, w
14
, w
15
)
{k
16
, k
17
, k
18
,k
19
}:= S
7
(w
16
, w
17
, w
18
, w
19
)


{k
124
, k
125
, k
126
, k
127
} := S
4
(w
124
, w
125
, w
126
, w
127
)
{k
128
, k
129
, k
130
, k
131
} := S
3

(w
128
, w
129
, w
130
, w
131
)
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (7/8)

Ta đánh số lại các giá trị 32 bit k
j
K
i
:={k
4i
, k
4i+1
, k
4i+2
, k
4i+3
}
tương ứng ta được:

K
0
={k
0
, k
1
, k
2
, k
3
}:= S
3
(w
0
, w
1
, w
2
, w
3
)
K
1
={k
4
, k
5
, k
6
, k

7
}:= S
2
(w
4
, w
5
, w
6
, w
7
)
……
K
31
={k
128
, k
129
, k
130
, k
131
} := S
3
(w
128
, w
129
, w

130
,w
131
)
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
KHỞI TẠO VÀ PHÂN BỔ KHÓA (8/8)

Mô hình phát sinh khóa

Kế đến áp dụng phép hoán vị đầu vào khóa thực hiện một
chu kỳ để định vị các bit khóa vào đúng vị trí (cột)
K
i
= IP(K
i
)
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
CÁC BẢNG ĐIỀU KHIỂN (1/4)

Bảng hoán vị khởi đầu (IP - Initial Permutation):
0 32 64 96 1 33 65 97 2 34 66 98 3 35 67 99
4 36 68 100 5 37 69 101 6 38 70 102 7 39 71 103

8 40 72 104 9 41 73 105 10 42 74 106 11 43 75 107
12 44 76 108 13 45 77 109 14 46 78 110 15 47 79 111
16 48 80 112 17 49 81 113 18 50 82 114 19 51 83 115
20 52 84 116 21 53 85 117 22 54 86 118 23 55 87 119
24 56 88 120 25 57 89 121 26 58 90 122 27 59 91 123
28 60 92 124 29 61 93 125 30 62 94 126 31 63 95 127
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption

Trong thuật toán ta cần hoán vị cả khóa và bản rõ qua bảng IP để định vị các bit khóa và
bit rõ vào vị trí đúng cột.
CÁC BẢNG ĐIỀU KHIỂN (2/4)
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
Ví dụ:
Nội dung bản rõ là:
0123456789ABCDEFFEDCBA9876543210 (128 bit)
Đưa về dạng nhị phân:
00000001001000110100010101100111
10001001101010111100110111101111
11111110110111001011101010011000
01110110010101000011001000010000
Ta lần lượt đánh vị trí các bít (0 -> 127) và sau đó lấy các bít có vị trí theo bảng IP: do đó sau khi qua bảng IP ta được bản rõ
sau khi hoán vị là:

01100110001100110011011000110011
11000110001111000011011000111100
11000110110000110011011011000011
11000110110011000011011011001100
`
CÁC BẢNG ĐIỀU KHIỂN (3/4)
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption

Bảng hoán vị cuối (FP – Final Permutation):

Bảng hoán vị cuối FP được sử dụng sau khi qua 33 chu kì và ta thu được kết quả là bản mã.

Hoán vị kết thúc là nghịch đảo của hoán vị khởi đầu.
CÁC BẢNG ĐIỀU KHIỂN (4/4)
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
BIẾN ĐỔI TUYẾN TÍNH

Áp dụng trên kết quả của S-Box, ví dụ:
S
i
(B
i

⊕ K
i
).

Mỗi bit đầu ra tương ứng với chỉ một hoặc một số bit đầu vào.

Ví dụ, đầu ra bit 0 là tương ứng với các bit đầu vào: 16, 52, 56, 70, 83, 94 và 105 bit.

Số bit đầu vào XOR để cung cấp cho một bit đầu ra là biến thể và không cố định đến bảy.
MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
LINEAR TRANSFORMATION

Applied on the result of the S-Boxes, I.e. on S
i
(B
i
⊕ K
i
).

Each output bit is an exclusive or of some input bits.

For Example, output bit 0 is an exclusive or of input bits: 16, 52, 56, 70, 83, 94 and bit
105.

The number of input bits XORed to give one output bit is variant and not fixed to seven.

MÃ HÓA THÔNG TIN - THUẬT TOÁN SERPENT
3/6

Mã hóa
Encryption
S-BOX (1/4)

S–box của Serpent là phép hoán vị 4 bit. S–box được phát sinh theo cách sau: sử dụng
một ma trận gồm 32 dãy, mỗi dãy 16 phần tử. Ma trận được khởi gán với 32 hàng của S–
box DES và được biến đổi bằng cách hoán đổi các phần tử trong dãy r tùy thuộc vào giá
trị của các phần tử trong dãy (r + 1) và chuỗi ban đầu đại diện cho một khóa. Nếu dãy kết
quả có các đặc tính như mong muốn (vi phân và tuyến tính), ta lưu dãy này như một
Serpent S–box. Lặp đi lặp lại thủ tục này đến khi 8 S–box được phát sinh.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×