Tải bản đầy đủ (.doc) (17 trang)

Xây dựng chương trình mã hóa văn bản xml

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 (444.94 KB, 17 trang )

Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

LỜI NÓI ĐẦU
Với sự phát triển mạnh mẽ của Internet và nhu cầu chia sẽ thông tin ở
mọi nơi, tư nhiều nền khác nhau thì XML ngày càng được phát triển và đóng
một vai trò rất quan trọng trong việc tổ chức và chia thông tin. Có rất nhiều hệ
thống quản trị CSDL cỡ lớn đang hỗ trợ CSDL XML như: Oracle, IBM, MS
SQL, v.v…
Tuy nhiên một nhược điểm dễ thấy của CSDL XML đó là tính bảo mật.
Hầu hết các dữ liệu được tổ chức, lưu trữ và truyền tải trên nền XML đều ở
dưới dạng văn bản thuần túy (text base) nên rất dễ bị rò rỉ thông tin nếu ta
dùng XML để tổ chức và truyền tải cho những dữ liệu nhạy cảm.
Một yêu cầu được đặt ra là làm sao có thể bảo mật được thông tin khi
lưu trữ và truyền tải trền nền CSDL XML nhưng vẫn giữ được điểm mạnh
truyền thống vốn có của CSDL XML là dữ liệu vẫn được tổ chức dưới dạng
văn bản thuần túy (text base). Trên tinh thần đó, các tổ chức và công ty lớn
trong lĩnh vực nghiên cứu và xây dựng các hệ QT CSDL, bảo mật và các
chuẩn chung về Internet như: W3C, IBM, Oracle,v.v…đã kết hợp với nhau để
xây dựng một chuẩn công nghệ cho việc mã hóa thông tin và bảo mật dữ liệu
trên nền CSDL XML. Công nghệ này tạm gọi chung là mã hóa và bảo mật
trền CSDL XML (XML Encryption & Security).

1


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML


Chương I : Tổng quan
I.PHẠM VI ĐỀ TÀI
1.Tên đề tài:
“Xây dựng chương trình mã hóa văn bản xml
theo giải thuật AES”
2.Mục đích, yêu cầu
-Tìm hiểu giải thuật mã hóa khối AES
-Tìm hiểu về văn bản XML và ứng dụng
-Tìm hiểu bộ công cụ lập trình Dotnet 2005
-Xây dựng và hoàn thiện chương trình
II. CẤU TRÚC CHUNG CỦA BÁO CÁO
Cấu trúc của báo cáo gồm 4 chương:
Chương I : Tổng quan
Chương II: Thuật toán AES
Chương III: XML
Chương IV: Xây dựng chương trình

2


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

Chương II: Thuật toán AES
Trong mật mã học, AES (viết tắt của từ tiếng Anh: Advanced
Encryption Standard) là thuật toán được thiết kế bởi hai nhà mật mã học
người Bỉ: Joan Daemen và Vincent Rijmen
I.Mô tả thuật toán
Đối với thuật toán AES, độ dài của khối đầu vào, đầu ra và Trạng thái

đều là 128 bít. Như vậy Nb=4 là số lượng các từ 32 bít (số cột) của Trạng
thái.
Trong thuật toán AES, độ dài Khóa mã K có thể là 128, 192 hoặc 256
bít. Độ dài khóa được biểu diễn bằng một số Nk = 4, 6, hoặc 8 thể hiện số
lượng các từ 32 bít (số cột) của Khóa mã.
Số vòng được thay đổi trong quá trình thực thi thuật toán phụ thuộc vào
kích cỡ khóa. Số vòng này được ký hiệu là Nr, trong AES, Nr = 10 khi Nk =
4, Nr = 12 khi Nk = 6 và Nr = 14 khi Nk = 8.
Thuật toán:
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0,Nb-1])
for round = 1 step 1 to Nr–1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end

3


Giáo viên HD: Phạm Tuấn Đạt


Mã hóa văn bản XML

Các phép toán của thuật toán AES được thực hiện trên một mảng byte
hai chiều gọi là Trạng thái. Trạng thái bao gồm 4 hàng byte, mỗi hàng chứa
Nb byte, trong đó Nb bằng số lượng từ trong một khối.
1.Phép SubBytes()
Các byte được thế thông qua bảng tra S-box. Đây chính là quá trình phi
tuyến của thuật toán
Hộp-S được trình bày ở dạng thập lục phân như trong hình sau:
y

x

0

1

2

3

4

5

6

7


8

9

a

B

c

d

e

f

0

63

7c

77

7b

f2

6b


6f

c5

30

01

67

2b

fe

d7

ab

76

1

ca

82

c9

7d


Fa

59

47

f0

ad

d4

a2

Af

9c

a4

72

c0

2

b7

fd


93

26

36

3f

f7

cc

34

a5

e5

f1

71

d8

31

15

3


04

c7

23

C3

18

96

05

9a

07

12

80

e2

eb

27

b2


75

4

09

83

2c

1a

1b

6e

5a

a0

52

3b

d6

b3

29


e3

2f

84

5

53

d1

00

ed

20

fc

b1

5b

6a

cb

be


39

4a

4c

58

cf

6

d0

ef

Aa

fb

43

4d

33

85

45


f9

02

7f

50

3c

9f

a8

7

51

a3

40

8f

92

9d

38


f5

bc

b6

da

21

10

ff

f3

d2

8

cd

0c

13

ec

5f


97

44

17

c4

a7

7e

3d

64

5d

19

73

9

60

81

4f


dc

22

2a

90

88

46

ee

b8

14

de

5e

0b

db

a

e0


32

3a

0a

49

06

24

5c

c2

d3

ac

62

91

95

e4

79


b

e7

c8

37

6d

8d

d5

4e

a9

6c

56

f4

Ea

65

7a


ae

08

c

ba

78

25

2e

1c

a6

b4

c6

e8

dd

74

1f


4b

bd

8b

8a

d

70

3e

b5

66

48

03

f6

0e

61

35


57

b9

86

c1

1d

9e

e

e1

f8

98

11

69

d9

8e

94


9b

1e

87

e9

ce

55

28

df

f

8c

a1

89

0d

Bf

e6


42

68

41

99

2d

0f

b0

54

bb

16

Ví dụ, nếu s1,1= {53}, thì giá trị thay thế được xác định bởi vị trí giao của hàng
số “5” và cột số “3” trong hình trên. Điều này cho kết quả s’1,1 là {ed}.
2.Phép ShiftRows()
Trong phép biến đổi ShiftRows(), các byte ở ba hàng cuối của Trạng
thái được dịch vòng theo số lượng byte khác nhau (các offset). Hàng đầu tiên,
r=0, không được dịch chuyển

4



Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

Cụ thể, Phép biến đổi ShiftRows() thực hiện như sau:
s’r,c = sr, (c + shift(r,Nb)) mod Nb với 0 < r < 4 và 0 ≤ c < Nb
trong đó giá trị dịch chuyển shift(r,Nb) phụ thuộc vào số lượng hàng r, như
sau (chú ý rằng Nb = 4):
shift (1,4) = 1 ; shift (2,4) = 2 ; shift (3,4) = 3
Phép ShiftRow() được mô tả như hình sau:
ShiftRow()

sr,0

sr,1

sr,2

s’r,0

sr,3

s’r,1

s’r,2

s’r,3

s’


s
s0,0

s0,1

s0,2

s0,3

s0,0

s0,1

s0,2

s0,3

s1,0

s1,1

s1,2

s1,3

s1,1

s1,2

s1,3


s1,0

s2,0

s2,1

s2,2

s2,3

s2,2

s2,3

s2,0

s2,1

s3,0

s3,1

s3,2

s3,3

s3,3

s3,0


s3,1

s3,2

3.Phép MixColumns()
Phép biến đổi MixColumns() trên Trạng thái được thực hiện theo từng cột,
nghĩa là mỗi cột được xem như là một đa thức 4 hạng tử. Các cột được coi là
các đa thức trên trường GF(28) và được nhân theo modulo x4 + 1 với một đa
thức cố định a(x) sau đây:
a(x) = {03}x3 + {01}x2 + {01}x + {02}
Điều này có thể biểu diễn dưới dạng một phép nhân ma trận.
Giả sử s’( x) = a( x) • s( x) :
 s'0,c  02 03 01 01  s0,c 
 

 
 s'1,c  = 01 02 03 01  s1,c 
 s'  01 01 02 03  s 
  2,c 
 2,c  
 s3,c  03 01 01 02  s3,c 

với 0 ≤ c < Nb.

4.Phép AddRoundKey()

5



Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

Trong Phép biến đổi AddRoundKey(), một Khóa vòng được cộng với Trạng
thái bằng một phép toán XOR đơn giản trên bít. Mỗi Khóa vòng bao gồm Nb
từ nhận được từ lược đồ khóa. Nb từ này được cộng với các cột của Trạng
thái sao cho:
[s'0,c , s'1,c , s'2,c s'3,c ] =[s0,c , s1,c , s2,c , s3,c ] ⊕ [wround  Nb c ] với 0 ≤ c < Nb
Trong đó, [wi] là các từ của lược đồ khóa, round là một giá trị nằm
trong 0≤round ≤ Nr.
Các thao tác của Phép biến đổi này được minh họa trong hình sau:
l = round * Nb
s0,cs1,c
s0,0s0,1s0,2
s s1,0s1,1s1,2s1,3s2,0
s2,cs0,3
3,c
s2,1s2,2s2,3
s3,0s3,1s3,2s3,3 ⊕

wl+c

wl+1

wl+2

wl+3

s’ s’1

s’0,0s0,1s’0,c
s’ s’ s s’ s’
0,2 0,3 1,0 1,1 1,2 1,3
s’
s
s’2,0s2,1,cs’2,22,cs’2,3s’3,0s3,1s’3,2s’3,3
’3,c

II.Giải ma
Các phép biến đổi trong Phép mã hóa có thể được đảo ngược và sau đó
thực thi theo chiều ngược lại nhằm tạo ra Phép giải mã trực tiếp của thuật toán
AES. Các phép biến đổi sử dụng trong Phép giải mã là InvShiftRows(),
InvSubBytes(), InvMixColumns()và AddRoundKey().
Thuật toán:
InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1

6


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

InvShiftRows(state)
InvSubBytes(state)

AddRoundKey(state,w[round*Nb,(round+1)*Nb-1])
InvMixColumns(state)
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
out = state
end

1.Phép InvShiftRows()
Phép biến đổi InvShiftRows() là phép biến đổi ngược của ShiftRows(). Các
byte trong ba từ cuối của Trạng thái được dịch vòng theo số byte khác nhau
(offset). Ở hàng đầu tiên (r =0) không thực hiện phép chuyển dịch. Ba hàng
dưới cùng được dịch vòng Nb  shift (r, Nb) byte.
Cụ thể, phép biến đổi InvShiftRows() được thực hiện như sau:
sr, (c + shift(r,Nb)) mod Nb = s’r,c với 0 < r < 4 và 0 ≤ c < Nb
Phép InvShiftRows() được mô tả như hình sau:

InvShiftRow()

sr,0sr,1sr,2sr,3
s

s’r,0s’r,1s’r,2s’r,3
s’

s0,0s0,1s0,2s0,3s1,0s1,1s1,2s1,3s2,0

s0,0s0,1s0,2s0,3s1,3s1,0s1,1s1,2s2,2


s2,1s2,2s2,3s3,0s3,1s3,2s3,3

s2,3s2,0s2,1s3,1s3,2s3,3s3,0

7


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

2.Phép InvSubBytes()
Phép biến đổi InvSubBytes() là nghịch đảo của phép thay thế theo byte
SubBytes(), trong đó sử dụng một Hộp-S nghịch áp dụng cho mỗi byte của
Trạng thái. Hộp-S nghịch như sau:
y

x

0

1

2

3

4

5


6

7

8

9

a

b

c

d

e

f

0

52

09

6a

d5


30

36

a5

38

bf

40

a3

9e

81

f3

d7

fb

1

7c

e3


39

82

9b

2f

Ff

87

34

8e

43

44

c4

de

e9

cb

2


54

7b

94

32

a6

c2

23

3d

ee

4c

95

0b

42

fa

c3


4e

3

08

2e

A1

66

28

d9

24

b2

76

5b

a2

49

6d


8b

d1

25

4

72

f8

F6

64

86

68

98

16

d4

a4

5c


cc

5d

65

b6

92

5

6c

70

48

50

fd

ed

b9

da

5e


15

46

57

a7

8d

9d

84

6

90

d8

Ab

00

8c

bc

d3


0a

f7

e4

58

05

b8

b3

45

06

7

d0

2c

1e

8f

ca


3f

0f

02

c1

af

bd

03

01

13

8a

6b

8

3a

91

11


41

4f

67

Dc

ea

97

f2

cf

ce

f0

b4

e6

73

9

96


ac

74

22

e7

ad

35

85

e2

f9

37

e8

1c

75

df

6e


a

47

f1

1a

71

1d

29

c5

89

6f

b7

62

0e

aa

18


be

1b

b

fc

56

3e

4b

c6

d2

79

20

9a

db

c0

fe


78

cd

5a

f4

c

1f

dd

A8

33

88

07

c7

31

b1

12


10

59

27

80

ec

5f

d

60

51

7f

a9

19

b5

4a

0d


2d

E5

7a

9f

93

c9

9c

ef

e

a0

e0

3b

4d

ae

2a


f5

b0

c8

eb

bb

3c

83

53

99

61

f

17

2b

04

7e


ba

77

d6

26

e1

69

14

63

55

21

0c

7d

3.Phép biến đổi InvMixcolumns()
Phép biến đổi InvMixColumns() là phép biến đổi ngược của
MixColumns().Nó có thể được biểu diễn như một phép nhân ma trận s′( x) =
a −1 ( x) ⊗ s( x) như sau:
 s' 0,c  0e


 
 s'1,c  = 09
 s'  0d
 2,c  
 s3,c  0b

0b 0d 09  s 0,c 


0e 0b 0d   s1,c 
09 0e 0b  s 2,c 




0d 09 0e   s3,c 

với 0 ≤ c < Nb.

4.Phép biến đổi nghịch của AddRoundKey()

8


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

Phép biến đổi AddRoundKey() là một phép biến đổi thuận nghịch vì

nó chỉ áp dụng một phép toán XOR nên nó được thực hiện như nhau ở Phép
mã hóa và Phép giải mã.

Chương III: XML

9


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

1.XML là gì ?
XML viết tắt của chữ eXtensible Markup Language (ngôn ngữ nâng
cấp có thể mở rộng) là một bộ qui luật về cách chia một tài liệu ra làm nhiều
phần, rồi đánh dấu và ráp các phần khác nhau lại để dễ nhận diện chúng.
Ðược chỉ đạo bởi Tổ hợp Web toàn cầu (W3C), XML trở thành một đặc điểm
kỹ thuật chính thức. Tổ hợp Web toàn cầu W3C gọi XML là "một cú pháp
thông dụng cho việc biểu thị cấu trúc trong dữ liệu".
2.Cấu trúc của một tài liệu XML
Một tài liệu XML phải theo đúng các luật sau đây:
• Phải có một root (gốc) Element duy nhất, gọi là Document
Element, nó chứa tất cả các Elements khác trong tài liệu.
• Mỗi opening Tag phải có một closing Tag giống như nó.
• Tags trong XML thì case sensitive, tức là opening Tag và closing
Tag phải được đánh vần y như nhau, chữ hoa hay chữ thường.
• Mỗi Child Element phải nằm trọn bên trong Element cha của nó.
• Attribute value trong XML phải được gói giữa một cặp ngoặc kép
hay một cặp apostrophe.
3.Xml để làm gì?

XML được sinh ra nhằm những mục đích chính sau:
-Tạo ra một tiêu chuẩn thống nhất để truyền và trao đổi thông tin với
nhau qua Internet bởi các web services ( tuy nhiên không hạn chế chỉ qua
Internet mà còn có thể qua những phương tiện khác). Trong tương lai, có lẽ
mọi thông tin sẽ đều được biểu diễn dưới dạng XML. Thông tin XML được
truyền qua Internet bằng các protocol như HTTP hay SOAP.
- XML hỗ trợ hầu hết các application. Chẳng hạn HTML chỉ được dùng
hạn chế trên trang web mà thôi, không dùng được bởi các ứng dụng.
- Tạo thuận lợi cho các trình ứng dụng đọc và xử lý thông tin dưới dạng
XML, bởi vì thật chất XML chỉ là một file text đơn thuần. XML có thể được

10


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

soạn thảo bằng bất kỳ text-editor nào như Notepad chẳng hạn.
-Các thông tin dưới dạng XML là human-legible và self-describing
nghĩa là con người có thể đọc và hiểu được thông tin đó là về cái gì một cách
dễ dàng.
4.Những ứng dụng của XML
Hiện nay trên thế giới, người ta vẫn còn đang tiếp tục nghiên cứu để
phát triển các ứng dụng của XML. Tuy nhiên, có một số ứng dụng đã được
phát triển rộng rãi như sau:
+Web Service : Các dịch vụ trên web
+ XHTML: XHTML = XML + HTML = eXtensible Hypertext Markup
Language. Mục đích của XHTML là dùng để thống nhất và chuẩn hóa ngôn
ngữ HTML, vốn rất là loosely-defined, nghĩa là không quy định chặt chẽ cấu

trúc.
+ MathML (Mathematics Markup Language): dùng để biểu diễn các
thông tin toán học bằng ngôn ngữ và cú pháp của XML. Hiện nay có một
browser có khả năng hiển thị MathML là Amaya.
+ VML (Vector Markup Language): đây là một kỹ thuật mới do
Microsoft phát triển. VML dùng để vẽ các hình vector trên trang web chỉ
bằng các đoạn văn bản XML (text đơn thuần) mà không cần phải lưu dưới
dạng binary.

Chương IV: Xây dựng chương trình
I.MÔ TẢ CHƯƠNG TRÌNH

11


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

1.Tổng quan
Chương trình gồm các chức năng cơ bản sau:
• Load file các file XML
• Chuyển dữ liêu vào Datagridview ( hỗ trợ các file xml có cấu
trúc cơ sở dữ liệu).
• Edit các dữ liệu trong file XML thông qua Datagridview.
• Mã hóa văn bản XML bằng thuật toán AES.
• Giải mã.
• Convert các file định dạng XML (có cấu trúc cơ sở dữ liệu ) sang
định dạng MDB.
2.Giải pháp thực hiện

-Tìm hiểu cách sử dụng các giải thuật mã hóa trên nền DOTNET(AES,
RSA, …).
-Tìm hiểu phương thức xử lý văn bản XML trên nền DOTNET:
• Mã hóa
• Giải mã
• Xử lý dữ liệu
- Sử dụng bộ công cụ phát triển Microsoft Visual Studio 2005 trên nền
tảng .NET Frame Work 2.0.

II.MỘT SỐ FORM CỦA CHƯƠNG TRÌNH
1.Giao diện chính

12


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

2.Open file

13


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

Với những file xml có cấu trúc cơ sở dữ liệu ta có thể view nó trong
một Datagridview


3.Form tạo khóa RSA

14


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

4.Form ma hóa

5.Form giải ma

15


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML

6.Form convert xml to mdb

KẾT LUẬN
16


Giáo viên HD: Phạm Tuấn Đạt

Mã hóa văn bản XML


Sau thời gian thực tập, nghiên cứu và xây dựng đề tài cùng sự giúp đỡ
nhiệt tình của các thầy cô giáo trong khoa đã tạo điều kiện cho em hoàn
thành đề tài của mình một cách tốt nhất.
Do điều kiện về thời gian cũng như kinh nghiệm làm việc nên không
tránh khỏi những thiếu sót trong báo cáo cũng như trong chương trình. Em rất
mong nhận được sự quan tâm, chỉ bảo của các thầy cô giáo, bạn bè để đề tài
của em được hoàn thiện và sinh động hơn.
Cuối cùng em xin chân thành cảm ơn các thầy cô giáo trong khoa và đặc
biệt là thầy giáo Thạc sỹ Phạm Tuấn Đạt đã tận tình giúp đỡ em trong suốt
quá trình xây dựng và hoàn thành đề tài.

17



×