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

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

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 (429.3 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).

Sinh viên : Hoàng Văn Đạt
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, 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à hồ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 tốn AES
Chương III: XML
Chương IV: Xây dựng chương trình

Sinh viên : Hoàng Văn Đạt
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 tốn
Đối với thuật tố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 q trình thực thi thuật tố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

Sinh viên : Hoàng Văn Đạt
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à q trình phi
tuyến của thuật tố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


Sinh viên : Hồng Văn Đạt
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()

Sinh viên : Hoàng Văn Đạt
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 tố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 mã
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

Sinh viên : Hoàng Văn Đạt
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

Sinh viên : Hồng Văn Đạt
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 0b 0d 09  s 0,c 



 
09
0
e
0
b
0
d
s
'
s
1
,
c

1
,
c









 s' 
0d 09 0e 0b s 2,c 


 2,c  
 s3,c   0b 0d 09 0e   s3,c 

với 0 ≤ c < Nb.

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

Sinh viên : Hoàng Văn Đạt
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 tố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
Sinh viên : Hoàng Văn Đạt

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 tồ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
Sinh viên : Hoàng Văn Đạt
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 tố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
Sinh viên : Hoàng Văn Đạt
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

Sinh viên : Hoàng Văn Đạt
12


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

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

2.Open file

Sinh viên : Hoàng Văn Đạt
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


Sinh viên : Hoàng Văn Đạt
14


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

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

4.Form mã hóa

5.Form giải mã

Sinh viên : Hoàng Văn Đạt
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
Sinh viên : Hoàng Văn Đạt
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
q trình xây dựng và hồn thành đề tài.

Sinh viên : Hoàng Văn Đạt
17



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

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