Baitap Nguyen Dinh An

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 64

ĐẠI HỌC ĐÀ NẴNG

ĐẠI HỌC BÁCH KHOA


KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP


MÔN HỌC: MẬT MÃ VÀ MÃ HÓA

GVHD : PGS.TS NGUYỄN TẤN KHÔI


SVTH : NGUYỄN ĐỊNH AN
LỚP : 15TCLC2
MSSV : 102150257

ĐÀ NẴNG – 11/2018

1
MỤC LỤC
PHẦN 1: BÀI TẬP................................................................................................................................. 3
Bài 1................................................................................................................................................ 3
Bài 2................................................................................................................................................ 6
Bài 3................................................................................................................................................ 8
Bài 4.............................................................................................................................................. 16
Bài 5.............................................................................................................................................. 19
Phần 2: Bài thực hành ...................................................................................................................... 23
Lab05: Thực hành sử dụng Putty-OPENSSH................................................................................. 23
Lab10: Thực hành sử dụng OpenSSL ............................................................................................ 28

2
PHẦN 1: BÀI TẬP
Bài 1. Cho văn bản gốc P = <hovaten>. Mã hóa P sử dụng các thuật toán mã
hóa sau trên trường số nguyên Z26. Giải thích các bước thực hiện.
a) Mã hóa cộng với khóa K = 18
b) Mã hóa affine với khóa k1= 7, k2 = 11
c) Mã hóa Vigenère với khóa K = attack.
d) Mã hóa Hill Cipher với khóa K tự chọn.
e) Mã hóa Playfair với khóa K tự chọn.
f) Mã hóa Autocipher với K = 18.
=> Bài làm:
Văn bản gốc P a b c d e f g h i j k l m
Văn bản mã hóa A B C D E F G H I J K L M
C
Giá trị 0 1 2 3 4 5 6 7 8 9 10 11 12

n o p q r s t u v w x y z
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

a) Mã hóa cộng với khóa K = 18


Bản gốc P n g u y e n d i n h a n
13 6 20 24 4 13 3 8 13 7 0 13
Khóa K 18 18 18 18 18 18 18 18 18 18 18 18
C = (P+k) mod 26 5 24 12 16 22 5 21 0 5 25 18 5
Bản mã hóa C F Y M Q W F V A F Z S F

3
b) Mã hóa affine với khóa k1= 7, k2 = 11
Bản gốc P n g u y e n d i n h a n
13 6 20 24 4 13 3 8 13 7 0 13
k1 = 7 7 7 7 7 7 7 7 7 7 7 7 7
k2 = 11 11 11 11 11 11 11 11 11 11 11 11 11
C = (P.k1 + k2) mod 26 24 1 21 23 13 24 6 15 24 8 11 24
Bản mã hóa C Y B V X N Y G P Y I L Y

c) Mã hóa Vigenère với khóa K = attack.


Bản gốc P n g u y e n d i n h a n
13 6 20 24 4 13 3 8 13 7 0 13
Khóa K a t t a c k a t t a c k
0 19 19 0 2 10 0 19 19 0 2 10
C = (Pi+Ki)mod26 13 25 13 24 6 23 3 1 6 7 2 23
Bản mã C N Z N Y G X D B G H C X

d) Mã hóa Hill Cipher với khóa K tự chọn.


Ma trận khóa K:
3 10 20
𝐾 = [20 9 17]
9 4 17
−1
 Ma trận nghịch đảo 𝐾
11 22 14
−1
𝐾 =[7 9 21]
17 0 3
Bản gốc P:
n g u y e n d i n h a n
13 6 20 24 4 13 3 8 13 7 0 13

 Ma trận [P]:
13 6 20
24 4 13
𝑃=[ ]
3 8 13
7 0 13
 [C] = [P][K] mod 26

4
1 4 0
9 16 15
𝐶=[ ]
0 24 1
8 18 23
 Bản mã C:
1 4 0 9 16 15 0 24 1 8 18 23
B E A J Q P A Y B I S X

Kết luận: bản gốc P = nguyendinhan => bản mã C = BEAJQPAYBISX


e) Mã hóa Playfair với khóa K tự chọn.
Bản gốc P: nguyendinhan
Ma trận khóa K tự chọn:
A B C D E
F G H I L
L M N O P
Q R S T U
V W X Y Z

Ta có P = ng uy en di nh an
 C = MH TZ CP IO CL

f) Mã hóa Autocipher với K = 18.


Bản gốc P: nguyendinhan

Bản gốc n g u y e n d i n h a n
13 6 20 24 4 13 3 8 13 7 0 13
Khóa K = 18 18 13 6 20 24 4 13 3 8 13 7 0
C 5 19 0 18 2 17 16 11 21 20 7 13
Bản mã F T A S C R Q L V U H N

 Bản mã C = FTASCRQLVUHN

5
Bài 2. Cho văn bản gốc P = <hovaten>. Thực hiện mã hoá P theo :
a)Mã hóa AES với khóa K tự chọn. Giải thích các bước thực hiện.
b)Mã hóa RC6 với khóa K tự chọn. Giải thích các bước thực hiện.
 Bài làm:
a)Mã hóa AES với khóa K tự chọn. Giải thích các bước thực hiện.
- Văn bản gốc P = nguyendinhan, gồm 12 ký tự, điền thêm 4 ký tự ‘z’ để đủ
16 => P= nguyendinhanzzzz
 chuyển sang mã hexa = 6E677579656E64696E68616E7A7A7A7A

- Chọn khóa K(16 ký tự) = dananguniversity


 chuyển sang mã hexa = 64616E616E67756E6976657273697479

- Bản mã hóa C = DB4E3F634694A88A2A7A56FDB3172F99

- Các vòng mã hóa:

Sub Shift Mix Add Key Round


Bytes Rows Columns Round Key Schedule Constant
Round
0A 0B 07 09 64 6E 69 73
0
06 09 1E 13 61 67 76 69
1B 11 04 0E 6E 75 65 74
18 07 1C 03 61 6E 72 79
Round
67 2B C5 01 67 2B C5 01 44 C6 7C AD D8 34 E7 45 9C F2 9B E8 01
1
6F 01 72 7D 01 72 7D 6F 13 84 10 DE E0 10 F2 55 F3 94 E2 8B
AF 82 F2 AB F2 AB AF 82 14 F8 A9 CE CC 55 61 72 D8 AD C8 BC
AD C5 9C 7B 7B AD C5 9C AC E5 17 CD 42 65 E5 46 EE 80 F2 8B
Round
61 18 94 6E 61 18 94 6E 32 DC 2A C1 91 8D E0 E3 A3 51 CA 22 02
2
E1 CA 89 FC CA 89 FC E1 9E FD E7 71 08 FF 07 1A 96 02 E0 6B
4B FC EF 40 EF 40 4B FC 80 65 29 1C 65 2D A9 20 E5 48 80 3C
2C 4D D9 5A 5A 2C 4D D9 32 B9 8A 06 47 4C 8D 8A 75 F5 07 8C
Round
81 5D E1 11 81 5D E1 11 8E F9 40 F7 56 70 03 96 D8 89 43 61 04
3
30 16 C5 A2 16 C5 A2 30 BD AE 40 5F C0 D1 DF AB 7D 7F 9F F4

6
4D D8 D3 B7 D3 B7 4D D8 A8 16 A2 6D 29 DF EB 18 81 C9 49 75
A0 29 5D 7E 7E A0 29 5D A1 CE 85 61 47 DD 91 F9 E6 13 14 98
Round
B1 51 7B 90 B1 51 7B 90 4B 16 34 F1 24 F0 91 35 6F E6 A5 C4 08
4
BA 3E 9E 62 3E 9E 62 BA 74 3A 8A C7 94 A5 8A 33 E0 9F 00 F4
A5 9E E9 AD E9 AD A5 9E F6 75 10 95 31 7B 57 A7 C7 0E 47 32
A0 C1 81 99 99 A0 C1 81 36 9B D3 96 3F 81 DD 00 09 1A 0E 96
Round
36 8C 81 96 36 8C 81 96 5E A8 8C B1 9E 8E 0F F6 C0 26 83 47 10
5
22 06 7E C3 06 7E C3 22 B4 E1 42 70 77 BD 1E D8 C3 5C 5C A8
C7 21 5B 5C 5B 5C C7 21 23 D5 C3 AE 74 8C DD 82 57 59 1E 2C
75 0C C1 63 63 75 0C C1 C1 47 84 3B D4 48 85 AC 15 0F 01 97
Round
0B 19 76 42 0B 19 76 42 C8 FF 8F 73 EA FB 08 B3 22 04 87 C0 20
6
F5 7A 72 61 7A 72 61 F5 36 80 4B 88 84 6E F9 92 B2 EE B2 1A
92 64 C1 13 C1 13 92 64 40 95 DE DD 9F 13 46 69 DF 86 98 B4
48 52 97 91 91 48 52 97 9F DA CD 62 2A 60 76 4E B5 BA BB 2C
Round
87 0F 30 6D 87 0F 30 6D DA B2 BA 7E 1A 76 F9 FD C0 C4 43 83 40
7
5F 9F 99 4F 9F 99 4F 5F 63 D3 08 6C 5C 02 6B 15 3F D1 63 79
DB 7D 5A F9 5A F9 DB 7D DD 4B B9 80 73 63 09 84 AE 28 B0 04
E5 D0 38 2F 2F E5 D0 38 09 A0 7F E5 06 15 71 C7 0F B5 0E 22
Round
A2 38 99 54 A2 38 99 54 01 C1 14 2E F7 F3 65 DC F6 32 71 F2 80
8
4A 77 7F 59 77 7F 59 4A 89 48 F8 75 44 54 87 73 CD 1C 7F 06
8F FB 01 5F 01 5F 8F FB 86 48 2E 0D BB 5D 8B AC 3D 15 A5 A1
6F 59 A3 C6 C6 6F 59 A3 1C B6 D4 10 FF E0 8C 6A E3 56 58 7A
Round
68 0D 4D 86 68 0D 4D 86 8F A4 1B 12 0D 14 DA 21 82 B0 C1 33 1B
9
1B 20 17 8F 20 17 8F 1B 6D 9D 8C 00 92 7E 10 9A FF E3 9C 9A
EA 4C 3D 91 3D 91 EA 4C 34 19 35 A9 D3 EB 62 5F E7 F2 57 F6
16 E1 64 02 02 16 E1 64 A1 BD 6B 0E CB 81 0F 10 6A 3C 64 1E
Round
D7 FA 57 FD D7 FA 57 FD DB 46 2A B3 0C BC 7D 4E 36
10
4F F3 CA B8 F3 CA B8 4F 4E 94 7A 17 BD 5E C2 58
66 E9 AA CF AA CF 66 E9 3F A8 56 2F 95 67 30 C6
1F 0C 76 CA CA 1F 0C 76 63 8A FD 99 A9 95 F1 EF

7
b) Mã hóa RC6 với khóa K tự chọn. Giải thích các bước thực hiện. (Chưa làm
được)

Bài 3. Cho văn bản gốc P = <hovaten>. Tính giá trị hàm băm MD5 và SHA-1
của P. Giải thích các bước thực hiện.
1/ Tính giá trị hàm băm MD5
- Bước 1: Bổ sung thêm dữ liệu
+ Dữ liệu ban đầu : P = “nguyendinhan” biểu diễn dưới dạng nhị phân:
01101110 01100111 01110101 01111001 01100101 01101110 01100100
01101001 01101110 01101000 01100001 01101110
+ Dữ liệu gồm 12 ký tự ASCII, mỗi kí tự 8 bit nên thông điệp P có 12x8 = 96 bits.
Thêm 1 bit 1 và 351 bit 0 để có chiều dài 448 bits.
- Bước 2: Thêm các bit chiều dài dữ liệu
+ 64 bits còn lại biểu diễn độ dài thông điệp. Độ dài thông điệp là 96, biểu diễn nhị
phân là 1110 0000 nên 64 bit còn lại thêm vào là :
0000000000000000000000000000000000000000000000000000000001100000
+ Chung lại 512 bits sau khi bổ sung thêm dữ liệu là
01101110 01100111 01110101 01111001 01100101 01101110 01100100
01101001 01101110 01101000 01100001 01101110 10000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
01100000
- Bước 3: Khởi tạo bộ đệm
𝐴0 = 67452301; 𝐵0 = 𝐸𝐹𝐶𝐷𝐴𝐵89; 𝐶0 = 98𝐵𝐴𝐷𝐶𝐹𝐸; 𝐷0 = 10325476

8
- Bước 4: Xử lý thông điệp theo từng khối 16 words 32 bits ( tổng cộng
chiều dài dữ liệu đưa vào là 512 bits)
Quá trình xử lý gồm 4 vòng, mỗi vòng 16 bước. 4 vòng xử lý theo các hàm như
sau:

Để gọn bảng dưới, ký hiệu chung cho 4 hàm là F.


+ 𝑖 = 1 → 𝑖 = 16 xử lý như hàm F phía trên.
+ 𝑖 = 17 → 𝑖 = 32 xử lý như hàm G phía trên.
+ 𝑖 = 32 → 𝑖 = 48 xử lý như hàm H phía trên.
+ 𝑖 = 48 → 𝑖 = 64 xử lý như hàm I phía trên.
Ta ký hiệu [𝐴𝐵𝐶𝐷 𝑗 𝑠 𝑖]: 𝐴 = 𝐵 + ((𝐴 + 𝐹(𝐵, 𝐶, 𝐷) + 𝑀[𝑗] + 𝐾[𝑖]) ≪ 𝑠)
Ta có bảng 64 bước xử lý của 4 vòng: (các số liệu trong bảng được điền bằng xử lý
hàm trong Excel)
i B C D F M[j] K[i] s A
1 efcdab89 98badcfe 10325476 [ABCD 0 7 1] 6e677579 d76aa478 7 5fd39e31
2 efcdab89 98badcfe e423a155 [DABC 1 12 2] 656e6469 e8c7b756 12 5fd39e31
3 efcdab89 65e4976d e423a155 [CDAB 2 17 3] 6e68616e 242070db 17 5fd39e31
4 78f0872e 65e4976d e423a155 [BCDA 3 22 4] 80000000 c1bdceee 22 5fd39e31
5 78f0872e 65e4976d e423a155 [ABCD 4 7 5] 0 f57c0faf 7 929b35cb
6 78f0872e 65e4976d 91860fe4 [DABC 5 12 6] 0 4787c62a 12 929b35cb
7 78f0872e 581a1df2 91860fe4 [CDAB 6 17 7] 0 a8304613 17 929b35cb
8 de1c4c84 581a1df2 91860fe4 [BCDA 7 22 8] 0 fd469501 22 929b35cb
9 de1c4c84 581a1df2 91860fe4 [ABCD 8 7 9] 0 698098d8 7 b90b8e2e
10 de1c4c84 581a1df2 eb620d7c [DABC 9 12 10] 0 8b44f7af 12 b90b8e2e
11 de1c4c84 780037eb eb620d7c [CDAB 10 17 11] 0 ffff5bb1 17 b90b8e2e
12 e3945917 780037eb eb620d7c [BCDA 11 22 12] 0 895cd7be 22 b90b8e2e
13 e3945917 780037eb eb620d7c [ABCD 12 7 13] 0 6b901122 7 626eb6dd
14 e3945917 780037eb 4b731d0c [DABC 13 12 14] 0 fd987193 12 626eb6dd
15 e3945917 eb631fcb 4b731d0c [CDAB 14 17 15] 0 a679438e 17 626eb6dd

9
16 80814dd2 eb631fcb 4b731d0c [BCDA 15 22 16] 60 49b40821 22 626eb6dd
17 80814dd2 eb631fcb 4b731d0c [ABCD 1 5 17] 656e6469 f61e2562 5 becc9abe
18 80814dd2 eb631fcb a722682a [DABC 6 9 18] 0 c040b340 9 becc9abe
19 80814dd2 3c351c2d a722682a [CDAB 11 14 19] 0 265e5a51 14 becc9abe
20 8d97296c 3c351c2d a722682a [BCDA 0 20 20] 6e677579 e9b6c7aa 20 becc9abe
21 8d97296c 3c351c2d a722682a [ABCD 5 5 21] 0 d62f105d 5 cff41272
22 8d97296c 3c351c2d 94fcce0 [DABC 10 9 22] 0 2441453 9 cff41272
23 8d97296c 9097e4ef 94fcce0 [CDAB 15 14 23] 60 d8a1e681 14 cff41272
24 b207459e 9097e4ef 94fcce0 [BCDA 4 20 24] 0 e7d3fbc8 20 cff41272
25 b207459e 9097e4ef 94fcce0 [ABCD 9 5 25] 0 21e1cde6 5 ffafe28e
26 b207459e 9097e4ef 1d1d4b8c [DABC 14 9 26] 0 c33707d6 9 ffafe28e
27 b207459e d2be0452 1d1d4b8c [CDAB 3 14 27] 80000000 f4d50d87 14 ffafe28e
28 b9aa648 d2be0452 1d1d4b8c [BCDA 8 20 28] 0 455a14ed 20 ffafe28e
29 b9aa648 d2be0452 1d1d4b8c [ABCD 13 5 29] 0 a9e3e905 5 b554e3f6
30 b9aa648 d2be0452 bb497c39 [DABC 2 9 30] 6e68616e fcefa3f8 9 b554e3f6
31 b9aa648 1683fa97 bb497c39 [CDAB 7 14 31] 0 676f02d9 14 b554e3f6
32 2d9f6786 1683fa97 bb497c39 [BCDA 12 20 32] 0 8d2a4c8a 20 b554e3f6
33 2d9f6786 1683fa97 bb497c39 [ABCD 5 4 33] 0 fffa3942 4 87ef4d89
34 2d9f6786 1683fa97 209e586 [DABC 8 11 34] 0 8771f681 11 87ef4d89
35 2d9f6786 2d4c1221 209e586 [CDAB 11 16 35] 0 6d9d6122 16 87ef4d89
36 3db629ce 2d4c1221 209e586 [BCDA 14 23 36] 0 fde5380c 23 87ef4d89
37 3db629ce 2d4c1221 209e586 [ABCD 1 4 37] 656e6469 a4beea44 4 ce1e7388
38 3db629ce 2d4c1221 360b24ee [DABC 4 11 38] 0 4bdecfa9 11 ce1e7388
39 3db629ce 12350e98 360b24ee [CDAB 7 16 39] 0 f6bb4b60 16 ce1e7388
40 30a859b8 12350e98 360b24ee [BCDA 10 23 40] 0 bebfbc70 23 ce1e7388
41 30a859b8 12350e98 360b24ee [ABCD 13 4 41] 0 289b7ec6 4 e5aebb78
42 30a859b8 12350e98 92b42e82 [DABC 0 11 42] 6e677579 eaa127fa 11 e5aebb78
43 30a859b8 9e935d59 92b42e82 [CDAB 3 16 43] 80000000 d4ef3085 16 e5aebb78
44 4ea2ba78 9e935d59 92b42e82 [BCDA 6 23 44] 0 4881d05 23 e5aebb78
45 4ea2ba78 9e935d59 92b42e82 [ABCD 9 4 45] 0 d9d4d039 4 6f380fb8
46 4ea2ba78 9e935d59 3cc0117c [DABC 12 11 46] 0 e6db99e5 11 6f380fb8
47 4ea2ba78 bbcded0c 3cc0117c [CDAB 15 16 47] 60 1fa27cf8 16 6f380fb8
48 4582e042 bbcded0c 3cc0117c [BCDA 2 23 48] 6e68616e c4ac5665 23 6f380fb8
49 4582e042 bbcded0c 3cc0117c [ABCD 0 6 49] 6e677579 f4292244 6 97aa2e98
50 4582e042 bbcded0c 27695ee0 [DABC 7 10 50] 0 432aff97 10 97aa2e98
51 4582e042 e8a5a6fc 27695ee0 [CDAB 14 15 51] 0 ab9423a7 15 97aa2e98
52 1be7dd61 e8a5a6fc 27695ee0 [BCDA 5 21 52] 0 fc93a039 21 97aa2e98
53 1be7dd61 e8a5a6fc 27695ee0 [ABCD 12 6 53] 0 655b59c3 6 31e0d4ed
54 1be7dd61 e8a5a6fc 7e92d877 [DABC 3 10 54] 80000000 8f0ccc92 10 31e0d4ed
55 1be7dd61 6358b47e 7e92d877 [CDAB 10 15 55] 0 ffeff47d 15 31e0d4ed
56 776c4840 6358b47e 7e92d877 [BCDA 1 21 56] 656e6469 85845dd1 21 31e0d4ed

10
57 776c4840 6358b47e 7e92d877 [ABCD 8 6 57] 0 6fa87e4f 6 e73804cd
58 776c4840 6358b47e 325394e3 [DABC 15 10 58] 60 fe2ce6e0 10 e73804cd
59 776c4840 7b5c705 325394e3 [CDAB 6 15 59] 0 a3014314 15 e73804cd
60 be742a1d 7b5c705 325394e3 [BCDA 13 21 60] 0 4e0811a1 21 e73804cd
61 be742a1d 7b5c705 325394e3 [ABCD 4 6 61] 0 f7537e82 6 73c00412
62 be742a1d 7b5c705 a63800e7 [DABC 11 10 62] 0 bd3af235 10 73c00412
63 be742a1d 10499b9c a63800e7 [CDAB 2 15 63] 6e68616e 2ad7d2bb 15 73c00412
64 296623fb 10499b9c a63800e7 [BCDA 9 21 64] 0 eb86d391 21 73c00412

- Bước 5: Xuất giá trị băm


+ Với các giá trị khởi tạo ban đầu 𝐴0 = 67452301; 𝐵0 = 𝐸𝐹𝐶𝐷𝐴𝐵89; 𝐶0 =
98𝐵𝐴𝐷𝐶𝐹𝐸; 𝐷0 = 10325476
𝐻0 = (73𝑐00412 + 𝐴0 ) 𝑚𝑜𝑑 100000000 = 0𝑑𝑒1𝑑8𝑑5
𝐻1 = (296623𝑓𝑏 + 𝐵0 ) 𝑚𝑜𝑑 100000000 = 22𝑐𝑎9𝑏𝑒𝑑
𝐻2 = (10499𝑏9𝑐 + 𝐶0 ) 𝑚𝑜𝑑 100000000 = 𝑓𝑓7𝑒44𝑏3
𝐻3 = (𝑎63800𝑒7 + 𝐷0 ) 𝑚𝑜𝑑 100000000 = 4𝑑𝑏0𝑒116
 MD5("nguyendinhan") = 132705DB84CF33199A7804A95D556AB6
2/ Tính giá trị hàm băm SHA-1
- Bước 1: Bổ sung thêm dữ liệu
+ Dữ liệu ban đầu : P = “nguyendinhan” biểu diễn dưới dạng nhị phân:
01101110 01100111 01110101 01111001 01100101 01101110 01100100
01101001 01101110 01101000 01100001 01101110
+ Dữ liệu gồm 12 ký tự ASCII, mỗi kí tự 8 bit nên thông điệp P có 12x8 = 96 bits.
Thêm 1 bit 1 và 351 bit 0 để có chiều dài 448 bits.
- Bước 2: Thêm các bit chiều dài dữ liệu
+ 64 bits còn lại biểu diễn độ dài thông điệp. Độ dài thông điệp là 96, biểu diễn nhị
phân là 1110 0000 nên 64 bit còn lại thêm vào là :
0000000000000000000000000000000000000000000000000000000001100000
+ Chung lại 512 bits sau khi bổ sung thêm dữ liệu là

11
01101110 01100111 01110101 01111001 01100101 01101110 01100100
01101001 01101110 01101000 01100001 01101110 10000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
01100000
- Bước 3: Khởi tạo bộ đệm
𝐻1 = 67452301
𝐻2 = 𝐸𝐹𝐶𝐷𝐴𝐵89
𝐻3 = 98𝐵𝐴𝐷𝐶𝐹𝐸
𝐻4 = 10325476
𝐻5 = 𝐶3𝐷2𝐸1𝐹0
Các hằng số K[t]:
+ 𝐾𝑡 = 5𝐴827999 (0 ≤ 𝑡 ≤ 19)
+ 𝐾𝑡 = 6𝐸𝐷9𝐸𝐵𝐴1(20 ≤ 𝑡 ≤ 39)
+ 𝐾𝑡 = 8𝐹1𝐵𝐵𝐶𝐷𝐶 (40 ≤ 𝑡 ≤ 59)
+ 𝐾𝑡 = 𝐶𝐴62𝐶1𝐷6 (60 ≤ 𝑡 ≤ 80)
Các trị đầu vào W[t] xử lý từ chuỗi dữ liệu 512 bits ban đầu: (trình bày trong cột
W[t] trong bàng)
+ 16 khối 32 bits tách ra từ dữ liệu ban đầu:
t W[t]
0 6e677579
1 656e6469
2 6e68616e
3 80000000

12
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 60

+ Với t = 16 -> 79 thực hiện:

for i from 16 to 79
w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) << 1

Ta được các giá trị W[t] còn lại được ghi trong bảng xử lý dữ liệu phía dưới
- Bước 4: Xử lý các khối dữ liệu 512 bits.
T A B C D E F W[T] K[T]
0 E1C0E2C 67452301 7BF36AE2 98BADCFE 10325476 (B AND C) OR ((NOT B) AND D) 6E677579 5A827999
1 8FA0F6F7 E1C0E2C 59D148C0 7BF36AE2 98BADCFE (B AND C) OR ((NOT B) AND D) 656E6469 5A827999
2 CFB7FFB8 8FA0F6F7 387038B 59D148C0 7BF36AE2 (B AND C) OR ((NOT B) AND D) 6E68616E 5A827999
3 A146E617 CFB7FFB8 E3E83DBD 387038B 59D148C0 (B AND C) OR ((NOT B) AND D) 80000000 5A827999
4 A0D0C308 A146E617 33EDFFEE E3E83DBD 387038B (B AND C) OR ((NOT B) AND D) 0 5A827999
5 DC0EDDE6 A0D0C308 E851B985 33EDFFEE E3E83DBD (B AND C) OR ((NOT B) AND D) 0 5A827999
6 73C43217 DC0EDDE6 283430C2 E851B985 33EDFFEE (B AND C) OR ((NOT B) AND D) 0 5A827999
7 2F4BED38 73C43217 B703B779 283430C2 E851B985 (B AND C) OR ((NOT B) AND D) 0 5A827999
8 67820CF4 2F4BED38 DCF10C85 B703B779 283430C2 (B AND C) OR ((NOT B) AND D) 0 5A827999
9 F396728 67820CF4 BD2FB4E DCF10C85 B703B779 (B AND C) OR ((NOT B) AND D) 0 5A827999
10 94A61E58 F396728 19E0833D BD2FB4E DCF10C85 (B AND C) OR ((NOT B) AND D) 0 5A827999
11 D619EC9E 94A61E58 3CE59CA 19E0833D BD2FB4E (B AND C) OR ((NOT B) AND D) 0 5A827999
12 3359A22E D619EC9E 25298796 3CE59CA 19E0833D (B AND C) OR ((NOT B) AND D) 0 5A827999
13 E566D872 3359A22E B5867B27 25298796 3CE59CA (B AND C) OR ((NOT B) AND D) 0 5A827999
14 404C0975 E566D872 8CD6688B B5867B27 25298796 (B AND C) OR ((NOT B) AND D) 0 5A827999

13
15 1DF39B3E 404C0975 B959B61C 8CD6688B B5867B27 (B AND C) OR ((NOT B) AND D) 60 5A827999
16 5B74E54F 1DF39B3E 5013025D B959B61C 8CD6688B (B AND C) OR ((NOT B) AND D) 1E282E 5A827999
17 D0ED7AFE 5B74E54F 877CE6CF 5013025D B959B61C (B AND C) OR ((NOT B) AND D) CADCC8D3 5A827999
18 11D4380A D0ED7AFE D6DD3953 877CE6CF 5013025D (B AND C) OR ((NOT B) AND D) DCD0C21C 5A827999
19 BD3689E8 11D4380A B43B5EBF D6DD3953 877CE6CF B XOR C XOR D 3C505D 6ED9EBA1
20 A6140114 BD3689E8 84750E02 B43B5EBF D6DD3953 B XOR C XOR D 95B991A7 6ED9EBA1
21 4F51A516 A6140114 2F4DA27A 84750E02 B43B5EBF B XOR C XOR D B9A18439 6ED9EBA1
22 1AEF3B4F 4F51A516 29850045 2F4DA27A 84750E02 B XOR C XOR D 78A0BA 6ED9EBA1
23 C6428E3E 1AEF3B4F 93D46945 29850045 2F4DA27A B XOR C XOR D 2B73238F 6ED9EBA1
24 7AB70071 C6428E3E C6BBCED3 93D46945 29850045 B XOR C XOR D 737F582F 6ED9EBA1
25 17B4F490 7AB70071 B190A38F C6BBCED3 93D46945 B XOR C XOR D 9548D0D3 6ED9EBA1
26 F631173C 17B4F490 5EADC01C B190A38F C6BBCED3 B XOR C XOR D EF47C327 6ED9EBA1
27 DAC849F9 F631173C 5ED3D24 5EADC01C B190A38F B XOR C XOR D E68610E4 6ED9EBA1
28 28C83B57 DAC849F9 3D8C45CF 5ED3D24 5EADC01C B XOR C XOR D 1E282E8 6ED9EBA1
29 7704D6B0 28C83B57 76B2127E 3D8C45CF 5ED3D24 B XOR C XOR D ADCC8EFC 6ED9EBA1
30 87199C9A 7704D6B0 CA320ED5 76B2127E 3D8C45CF B XOR C XOR D CDC130E1 6ED9EBA1
31 1BB96284 87199C9A 1DC135AC CA320ED5 76B2127E B XOR C XOR D C09AD3A9 6ED9EBA1
32 B29D7047 1BB96284 A1C66726 1DC135AC CA320ED5 B XOR C XOR D 4FA79C2 6ED9EBA1
33 594B24F3 B29D7047 6EE58A1 A1C66726 1DC135AC B XOR C XOR D 24D2F179 6ED9EBA1
34 991D95E2 594B24F3 ECA75C11 6EE58A1 A1C66726 B XOR C XOR D CD68866A 6ED9EBA1
35 9F18A9E1 991D95E2 D652C93C ECA75C11 6EE58A1 B XOR C XOR D B7C37A84 6ED9EBA1
36 5EA8065D 9F18A9E1 A6476578 D652C93C ECA75C11 B XOR C XOR D 61E28519 6ED9EBA1
37 47C7743 5EA8065D 67C62A78 A6476578 D652C93C B XOR C XOR D E4ED5E41 6ED9EBA1
38 85F04C7A 47C7743 57AA0197 67C62A78 A6476578 B XOR C XOR D 120B65E0 6ED9EBA1
39 45C288ED 85F04C7A C11F1DD0 57AA0197 67C62A78 (B AND C) OR (B AND D) OR (C 3E874BD8 8F1BBCDC
AND D)
40 6D4C8BE4 45C288ED A17C131E C11F1DD0 57AA0197 (B AND C) OR (B AND D) OR (C F85F7916 8F1BBCDC
AND D)
41 DBE3FE38 6D4C8BE4 5170A23B A17C131E C11F1DD0 (B AND C) OR (B AND D) OR (C 8A2EA95C 8F1BBCDC
AND D)
42 68CC3DFF DBE3FE38 1B5322F9 5170A23B A17C131E (B AND C) OR (B AND D) OR (C 3A9518FA 8F1BBCDC
AND D)
43 AF406D34 68CC3DFF 36F8FF8E 1B5322F9 5170A23B (B AND C) OR (B AND D) OR (C 9AD3B14 8F1BBCDC
AND D)
44 53518243 AF406D34 DA330F7F 36F8FF8E 1B5322F9 (B AND C) OR (B AND D) OR (C 4FDF3C98 8F1BBCDC
AND D)
45 396BCF5A 53518243 2BD01B4D DA330F7F 36F8FF8E (B AND C) OR (B AND D) OR (C 665C37DD 8F1BBCDC
AND D)
46 F419E2AF 396BCF5A D4D46090 2BD01B4D DA330F7F (B AND C) OR (B AND D) OR (C A53A2FAF 8F1BBCDC
AND D)
47 507C18D2 F419E2AF 8E5AF3D6 D4D46090 2BD01B4D (B AND C) OR (B AND D) OR (C 2A20AB21 8F1BBCDC
AND D)
48 4DEB37CF 507C18D2 FD0678AB 8E5AF3D6 D4D46090 (B AND C) OR (B AND D) OR (C AF2362C6 8F1BBCDC
AND D)

14
49 75BFAA44 4DEB37CF 941F0634 FD0678AB 8E5AF3D6 (B AND C) OR (B AND D) OR (C 780A1A1D 8F1BBCDC
AND D)
50 2AFA9140 75BFAA44 D37ACDF3 941F0634 FD0678AB (B AND C) OR (B AND D) OR (C 787F6151 8F1BBCDC
AND D)
51 ABF4E62F 2AFA9140 1D6FEA91 D37ACDF3 941F0634 (B AND C) OR (B AND D) OR (C EB40FA2F 8F1BBCDC
AND D)
52 45CBDFCE ABF4E62F ABEA450 1D6FEA91 D37ACDF3 (B AND C) OR (B AND D) OR (C 88798CF8 8F1BBCDC
AND D)
53 B0A3F0D3 45CBDFCE EAFD398B ABEA450 1D6FEA91 (B AND C) OR (B AND D) OR (C 8892862B 8F1BBCDC
AND D)
54 5467129A B0A3F0D3 9172F7F3 EAFD398B ABEA450 (B AND C) OR (B AND D) OR (C 485D92ED 8F1BBCDC
AND D)
55 5923103 5467129A EC28FC34 9172F7F3 EAFD398B (B AND C) OR (B AND D) OR (C 2DE18ABA 8F1BBCDC
AND D)
56 CBB9177C 5923103 9519C4A6 EC28FC34 9172F7F3 (B AND C) OR (B AND D) OR (C CAF70A03 8F1BBCDC
AND D)
57 8472CDFF CBB9177C C1648C40 9519C4A6 EC28FC34 (B AND C) OR (B AND D) OR (C 67A83571 8F1BBCDC
AND D)
58 C819C76 8472CDFF 32EE45DF C1648C40 9519C4A6 (B AND C) OR (B AND D) OR (C 41A99F12 8F1BBCDC
AND D)
59 D15DD7EC C819C76 E11CB37F 32EE45DF C1648C40 B XOR C XOR D 9C8DF9CA CA62C1D6
60 A15F0C02 D15DD7EC 8320671D E11CB37F 32EE45DF B XOR C XOR D A69557C CA62C1D6
61 E7229722 A15F0C02 345775FB 8320671D E11CB37F B XOR C XOR D A8F0B8B CA62C1D6
62 638CC532 E7229722 A857C300 345775FB 8320671D B XOR C XOR D BD924C9D CA62C1D6
63 2582CF0C 638CC532 B9C8A5C8 A857C300 345775FB B XOR C XOR D EB44DDF4 CA62C1D6
64 4F6FC18D 2582CF0C 98E3314C B9C8A5C8 A857C300 B XOR C XOR D 2E48043E CA62C1D6
65 F83D45C3 4F6FC18D 960B3C3 98E3314C B9C8A5C8 B XOR C XOR D 92E133BC CA62C1D6
66 2097C1BD F83D45C3 53DBF063 960B3C3 98E3314C B XOR C XOR D B5D75E9E CA62C1D6
67 BAF3350A 2097C1BD FE0F5170 53DBF063 960B3C3 B XOR C XOR D A22F03E1 CA62C1D6
68 70C66948 BAF3350A 4825F06F FE0F5170 53DBF063 B XOR C XOR D B158F1AA CA62C1D6
69 783C2264 70C66948 AEBCCD42 4825F06F FE0F5170 B XOR C XOR D 3456B308 CA62C1D6
70 A085635F 783C2264 1C319A52 AEBCCD42 4825F06F B XOR C XOR D 3A2FAF25 CA62C1D6
71 E91BAD7 A085635F 1E0F0899 1C319A52 AEBCCD42 B XOR C XOR D 20AB272A CA62C1D6
72 10931FDC E91BAD7 E82158D7 1E0F0899 1C319A52 B XOR C XOR D 2280444F CA62C1D6
73 998EE287 10931FDC C3A46EB5 E82158D7 1E0F0899 B XOR C XOR D A7D6A044 CA62C1D6
74 12DDACD5 998EE287 424C7F7 C3A46EB5 E82158D7 B XOR C XOR D BD7967B5 CA62C1D6
75 99A36CF2 12DDACD5 E663B8A1 424C7F7 C3A46EB5 B XOR C XOR D 2D5B6BDE CA62C1D6
76 F5FA3280 99A36CF2 44B76B35 E663B8A1 424C7F7 B XOR C XOR D 42EA901F CA62C1D6
77 9B0D9ED5 F5FA3280 A668DB3C 44B76B35 E663B8A1 B XOR C XOR D D1C80584 CA62C1D6
78 32FCF064 9B0D9ED5 3D7E8CA0 A668DB3C 44B76B35 B XOR C XOR D 95D18B1 CA62C1D6
79 A69CB5D4 32FCF064 66C367B5 3D7E8CA0 A668DB3C B XOR C XOR D 37C8B2FA CA62C1D6

15
- Bước 5: Xuất kết quả.
+ Với 𝐻1 = 67452301; 𝐻2 = 𝐸𝐹𝐶𝐷𝐴𝐵89;
𝐻3 = 98𝐵𝐴𝐷𝐶𝐹𝐸; 𝐻4 = 10325476; 𝐻5 = 𝐶3𝐷2𝐸1𝐹0
 Các giá trị băm cuối cùng:
𝐻0_𝑘𝑞 = (𝑎69𝑐𝑏5𝑑4 + 𝐻1 ) 𝑚𝑜𝑑 100000000 = 0𝑑𝑒1𝑑8𝑑5
𝐻1_𝑘𝑞 = (32𝑓𝑐𝑓064 + 𝐻2 ) 𝑚𝑜𝑑 100000000 = 22𝑐𝑎9𝑏𝑒𝑑
𝐻2_𝑘𝑞 = (66𝑐367𝑏5 + 𝐻3 ) 𝑚𝑜𝑑 100000000 = 𝑓𝑓7𝑒44𝑏3
𝐻3_𝑘𝑞 = (3𝑑7𝑒8𝑐𝑎0 + 𝐻4 ) 𝑚𝑜𝑑 100000000 = 4𝑑𝑏0𝑒116
𝐻4_𝑘𝑞 = (𝑎668𝑑𝑏3𝑐 + 𝐻5 ) 𝑚𝑜𝑑 100000000 = 4𝑑𝑏0𝑒116
 SHA1("nguyendinhan")=
0DE1D8D522CA9BEDFF7E44B34DB0E1166A3BBD2C

Bài 4. Cho văn bản gốc P = <ten>. Thực hiện mã hoá và giải mã từng ký tự
trong P theo :
a) Mã hóa RSA với (p = 7, q = 11) hoặc (p = 17, q = 31)
b) Mã hóa ElGamal với p = 31, a = 11 và x = 6.
c) Mã hóa Rabin với (p = 7, q = 11)
 Bài làm :

a) Mã hóa RSA với (p = 17, q = 31)


+ Văn bản gốc P = <an>, => 𝑀1 = 97, 𝑀2 = 110
+ Chọn 2 số nguyên tố : 𝑝 = 17, 𝑞 = 31
+ Tính tích : 𝑛 = 𝑝 × 𝑞 = 17 ∗ 31 = 527
+ Tính 𝜙(𝑛) = (𝑝 − 1) × (𝑞 − 1) = 16 × 30 = 480
+ Chọn e là số nguyên tố cùng nhau với 𝜙(𝑛) = 160 và 1 < 𝑒 < 𝜙(𝑛). Chọn 𝑒 =
13

16
+ Xác định d để 𝑑 × 𝑒 ≡ 1 (𝑚𝑜𝑑 480) và 𝑑 < 480. Giá trị phù hợp là 𝑑 = 37 vì
13 × 37 ≡ 1 (𝑚𝑜𝑑 480).
Kết quả ta có khóa công khai (13,527), khóa bí mật (31, 527)
+ Văn bản gốc M1 = 97 < n
Quá trình mã hóa : 𝐶 = 𝑀𝑒 𝑚𝑜𝑑 𝑛 = 9713 𝑚𝑜𝑑 527 = 405
Quá trình giải mã : 𝑀 = 𝐶 𝑑 𝑚𝑜𝑑 𝑛 = 40537 𝑚𝑜𝑑 527 = 97 (đúng)
+ Văn bản gốc M2 = 110 < n
Quá trình mã hóa : 𝐶 = 𝑀𝑒 𝑚𝑜𝑑 𝑛 = 11013 𝑚𝑜𝑑 527 = 468
Quá trình giải mã : 𝑀 = 𝐶 𝑑 𝑚𝑜𝑑 𝑛 = 46837 𝑚𝑜𝑑 527 = 110 (đúng)

b) Mã hóa ElGamal với p = 31, e = 11 và M = 6


+ Chọn p = 31, e1 = 11
+ Chọn d là số ngẫu nhiên sao cho 1 < d < p => chọn d = 6
+ Tính e2 = 𝑒1𝑑 𝑚𝑜𝑑 𝑝 = 116 𝑚𝑜𝑑 31 = 4
 Khóa công khai K pub = (𝑒1 , 𝑒2 , 𝑝) = (11, 4, 31)
Khóa ngẫu nhiên K pri = 𝑑 = 6
- Quá trình mã hóa:
+ Chọn giá trị ngẫu nhiên r = 7
+ C1 = 𝑒1𝑟 𝑚𝑜𝑑 𝑝 = 117 𝑚𝑜𝑑 31 = 13
+ C2 = (𝑒2𝑟 × 𝑀) 𝑚𝑜𝑑 𝑝 = (47 × 6) 𝑚𝑜𝑑 31 = 3
 Văn bản mã hóa C = (C1 , C2 ) = (13, 3) được gửi đến người nhận
- Quá trình giải mã:
−1
M = [C2 × (𝐶1𝑑 ) ] 𝑚𝑜𝑑 𝑝

= [3 × (136 )−1 ] 𝑚𝑜𝑑 31


= (3 𝑚𝑜𝑑 31 × (13−6 𝑚𝑜𝑑 31))𝑚𝑜𝑑 31
= (3 × (1331−1−6 𝑚𝑜𝑑 31)) 𝑚𝑜𝑑 31 = 6 (đúng)

17
c) Mã hóa Rabin với (p=7, q=11):
+ Chọn p = 7, q = 11.
+ Tính n = p × q = 7 × 11 = 77
+ Khóa công khai là n = 77. Khóa riêng là (23, 7)
Cho văn bản M = 20
- Quá trình mã hóa:
C = M 2 𝑚𝑜𝑑 𝑛 = 202 𝑚𝑜𝑑 77 = 15
- Quá trình giải mã:
𝑝+1 7+1
𝑚𝑝1 = 𝐶 4 𝑚𝑜𝑑 𝑝 = 15 4 𝑚𝑜𝑑 7 = 1

𝑚𝑝 2 = 𝑝 − 𝑚𝑝1 = 7 − 1 = 6
𝑞+1 11+1
𝑚𝑞 1 = 𝐶 4 𝑚𝑜𝑑 𝑞 = 15 4 𝑚𝑜𝑑 11 = 9

𝑚𝑞 2 = 𝑞 − 𝑚𝑞 1 = 11 − 9 = 2

+ M1 = (𝑚𝑝1 𝑞(𝑞−1 𝑚𝑜𝑑 𝑝) + 𝑚𝑞 1 𝑝(𝑝−1 𝑚𝑜𝑑 𝑞)) 𝑚𝑜𝑑 𝑛

= (1.11(11−1 𝑚𝑜𝑑 7) + 9.7(7−1 𝑚𝑜𝑑 11)) 𝑚𝑜𝑑 77


= (22 + 504)𝑚𝑜𝑑 77 = 64

+ M2 = (𝑚𝑝1 𝑞(𝑞 −1 𝑚𝑜𝑑 𝑝) + 𝑚𝑞 2 𝑝(𝑝−1 𝑚𝑜𝑑 𝑞)) 𝑚𝑜𝑑 𝑛

= (1.11(11−1 𝑚𝑜𝑑 7) + 2.7(7−1 𝑚𝑜𝑑 11)) 𝑚𝑜𝑑 77


= (22 + 112)𝑚𝑜𝑑 77 = 57

+ M3 = (𝑚𝑝 2 𝑞(𝑞 −1 𝑚𝑜𝑑 𝑝) + 𝑚𝑞 1 𝑝(𝑝−1 𝑚𝑜𝑑 𝑞)) 𝑚𝑜𝑑 𝑛

= (6.11(11−1 𝑚𝑜𝑑 7) + 9.7(7−1 𝑚𝑜𝑑 11)) 𝑚𝑜𝑑 77


= (132 + 504)𝑚𝑜𝑑 77 = 20 (đúng)

18
+ M4 = (𝑚𝑝 2 𝑞(𝑞 −1 𝑚𝑜𝑑 𝑝) + 𝑚𝑞 2 𝑝(𝑝−1 𝑚𝑜𝑑 𝑞)) 𝑚𝑜𝑑 𝑛

= (6.11(11−1 𝑚𝑜𝑑 7) + 2.7(7−1 𝑚𝑜𝑑 11)) 𝑚𝑜𝑑 77


= (132 + 112)𝑚𝑜𝑑 77 = 13
 Chọn 𝑀3 = 20 làm văn bản giải mã.
Bài 5. Mã hóa Elliptic: Cho E23(1, 0).
a) Tìm tất cả các điểm P của đường cong.
b) Chọn một cặp điểm P, Q khác nhau.
c) Tính R = P + Q, 2P, 3P
d) Giả sử cần mã hóa bản rõ M = (10, 9) với một số ngẫu nhiên k = 3. Hãy xác
định bản mã hóa C tương ứng.
e) Thực hiện giải mã C để nhận được văn bản gốc M ban đầu.
 Bài làm:
a) Tìm tất cả các điểm P của đường cong:
Cho E23 (1,0): 𝑦 2 𝑚𝑜𝑑 23 = 𝑥 3 + 𝑥 𝑚𝑜𝑑 23
Các giá trị của x(0 → p − 1) = {0,1,2,3, … ,22}
x 0 1 2 3 4 5 6 7 8 9 10 11 12
y1 0 5 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 5 ∞ 10 ∞
y2 ∞ 18 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 18 ∞ 13 ∞

x 13 14 15 16 17 18 19 20 21 22
y1 ∞ ∞ 3 8 10 10 1 4 6 ∞
y2 ∞ ∞ 20 15 13 13 22 19 17 ∞

b) Chọn một cặp điểm P, Q khác nhau:


Chọn P(1,5) và Q(20,19)
c) Tính R = P + Q, 2P, 3P
- Tính R = P + Q
𝑦𝑞 −𝑦𝑝 19−5
+ Hệ số góc 𝜆 = 𝑚𝑜𝑑 𝑝 = 𝑚𝑜𝑑 23 = 8
𝑥𝑞 −𝑥𝑝 20−1

19
+ Tọa độ R:
𝑥𝑅 = 𝜆2 − 𝑥𝑃 − 𝑥𝑄 𝑚𝑜𝑑 𝑝 = 82 − 1 − 20 𝑚𝑜𝑑 23 = 20
𝑦𝑅 = 𝜆(𝑥𝑃 − 𝑥𝑅 ) − 𝑦𝑃 𝑚𝑜𝑑 𝑝 = 8(1 − 20) − 5 𝑚𝑜𝑑 23 = 4
 R(20, 4)

- Tính R = 2P
2 +𝑎
3𝑥𝑝 3.12 +1
+ Hệ số góc 𝜆 = 𝑚𝑜𝑑 𝑝 = 𝑚𝑜𝑑 23 = 5
2𝑦𝑃 2∗5

+ Tọa độ R:
𝑥𝑅 = 𝜆2 − 2𝑥𝑃 𝑚𝑜𝑑 𝑝 = 52 − 1 − 1 𝑚𝑜𝑑 23 = 0
𝑦𝑅 = 𝜆(𝑥𝑃 − 𝑥𝑅 ) − 𝑦𝑃 𝑚𝑜𝑑 𝑝 = 5(1 − 0) − 5 𝑚𝑜𝑑 23 = 0
 R(0,0)
- Tính R = 3P = 2P + P
𝑦𝑞 −𝑦𝑝 5−0
+ Hệ số góc 𝜆 = 𝑚𝑜𝑑 𝑝 = 𝑚𝑜𝑑 23 = 5
𝑥𝑞 −𝑥𝑝 1−0

+ Tọa độ R:
𝑥𝑅 = 𝜆2 − 𝑥𝑃 − 𝑥𝑄 𝑚𝑜𝑑 𝑝 = 52 − 1 − 0 𝑚𝑜𝑑 23 = 1
𝑦𝑅 = 𝜆(𝑥𝑃 − 𝑥𝑅 ) − 𝑦𝑃 𝑚𝑜𝑑 𝑝 = 14(1 − 1) − 5 𝑚𝑜𝑑 23 = 18
 R(1,18)
d) Giả sử cần mã hóa bản rõ M = (11, 10) với một số ngẫu nhiên k = 3. Hãy
xác định bản mã hóa C tương ứng.
*Để thuận tiện tính toán, ta có bảng kết quả phép cộng các điểm:

+ ∞ (0,0) (1,5) (1,18) (9,5) (9,18) (11,10) (11,13) (13,5) (13,18) (15,3) (15,20) (16,8) (16,15) (17,10) (17,13) (18,10) (18,13) (19,1) (19,22) (20,4) (20,19) (21,6) (21,17)
∞ ∞ (0,0) (1,5) (1,18) (9,5) (9,18) (11,10) (11,13) (13,5) (13,18) (15,3) (15,20) (16,8) (16,15) (17,10) (17,13) (18,10) (18,13) (19,1) (19,22) (20,4) (20,19) (21,6) (21,17)
(0,0) (0,0) ∞ (1,18) (1,5) (18,13) (18,10) (21,6) (21,17) (16,8) (16,15) (20,19) (20,4) (13,5) (13,18) (19,1) (19,22) (9,18) (9,5) (17,10) (17,13) (15,20) (15,3) (11,10) (11,13)
(1,5) (1,5) (1,18) (0,0) ∞ (13,18) (16,8) (17,10) (19,22) (9,18) (18,13) (15,20) (20,19) (18,10) (9,5) (21,6) (11,13) (13,5) (16,15) (11,10) (21,17) (15,3) (20,4) (19,1) (17,13)
(1,18) (1,18) (1,5) ∞ (0,0) (16,15) (13,5) (19,1) (17,13) (18,10) (9,5) (20,4) (15,3) (9,18) (18,13) (11,10) (21,17) (16,8) (13,18) (21,6) (11,13) (20,19) (15,20) (17,10) (19,22)
(9,5) (9,5) (18,13) (13,18) (16,15) (18,10) ∞ (15,3) (19,1) (1,18) (13,5) (17,13) (11,13) (1,5) (16,8) (15,20) (21,6) (0,0) (9,18) (20,4) (11,10) (21,17) (19,22) (20,19) (17,10)
(9,18) (9,18) (18,10) (16,8) (13,5) ∞ (18,13) (19,22) (15,20) (13,18) (1,5) (11,10) (17,10) (16,15) (1,18) (21,17) (15,3) (9,5) (0,0) (11,13) (20,19) (19,1) (21,6) (17,13) (20,4)

20
(11,10) (11,10) (21,6) (17,10) (19,1) (15,3) (19,22) (13,18) ∞ (11,13) (15,20) (13,5) (9,18) (21,17) (20,4) (18,13) (1,18) (17,13) (20,19) (9,5) (1,5) (18,10) (16,8) (16,15) (0,0)
(11,13) (11,13) (21,17) (19,22) (17,13) (19,1) (15,20) ∞ (13,5) (15,3) (11,10) (9,5) (13,18) (20,19) (21,6) (1,5) (18,10) (20,4) (17,10) (1,18) (9,18) (16,15) (18,13) (0,0) (16,8)
(13,5) (13,5) (16,8) (9,18) (18,10) (1,18) (13,18) (11,13) (15,3) (9,5) ∞ (19,1) (11,10) (18,13) (0,0) (19,22) (20,4) (16,15) (1,5) (17,13) (15,20) (21,6) (17,10) (21,17) (20,19)
(13,18) (13,18) (16,15) (18,13) (9,5) (13,5) (1,5) (15,20) (11,10) ∞ (9,18) (11,13) (19,22) (0,0) (18,10) (20,19) (19,1) (1,18) (16,8) (15,3) (17,10) (17,13) (21,17) (20,4) (21,6)
(15,3) (15,3) (20,19) (15,20) (20,4) (17,13) (11,10) (13,5) (9,5) (19,1) (11,13) (1,18) ∞ (17,10) (21,17) (9,18) (16,15) (21,6) (19,22) (18,10) (13,18) (0,0) (1,5) (16,8) (18,13)
(15,20) (15,20) (20,4) (20,19) (15,3) (11,13) (17,10) (9,18) (13,18) (11,10) (19,22) ∞ (1,5) (21,6) (17,13) (16,8) (9,5) (19,1) (21,17) (13,5) (18,13) (1,18) (0,0) (18,10) (16,15)
(16,8) (16,8) (13,5) (18,10) (9,18) (1,5) (16,15) (21,17) (20,19) (18,13) (0,0) (17,10) (21,6) (9,5) ∞ (17,13) (15,20) (13,18) (1,18) (19,22) (20,4) (11,10) (19,1) (11,13) (15,3)
(16,15) (16,15) (13,18) (9,5) (18,13) (16,8) (1,18) (20,4) (21,6) (0,0) (18,10) (21,17) (17,13) ∞ (9,18) (15,3) (17,10) (1,5) (13,5) (20,19) (19,1) (19,22) (11,13) (15,20) (11,10)
(17,10) (17,10) (19,1) (21,6) (11,10) (15,20) (21,17) (18,13) (1,5) (19,22) (20,19) (9,18) (16,8) (17,13) (15,3) (16,15) ∞ (11,13) (20,4) (13,18) (0,0) (13,5) (18,10) (9,5) (1,18)
(17,13) (17,13) (19,22) (11,13) (21,17) (21,6) (15,3) (1,18) (18,10) (20,4) (19,1) (16,15) (9,5) (15,20) (17,10) ∞ (16,8) (20,19) (11,10) (0,0) (13,5) (18,13) (13,18) (1,5) (9,18)
(18,10) (18,10) (9,18) (13,5) (16,8) (0,0) (9,5) (17,13) (20,4) (16,15) (1,18) (21,6) (19,1) (13,18) (1,5) (11,13) (20,19) (18,13) ∞ (21,17) (15,3) (17,10) (11,10) (19,22) (15,20)
(18,13) (18,13) (9,5) (16,15) (13,18) (9,18) (0,0) (20,19) (17,10) (1,5) (16,8) (19,22) (21,17) (1,18) (13,5) (20,4) (11,10) ∞ (18,10) (15,20) (21,6) (11,13) (17,13) (15,3) (19,1)
(19,1) (19,1) (17,10) (11,10) (21,6) (20,4) (11,13) (9,5) (1,18) (17,13) (15,3) (18,10) (13,5) (19,22) (20,19) (13,18) (0,0) (21,17) (15,20) (16,15) ∞ (16,8) (9,18) (18,13) (1,5)
(19,22) (19,22) (17,13) (21,17) (11,13) (11,10) (20,19) (1,5) (9,18) (15,20) (17,10) (13,18) (18,13) (20,4) (19,1) (0,0) (13,5) (15,3) (21,6) ∞ (16,8) (9,5) (16,15) (1,18) (18,10)
(20,4) (20,4) (15,20) (15,3) (20,19) (21,17) (19,1) (18,10) (16,15) (21,6) (17,13) (0,0) (1,18) (11,10) (19,22) (13,5) (18,13) (17,10) (11,13) (16,8) (9,5) (1,5) ∞ (9,18) (13,18)
(20,19) (20,19) (15,3) (20,4) (15,20) (19,22) (21,6) (16,8) (18,13) (17,10) (21,17) (1,5) (0,0) (19,1) (11,13) (18,10) (13,18) (11,10) (17,13) (9,18) (16,15) ∞ (1,18) (13,5) (9,5)
(21,6) (21,6) (11,10) (19,1) (17,10) (20,19) (17,13) (16,15) (0,0) (21,17) (20,4) (16,8) (18,10) (11,13) (15,20) (9,5) (1,5) (19,22) (15,3) (18,13) (1,18) (9,18) (13,5) (13,18) ∞
(21,17) (21,17) (11,13) (17,13) (19,22) (17,10) (20,4) (0,0) (16,8) (20,19) (21,6) (18,13) (16,15) (15,3) (11,10) (1,18) (9,18) (15,20) (19,1) (1,5) (18,10) (13,18) (9,5) ∞ (13,5)

- Tạo cặp khóa (𝐾𝑝𝑢𝑏 , 𝐾𝑝𝑟𝑖 ):


+ Chọn 𝐸23 (1,0)
+ Chọn 1 điểm cơ sở 𝑒1 ∈ 𝐸23 (1,0) 𝑙à (1,5)
+ Chọn khóa bí mật 𝑘 = 3
+ Tính 𝑒2 = 𝑘 × 𝑒1 = 3 × (1,5) = (1,18)

+ 𝐾𝑝𝑢𝑏 = (𝑒1 , 𝑒2 , 𝐸𝑝 (𝑎, 𝑏)) = ((1,5), (1,18), 𝐸23 (1,0))

+ 𝐾𝑝𝑟𝑖 = 𝑘 = 3
- Quá trình mã hóa:
+ Chọn giá trị ngẫu nhiên 𝑟 < 𝑝, 𝑟 = 2
𝐶1 = 𝑟 × 𝑒1 = 2 × (1,5) = (0,0)
+{
𝐶2 = 𝑀 + 𝑟 × 𝑒2 = (11,10) + 2 × (1,18) = (21,6)
 Bản mã 𝐶 = (𝐶1 , 𝐶2 ) = ((0,0), (21,6))
e) Thực hiện giải mã
- Quá trình giải mã:

21
+ 𝑀 = 𝐶2 − 𝑘 × 𝐶1 = (21,6) − 3(0,0) = (11,10) đúng với điểm ban đầu.

22
Phần 2: Bài thực hành
Lab05: Thực hành sử dụng Putty-OPENSSH

Mục đích:
 Dùng Putty/Secure CRT tạo 02 khóa (pub key, pri key),
 NSD tự định nghia ra mật khẩu riêng (passprhase)
 Upload pub key lên Server (10.10.17.17) theo tài khoản NSD.
 Dùng putty để dang nhập vào Server 10.10.17.17 với khóa pri key và
passphrase
 Sau khi dang nhập, các giao dịch giữa hai bên sẽ được mã hóa bằng khóa
đã xây dựng

Hướng dẫn:
1. Xem nội dung file Thuc hanh Putty SSH
2. tải file putty.zip

23
1.1. Tạo Khóa

Hình 0.1 PuTTYKey - Giao diện tạo key rsa

1.2. Đẩy khóa public lên server bằng cách sử dụng công cụ pscp trên Windows
C:\putty x64>dir

Volume in drive C has no label.

Volume Serial Number is 664D-51A0

Directory of C:\ putty x64

10/23/2018 02:33 PM <DIR> .

10/23/2018 02:33 PM <DIR> ..

07/04/2017 08:34 PM 313.912 PAGEANT.EXE

07/04/2017 08:34 PM 617.048 PLINK.EXE

10/23/2018 02:33 PM 1.482 pri.ppk

07/04/2017 08:34 PM 626.744 PSCP.EXE

24
07/04/2017 08:34 PM 643.144 PSFTP.EXE

10/23/2018 02:32 PM 477 pub

07/04/2017 08:36 PM 283.045 PUTTY.CHM

07/04/2017 08:36 PM 33.608 PUTTY.CNT

07/04/2017 08:34 PM 854.072 PUTTY.EXE

07/04/2017 08:36 PM 699.745 PUTTY.HLP

07/04/2017 08:35 PM 407.104 PUTTYGEN.EXE

11 File(s) 4.480.381 bytes

2 Dir(s) 6.013.984.768 bytes free

C:\putty x64>PSCP.EXE pub user01@192.168.1.10:pub

user01@192.168.1.10's password:

pub | 0 kB | 0.5 kB/s | ETA: 00:00:00 | 100%

1.3. Đưa khóa public vào xác thực khi đăng nhập bằng ssh
Dùng putty.exe để đăng nhập vào hệ thống với tài khoản NSD

user01@VMKali:~$ ls -lF

total 48

-rw-r--r-- 1 user01 cntt 477 Oct 23 15:06 pub

user01@VMKali:~$ cat pub

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "rsa-key-20181023"

AAAAB3NzaC1yc2EAAAABJQAAAQEAioabMsJklJDlH9L0sohRfHhko478SsWXNH2/

r+b//9UeIWr16bYz61Z0hQK/4RFFIcuOZHq8rmRmFTXJ76wEGN7fNYNbwIG2fcZy

U7E0z7fYBNUCr6Ig2wKYReaQiX/6/xahAKV1I2O5YnVMhMUZ4xvO21TbW4kBV6oz

yEiE0qoB3thr0xyWsJ9Ey7GUIQp4bJwLkXcP853cgyNsMVV39YjIABmkO6BV8xxA

GZL8nce66V5ru/hxZuywC6XVSeCEgQegy/AkYOpvrg8lBBmzhhQYdQZQWDB9Dfh1

loLdIxx3Wb5lQ642HTwzvY91tJRb7ea6hYrHhg6//evLueQFlw==

---- END SSH2 PUBLIC KEY ----

user01@VMKali:~$ ssh-keygen -if pub > pubopenssh

25
user01@VMKali:~$ mkdir $HOME/.ssh

user01@VMKali:~$ cat $HOME/pubopenssh >> $HOME/.ssh/authorized_keys

user01@VMKali:~$ chmod 600 $HOME/.ssh/authorized_keys

user01@VMKali:~$ ls -la $HOME/.ssh/

total 12

drwxr-xr-x 2 user01 cntt 4096 Oct 23 14:42 .

drwx------ 25 user01 cntt 4096 Oct 23 14:41 ..

-rw-r--r-- 1 user01 cntt 381 Oct 23 14:42 authorized_keys

user01@VMKali:~$ cat $HOME/.ssh/authorized_keys

ssh-rsa
AAAAB3NzaC1yc2EAAAABJQAAAQEAioabMsJklJDlH9L0sohRfHhko478SsWXNH2/r+b//9UeIWr16bYz61Z0hQ
K/4RFFIcuOZHq8rmRmFTXJ76wEGN7fNYNbwIG2fcZyU7E0z7fYBNUCr6Ig2wKYReaQiX/6/xahAKV1I2O5YnVM
hMUZ4xvO21TbW4kBV6ozyEiE0qoB3thr0xyWsJ9Ey7GUIQp4bJwLkXcP853cgyNsMVV39YjIABmkO6BV8xxAGZ
L8nce66V5ru/hxZuywC6XVSeCEgQegy/AkYOpvrg8lBBmzhhQYdQZQWDB9Dfh1loLdIxx3Wb5lQ642HTwzvY91
tJRb7ea6hYrHhg6//evLueQFlw==

user01@VMKali:~$

26
1.4. Kết quả đăng nhập thành công bằng ssh

Hình 0.2 PuTTYKey - Đăng nhập thành công

27
Lab10: Thực hành sử dụng OpenSSL
>> Vào run, gõ lệnh: cmd để mở cửa sổ lệnh
>> Chuyển về thư mục C:\OpenSSL-Win32\bin
C:\Users\XXX>cd C:\OpenSSL-Win32\bin
 Máy em lưu ở thư mục F:\Tut\Sem7\Mã hóa\bai-thuc-
hanh\ToolOpenSSL\bin>

>> Xem nội dung thư mục

28
----------------------------------------------------
>> Xem thông tin về phiên bản OpenSSL

>> Xem chi tiết

29
----------------------------------------------------
>> Mã hóa tập tin baocao.doc thành baocaoXXX.doc.aes theo thuật toán mã hóa
AES 256-bit ở chế độ CBC

>> Xem kết quả thực hiện lệnh

30
>> Giải mã tập tin mã hóa AES baocaoXXX.doc.aes thành tập tin
baocaoXXX01.doc

--------------------------------------------------------

31
>> Mã hóa file baocao.doc sử dụng thuật toán AES 256-bit, kết quả là file
baocaoXXX.doc.enc theo chuẩn mã hóa base64

>> Xem kết quả thực hiện lệnh

>> Giải mã tập tin baocaoXXX.doc.enc đã mã hóa. Chú ý tập tin này đã được
tạo từ lệnh trên

32
>> Xem kết quả thực hiện lệnh

----------------------------------------------------
>> Mã hóa file theo thuật toán AES sử dụng mật khẩu nhập từ dòng lệnh

33
>> Mã hóa file theo thuật toán AES sử dụng mật khẩu đã lưu trong file
password.txt

----------------------------------------------------
>> Mã hóa file theo thuật toán DES

34
>> Xem kết quả thực hiện lệnh

>>> Giải mã tập tin vừa mã hóa:

35
>> Xem kết quả thực hiện lệnh

----------------------------------------------------
>> Mã hóa file theo thuật toán mã hóa Base64-encode

36
----------------------------------------------------

>> Kiểm tra một số có phải là số nguyên tố không?

----------------------------------------------------

37
>> Tính giá trị băm MD5 cho tập tin

38
# SHA1 digest

# SHA256 digest

39
----------------------------------------------------
>> Generate a crypt-style password hash

# If you know an existing password’s “salt,” you can duplicate the hash.

40
----------------------------------------------------
>> Mã hóa theo thuật toán mã hóa công khai RSA
>> Chú ý thay XXX bằng tên của người dùng
>> Tạo khóa riêng theo thuật toán mã hóa RSA

41
>> Xem kết quả thực hiện lệnh

>> Xem nội dung khóa riêng trong file NguyenDinhAnpri.key

>> Tạo khóa công khai NguyenDinhAnpub.key từ khóa riêng


NguyenDinhAnpri.key:

42
>> Xem nội dung khóa công khai trong file XXXpub.key

>> Mã hóa và giải mã sử dụng các khóa (NguyenDinhAnpub.key,


NguyenDinhAnpri.key) vừa tạo
Mã Hóa:

43
Giải mã:

>> Xem kết quả thực hiện lệnh

44
-------------------------------------------------------------------
>> Tạo một chứng nhận từ khóa riêng NguyenDinhAnpri.key

>> Xem kết quả thực hiện lệnh

45
>> Xem nội dung giấy chứng nhận NguyenDinhAn.crt (CRT Certificate Signing
Request)

----------------------------------------------------

>> Từ khóa riêng NguyenDinhAnpri.key và chứng chỉ NguyenDinhAn.crt, ta tạo


ra một tập tin NguyenDinhAn.pfx :

46
>> Xem kết quả thực hiện lệnh

>> Từ cửa sổ Windows, chạy tập tin NguyenDinhAn.pfx để cài đặt chữ kí điện tử
vừa tạo. Xuất hiện cửa sổ Certificate Import Wizard, chọn nút Next...

47
48
49
50
51
----------------------------------------------------

>> Tạo tập tin NguyenDinhAn.pem từ tập tin NguyenDinhAn.pfx

52
>> Xem kết quả thực hiện lệnh

>> Ký vào tập tin baocao.doc sử dụng file NguyenDinhAn.pem

53
>> Xem kết quả thực hiện lệnh

---------------------------------------------------

>> Tạo khóa riêng có sử dụng password để bảo vệ. Mã hóa sử dụng AES 256 bits
>> Generate a public and private RSA key pair:

54
>> Xem kết quả thực hiện lệnh

55
>> Tạo khóa công khai từ tập tin XXXpri.pem

>> Xem kết quả thực hiện lệnh

56
>> Xem nội dung khóa công khai trong tập tin XXXpub.pem

----------------------------------------------------

>> Tạo email sử dụng chữ ký điện tử NguyenDinhAn.pem

57
58
-------------------------------------------------
>> Sử dụng OpenSSL như một chương trình kết nối đến một Web server và hiển
thị chuỗi certificate chain.

59
60
--------------------------------------------------
>> Tạo khóa cho mã hóa Elliptic (?)

61
// openssl can provide full list of EC parameter names suitable for passing to the
-name option above:

62
63
64

You might also like