Tải bản đầy đủ (.pdf) (52 trang)

Một số thuật toán trong trò chơi trí tuệ và xây dựng chương trình thử nghiệm

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 (712.42 KB, 52 trang )

LỜI CẢM ƠN
Sau thời gian học tập và nghiên cứu em đã hoàn thành khóa luận tốt
nghiệp với đề tài: “Chuẩn mã dữ liệu DES và xây dựng chương trình ứng dụng”.
Em xin tỏ lòng biết ơn sâu sắc đến thầy giáo TS. Trịnh Đình Vinh,
trường Đại học sư phạm Hà Nội 2 đã tận tình giúp đỡ và truyền đạt nhiều
kinh nghiệm để đề tài có thể được thực hiện và hoàn thành.
Em xin cảm ơn các thầy, cô giáo trong khoa Công nghệ Thông tin,
trường Đại học sư phạm Hà Nội 2, trong suốt bốn năm học vừa qua đã trang
bị cho em những kiến thức cơ bản cần thiết và bổ ích giúp em hoàn thành
khóa luận tốt nghiệp cũng như những kỹ năng nghề nghiệp sau này.
Cuối cùng, em xin bày tỏ lòng biết ơn tới gia đình và bạn bè đã giúp đỡ,
động viên em rất nhiều trong suốt quá trình học tập để em có thể hoàn thành
đề tài khóa luận này.
Tuy đã có những cố gắng nhất định nhưng do thời gian và trình độ có
hạn nên bài khóa luận này còn nhiều thiếu sót và hạn chế nhất định. Kính
mong nhận được sự góp ý của thầy cô và các bạn.

Hà Nội, ngày 15 tháng 05 năm 2013
Sinh viên

Nguyễn Thị Huệ


LỜI CAM ĐOAN
Tên em là: NGUYỄN THỊ HUỆ
Sinh viên lớp: K35 - Tin học, khoa Công nghệ Thông tin, trường Đại
học sư phạm Hà Nội 2.
Em xin cam đoan:
1. Đề tài: “Chuẩn mã dữ liệu DES và xây dựng chương trình ứng
dụng” là sự nghiên cứu của riêng em, dưới sự hướng dẫn của thầy giáo
TS. Trịnh Đình Vinh.


2. Khóa luận hoàn toàn không sao chép của tác giả nào khác.
Nếu sai em xin hoàn toàn chịu trách nhiệm.

Hà Nội, ngày 15 tháng 05 năm 2013
Người cam đoan

Nguyễn Thị Huệ


MỤC LỤC
MỞ ĐẦU ....................................................................................................... 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ............................................................... 4
1.1. Khái niệm cơ bản về cơ sở dữ liệu .......................................................... 4
1.2. An toàn bảo mật thông tin ...................................................................... 4
1.3. Mục tiêu và nguyên tắc chung của an toàn bảo mật thông tin ................. 6
1.4. Giới thiệu về SQL Server và Visual Basic.NET ..................................... 7
1.4.1. SQL Server ..................................................................................... 7
1.4.2. Microsoft.NET và Visual Basic.NET............................................. 9
CHƯƠNG 2: CÁC HỆ MÃ HÓA CỔ ĐIỂN ................................................ 13
2.1. Giới thiệu về hệ mật mã ....................................................................... 13
2.1.1. Khái niệm hệ mật mã .................................................................... 13
2.1.2. Một số ứng dụng của mật mã học ................................................. 14
2.1.3. Phân loại các thuật toán của hệ mật mã......................................... 15
2.2. Các hệ mã thông dụng .......................................................................... 16
2.2.1. Hệ mã hoá thay thế (subtitution cipher) ........................................ 16
2.2.2. Hệ mã Caesar ............................................................................... 17
2.2.3. Hệ mã Affine ................................................................................ 18
2.2.4. Hệ mã Vigenere ............................................................................ 19
2.2.5. Hệ mã Hill .................................................................................... 20
CHƯƠNG 3: HỆ MÃ CHUẨN DES............................................................ 21

3.1. Các khái niệm....................................................................................... 21
3.2. Lịch sử DES (Data Encryption Standards)............................................ 23
3.3. Đặc tả DES ........................................................................................... 23
3.3.1. Mô tả sơ đồ mã hoá DES .............................................................. 23
3.3.2. Mô tả hàm f .................................................................................. 26
3.3.3. Hoán vị IP và hoán vị ngược IP-1 .................................................. 28


3.3.4. Hàm (ánh xạ) mở rộng E .............................................................. 29
3.3.5. Mô tả hộp S-box và hộp P-box ..................................................... 30
3.3.6. Thuật toán sinh khóa con .............................................................. 33
3.4. Tính chất của DES ................................................................................ 36
3.5. Lập mã DES ......................................................................................... 37
CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG ..................... 42
4.1. Giới thiệu bài toán ................................................................................ 42
4.2. Chương trình thử nghiệm ..................................................................... 43
4.2.1. Formmain ..................................................................................... 43
4.2.2. Form Lập mã Des ......................................................................... 44
4.2.3. Form Giải mã Des ........................................................................ 44
KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN ................................... 45
TÀI LIỆU THAM KHẢO ............................................................................ 46


DANH MỤC HÌNH
Trang
Hình 3.1. Biểu diễn dãy bit thành 2 phần L và R .......................................... 24
Hình 3.2. Quy trình phát sinh dãy 64 bit LiRi từ dãy 64 bit Li-1Ri-1
và khóa Ki .................................................................................................... 24
Hình 3.3. Sơ đồ mã hóa DES ........................................................................ 25
Hình 3.4. Sơ đồ hàm f .................................................................................. 27

Hình 3.5. Sơ đồ tạo khóa con của DES ......................................................... 34
Hình 4.1. Formmain ..................................................................................... 43
Hình 4.2. Form Lập mã DES ........................................................................ 44
Hình 4.3. Form Giải mã DES ....................................................................... 44


DANH MỤC BẢNG
Trang

Bảng 2.1. Bảng đánh số các chữ cái Tiếng anh................................................ 18
Bảng 3.1. Bảng hoán vị IP ............................................................................... 28
Bảng 3.2. Bảng hoán vị IP-1 ............................................................................. 28
Bảng 3.3. Bảng mô tả hàm mở rộng E ............................................................. 29
Bảng 3.4. Hộp S1 ............................................................................................. 31
Bảng 3.5. Hộp S2 ............................................................................................. 31
Bảng 3.6. Hộp S3 ............................................................................................. 31
Bảng 3.7. Hộp S4 ............................................................................................. 31
Bảng 3.8. Hộp S5 ............................................................................................. 32
Bảng 3.9. Hộp S6 ............................................................................................. 32
Bảng 3.10. Hộp S7 ........................................................................................... 32
Bảng 3.11. Hộp S8 ........................................................................................... 32
Bảng 3.12. Hộp P-box ..................................................................................... 33
Bảng 3.13. Hộp PC-1 ....................................................................................... 35
Bảng 3.14. Hộp PC-2 ....................................................................................... 35


MỞ ĐẦU
1. Lí do chọn đề tài
Hiện nay, nước ta đang trong giai đoạn tiến hành công nghiệp hoá,
hiện đại hoá đất nước. Tin học được xem là một trong những ngành mũi

nhọn. Tin học đã và đang đóng góp rất nhiều cho xã hội trong mọi khía cạnh
của cuộc sống.
Thông tin có một vai trò hết sức quan trọng, bởi vậy chúng ta phải làm
sao đảm bảo được tính trong suốt của thông tin nghĩa là thông tin không bị sai
lệch, bị thay đổi, bị lộ trong quá trình truyền từ nơi gửi đến nơi nhận. Với sự
phát triển rất nhanh của công nghệ mạng máy tính đặc biệt là mạng Internet
thì khối lượng thông tin ngày càng chuyển tải nhiều hơn. Những tập đoàn
công nghiệp, những công ty đa quốc gia, thị trường chứng khoán tiến hành xử
lý và truyền nhận những thông tin đắt giá, những phiên giao dịch hay mua bán
cổ phiếu, trái phiếu đều được tiến hành qua mạng. Giờ đây với sự tăng trưởng
nhanh của các siêu thị điện tử, thương mại điện tử thì hàng ngày có một khối
lượng tiền rất lớn được lưu chuyển trên mạng toàn cầu Internet, vấn đề khó
khăn đặt ra là làm sao giữ được thông tin bí mật và giữ cho tiền đến đúng
được địa chỉ cần đến. Mã hoá thông tin là một trong các phương pháp đảm
bảo được tính trong suốt của thông tin.
Mã hóa thông tin là một ngành quan trọng và có nhiều ứng dụng trong
đời sống xã hội. Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang
được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên Thế
giới như: lĩnh vực an ninh, quân sự, quốc phòng, lĩnh vực dân sự như thương
mại điện tử, ngân hàng…
Với mong muốn tìm hiểu cách bảo mật thông tin, em đã chọn đề tài
“Chuẩn mã dữ liệu DES và xây dựng chương trình ứng dụng” với các chức
năng như lập mã, giải mã.

1


2. Mục đích và nhiệm vụ nghiên cứu
Mục đích nghiên cứu là tìm hiểu chuẩn mã dữ liệu để có thể mã hóa và
giải mã chuỗi văn bản nhằm đảm bảo tính chính xác, an toàn cho dữ liệu được

truyền đi, tránh nguy cơ bị hỏng hóc hay mất mát dữ liệu.
Nhiệm vụ nghiên cứu là tìm hiểu chuẩn mã dữ liệu DES và xây dựng
chương trình ứng dụng.
3. Đối tượng nghiên cứu
- Nghiên cứu các hệ mã hóa cổ điển: Hệ mã hóa thay thế (subtitution
cipher), hệ mã Caesar, hệ mã Affine, hệ mã Vigenere, hệ mã Hill…
- Nghiên cứu về hệ mật mã: Khái niệm hệ mật mã, một số ứng dụng
của hệ mật mã, phân loại các thuật toán của hệ mật mã…
- Nghiên cứu hệ mã chuẩn DES, các thành phần có trong DES: hàm f,
bảng hoán vị IP và hoán vị ngược IP-1, hàm mở rộng E, hộp S - box và P - box.
- Tìm hiểu ngôn ngữ VB.NET.
4. Phạm vi nghiên cứu
Khóa luận tập trung nghiên cứu hệ mã chuẩn DES gồm quy trình mã
hóa và giải mã sử dụng chuẩn DES 16 vòng và ứng dụng của nó trong thực
tế hiện nay.
5. Phương pháp nghiên cứu
- Nghiên cứu qua việc đọc sách, báo và các tài liệu liên quan nhằm xây
dựng cơ sở lý thuyết của đề tài và các biện pháp cần thiết để giải quyết các
vấn đề của đề tài.
- Tham khảo các ý kiến của các chuyên gia để có thể thiết kế chương
trình phù hợp với thực tiễn.
- Thông qua quan sát thực tế, yêu cầu cơ sở của lý luận được nghiên
cứu và các kết quả đạt được qua những phương pháp trên.
6. Ý nghĩa khoa học và thực tiễn của đề tài
Đề tài giới thiệu hướng nghiên cứu và ứng dụng của chuẩn mã dữ liệu
DES vào thực tế hiện nay. Nếu giải quyết được tốt vấn đề bảo mật thông tin
2


sẽ mang lại ý nghĩa hết sức to lớn: làm cho người sử dụng tin tưởng khi thực

hiện các giao dịch trên mạng, các nhà cung cấp dịch vụ giao dịch trực tuyến
đảm bảo được những thông tin của khách hàng giao dịch trên mạng được an
toàn…
Nếu chuẩn mã dữ liệu DES được đưa vào nghiên cứu thì nó sẽ đóng
một vai trò quan trọng trong việc tạo ra các phương pháp mã hóa bảo mật
được phép công khai và thường được sử dụng để mô tả những kỹ thuật phân
tích và giải mã các phương pháp mã hóa mới.
7. Cấu trúc của khóa luận
Ngoài các phần như mở đầu, kết luận… thì nội dung của khóa luận
được chia ra làm 4 chương chính như sau:
Chương 1: Cơ sở lý thuyết
Chương 2: Các hệ mã hóa cổ điển
Chương 3: Hệ mã chuẩn DES
Chương 4: Xây dựng chương trình ứng dụng
8. Kết quả đạt được
Từ mục đích, yêu cầu, nhiệm vụ đề ra ban đầu khóa luận đã đạt được
những kết quả như sau: Tìm hiểu chuẩn mã dữ liệu DES 16 vòng và xây dựng
chương trình ứng dụng chuẩn mã dữ liệu DES với ngôn ngữ lập trình
VB.NET làm được những công việc như lập mã, giải mã với những chuỗi
nhập vào không dấu giúp cho việc bảo mật thông tin được tốt hơn.

3


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Khái niệm cơ bản về cơ sở dữ liệu
Cơ sở dữ liệu (CSDL) là nguồn cung cấp thông tin cho hệ thống thông
tin trên máy tính, trong đó các dữ liệu được lưu trữ một cách có cấu trúc theo
một quy định nào đó nhằm giảm thiểu sự dư thừa và đảm bảo toàn vẹn dữ liệu.
Hệ quản trị cơ sở dữ liệu là các chương trình để có thể xử lý, thay đổi

dữ liệu. Theo nghĩa này, hệ quản trị cơ sở dữ liệu có nhiệm vụ rất quan trọng
như một bộ biên dịch với ngôn ngữ bậc cao nhằm giúp người sử dụng có thể
dùng được hệ thống mà ít nhiều không cần quan tâm đến thuật toán chi tiết
hoặc biểu diễn dữ liệu trong máy tính.
Có 3 mô hình CSDL chính được sử dụng, đó là:
- Mô hình phân cấp: Mô hình dữ liệu là một cây, trong đó các nút biểu
diễn các tập thực thể, giữa các nút con và nút cha được liên hệ theo mối quan
hệ xác định.
- Mô hình mạng: Mô hình được biểu diễn là một đồ thị có hướng. Mô
hình mạng cũng gần giống mô hình cây, đó là một nút cha có thể có nhiều nút
con nhưng khác là một nút con không chỉ có một nút cha mà có thể có nhiều
nút cha. Do vậy việc truy cập thông tin mềm dẻo hơn.
- Mô hình quan hệ: Mô hình này dựa trên cở sở lý thuyết tập hợp của
các quan hệ. Các dữ liệu được chuyển vào bảng hai chiều, mỗi bảng gồm các
hàng và các cột, mỗi hàng xác định một bản ghi, mỗi cột xác định một trường
dữ liệu. Các bản có thể móc nối với nhau để thể hiện các mối quan hệ.
1.2. An toàn bảo mật thông tin
Trải qua nhiều thế kỷ hàng loạt các giao thức (protocol) và các cơ chế
đã được tạo ra để đáp ứng nhu cầu an toàn bảo mật thông tin khi mà nó được
truyền tải trên các phương tiện vật lý.
Thường thì các mục tiêu của an toàn bảo mật thông tin không thể đạt
được nếu chỉ đơn thuần dựa vào các thuật toán toán học và các giao thức, mà
4


để đạt được điều này đòi hỏi cần có các kỹ thuật mang tính thủ tục và sự tôn
trọng các điều luật. Chẳng hạn sự bí mật của các bức thư tay là do sự phân
phát các lá thư đã có đóng dấu bởi một dịch vụ thư tín đã được chấp nhận.
Tính an toàn về mặt vật lý của bức thư là hạn chế nên để đảm bảo sự bí mật
của bức thư pháp luật đã đưa ra quy định: việc xem thư mà không được sự

đồng ý của chủ nhân hoặc những người có thẩm quyền là phạm pháp và sẽ bị
trừng phạt. Đôi khi mục đích của an toàn bảo mật thông tin lại đạt được nhờ
chính phương tiện vật lý mang chúng, chẳng hạn như tiền giấy đòi hỏi phải
được in bằng loại mực và giấy tốt để không bị làm giả.
Về mặt ý tưởng việc lưu giữ thông tin là không có nhiều thay đổi đáng
kể qua thời gian. Ngày xưa thông tin thường được lưu và vận chuyển trên
giấy tờ, trong khi giờ đây chúng được lưu dưới dạng số hoá và được vận
chuyển bằng các hệ thống viễn thông hoặc các hệ thống không dây. Tuy nhiên
sự có thay đổi đáng kể đến ở đây chính là khả năng sao chép và thay đổi
thông tin. Người ta có thể tạo ra hàng ngàn mẫu tin giống nhau và không thể
phân biệt được nó với bản gốc. Với các tài liệu lưu trữ và vận chuyển trên
giấy điều này khó khăn hơn nhiều. Và điều cần thiết đối với một xã hội mà
thông tin hầu hết được lưu trữ và vận chuyển trên các phương tiện điện tử
chính là các phương tiện đảm bảo an toàn bảo mật thông tin độc lập với các
phương tiện lưu trữ và vận chuyển vật lý của nó. Phương tiện đó chính là mật
mã học, một ngành khoa học có lịch sử lâu đời dựa trên nền tảng các thuật
toán toán học, số học, xác suất và các môn khoa học khác.
 Có 3 hình thức chủ yếu đe doạ đối với hệ thống:
- Phá hoại: kẻ thù phá hỏng thiết bị phần cứng hoặc phần mềm hoạt
động trên hệ thống.
- Sửa đổi: tài sản của hệ thống bị sửa đổi trái phép. Điều này thường làm
cho hệ thống không làm đúng chức năng của nó. Chẳng hạn như thay đổi mật
khẩu, quyền người dùng trong hệ thống làm họ không thể truy cập vào hệ thống.

5


- Can thiệp: tài sản bị truy cập bởi những người không có thẩm quyền.
Các truyền thông thực hiện trên hệ thống bị ngăn chặn, sửa đổi.
 Các biện pháp ngăn chặn:

Thường có 3 biện pháp ngăn chặn:
- Điều khiển thông qua phần mềm: dựa vào các cơ chế an toàn bảo mật
của hệ thống nền (hệ điều hành), các thuật toán mật mã học.
- Điều khiển thông qua phần cứng: các cơ chế bảo mật, các thuật toán
mật mã học được cứng hoá để sử dụng.
- Điều khiển thông qua các chính sách của tổ chức: ban hành các quy
định của tổ chức nhằm đảm bảo tính an toàn bảo mật của hệ thống.
1.3. Mục tiêu và nguyên tắc chung của an toàn bảo mật thông tin
 Có 3 mục tiêu của an toàn bảo mật thông tin:
+ Tính bí mật: tài sản của hệ thống chỉ được truy cập bởi những người
có thẩm quyền. Các loại truy cập gồm có: đọc, xem, in ấn sử dụng chương
trình hoặc hiểu biết về sự tồn tại của một đối tượng trong tổ chức. Tính bí mật
có thể được bảo vệ nhờ việc kiểm soát truy cập (theo nhiều kiểu khác nhau)
hoặc nhờ các thuật toán mã hoá dữ liệu. Kiểm soát truy cập chỉ có thể được
thực hiện với các hệ thống phần cứng vật lý. Còn đối với các dữ liệu công
cộng thì thường phương pháp hiệu quả là các phương pháp của mật mã học.
+ Tính toàn vẹn dữ liệu: tài sản của hệ thống chỉ được thay đổi bởi
những người có thẩm quyền.
+ Tính sẵn dùng: tài sản luôn sẵn sàng được sử dụng bởi những người
có thẩm quyền.
 Có 2 nguyên tắc:
- Việc thẩm định về bảo mật phải là khó và cần tính tới tất cả các tình
huống khả năng tấn công có thể được thực hiện.
- Tài sản được bảo vệ cho tới khi hết giá trị sử dụng hoặc hết ý nghĩa
bí mật.

6


1.4. Giới thiệu về SQL Server và Visual Basic.NET

1.4.1. SQL Server
a) Giới thiệu chung về SQL Server
 SQL là ngôn ngữ của cơ sở dữ liệu quan hệ
SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc),
là công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu được lưu trữ trong
các cơ sở dữ liệu. SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử
dụng để tương tác với cơ sở dữ liệu quan hệ.
SQL được sử dụng để điều khiển tất cả các chức năng mà một hệ quản
trị cơ sở dữ liệu cung cấp cho người dùng bao gồm:
Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ
liệu, các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các
thành phần dữ liệu.
Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng
thực hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các
cơ sở dữ liệu.
Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm
soát các thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ
sở dữ liệu.
Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn
trong cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước
các thao tác cập nhật cũng như các lỗi của hệ thống.
 Vai trò của SQL
Bản thân SQL không phải là một hệ quản trị cơ sở dữ liệu, nó không
thể tồn tại độc lập. SQL thực sự là một phần của hệ quản trị cơ sở dữ liệu, nó
xuất hiện trong các hệ quản trị cơ sở dữ liệu với vai trò ngôn ngữ và là công
cụ giao tiếp giữa người sử dụng và hệ quản trị cơ sở dữ liệu. Trong hầu hết
các hệ quản trị cơ sở dữ liệu quan hệ, SQL có những vai trò như sau:

7



SQL là ngôn ngữ hỏi có tính tương tác: Người sử dụng có thể dễ dàng
thông qua các trình tiện ích để gửi các yêu cầu dưới dạng các câu lệnh SQL
đến cơ sở dữ liệu và nhận kết quả trả về từ cơ sở dữ liệu.
SQL là ngôn ngữ lập trình cơ sở dữ liệu: Các lập trình viên có thể
nhúng các câu lệnh SQL vào trong các ngôn ngữ lập trình để xây dựng nên
các chương trình ứng dụng giao tiếp với cơ sở dữ liệu SQL là ngôn ngữ quản
trị cơ sở dữ liệu: Thông qua SQL, người quản trị cơ sở dữ liệu có thể quản lý
được cơ sở dữ liệu, định nghĩa các cấu trúc lưu trữ dữ liệu, điều khiển truy
cập cơ sở dữ liệu...
SQL là ngôn ngữ cho các hệ thống khách/chủ (client/server): Trong các
hệ thống cơ sở dữ liệu khách/chủ, SQL được sử dụng như là công cụ để giao
tiếp giữa các trình ứng dụng phía máy khách với máy chủ cơ sở dữ liệu.
SQL là ngôn ngữ truy cập dữ liệu trên Internet: Cho đến nay, hầu hết
các máy chủ Web cũng như các máy chủ trên Internet sử dụng SQL với vai
trò là ngôn ngữ để tương tác với dữ liệu trong các cơ sở dữ liệu.
SQL là ngôn ngữ cơ sở dữ liệu phân tán: Đối với các hệ quản trị cơ sở
dữ liệu phân tán, mỗi một hệ thống sử dụng SQL để giao tiếp với các hệ thống
khác trên mạng, gửi và nhận các yêu cầu truy xuất dữ liệu với nhau.
SQL là ngôn ngữ sử dụng cho các cổng giao tiếp cơ sở dữ liệu: Trong
một hệ thống mạng máy tính với nhiều hệ quản trị cơ sở dữ liệu khác nhau.
b) Các kiểu dữ liệu trong SQL Server
Kiểu dữ liệu
Bigint

Bytes
8

Char


Dữ liệu số nguyên có giá trị từ -263 đến 263 - 1
Dữ liệu nhị phân có chiều dài cố định, tối đa 8000

Binary
Bit

Diễn giải

bytes
1

Dữ liệu bít có giá trị 0 (False) hay 1 (True)
Dữ liệu ký tự Non-Unicode chiều dài cố định, tối
đa 8000 ký tự

8


DateTime

8

Dữ liệu ngày tháng, có giá trị từ 01/01/1753 đến
31/12/9999

Decimal

Số từ -1038 - 1 đến 1038 - 1

Float


Số từ -1.79E + 308 đến -1.79E + 308
Dữ liệu nhị phân có chiều dài biến đổi, tối đa 232 -

Image

1 bytes

Int

4

Dữ liệu số nguyên có giá trị từ -232 đến 232 - 1

Money

8

Kiểu dữ liệu tiền tệ, có giá trị từ -263 đến 263

Nchar

Ntext
Numeric
Nvarchar

Nvarchar(MAX)

Dữ liệu ký tự Unicode chiều dài cố định, tối đa
4000 ký tự

Dữ liệu ký tự Unicode chiều dài biến đổi, tối đa
1,073,741,823 ký tự
Tương tự Decimal nhưng chỉ dùng trong SQL
Dữ liệu ký tự Unicode chiều dài biến đổi, tối đa
4000 ký tự
Dữ liệu ký tự Unicode chiều dài biến đổi > 4000
ký tự
Số từ -1.18E - 38 đến 0 và 1.18E - 38 đến 3.40E

Real

+ 38

1.4.2. Microsoft.NET và Visual Basic.NET
a) Microsoft.NET
 Tổng quan
Microsoft.NET gồm 2 phần chính:
Framework và Integrated Development Environment (IDE). Framework
cung cấp những gì cần thiết và căn bản, chữ Framework có nghĩa là khung hay
khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định
để công việc được trôi chảy. IDE thì cung cấp một môi trường giúp chúng ta

9


triển khai dễ dàng và nhanh chóng các ứng dụng dựa trên nền tảng .NET. Nếu
không có IDE chúng ta cũng có thể dùng một trình soạn thảo như Notepad hay
bất cứ trình soạn thảo văn bản nào và sử dụng command line để biên dịch và
thực thi, tuy nhiên việc này mất nhiều thời gian.
Thành phần Framework là quan trọng nhất, .NET là cốt lõi và tinh hoa

của môi trường, còn IDE chỉ là công cụ để phát triển dựa trên nền tảng đó thôi.
Trong .NET toàn bộ các ngôn ngữ C#, Visual C++ hay Visual Basic .NET đều
dùng cùng một IDE.
 Kiến trúc .NET Framework
.NET Framework là một platform mới làm đơn giản việc phát triển ứng
dụng trong môi trường phân tán của Internet. .NET Framework được thiết kế
đầy đủ để đáp ứng theo quan điểm sau:
- Để cung cấp một môi trường lập trình hướng đối tượng vững chắc,
trong đó mã nguồn đối tượng được lưu trữ và thực thi một cách cục bộ. Thực
thi cục bộ nhưng được phân tán trên Internet hoặc thực thi từ xa.
- Để cung cấp một môi trường thực thi mã nguồn mà tối thiểu được
việc đóng gói phần mềm và sự tranh chấp về phiên bản.
- Để cung cấp một môi trường thực thi mã nguồn mà đảm bảo việc thực
thi an toàn mã nguồn, bao gồm cả việc mã nguồn được tạo bởi hãng thứ ba
hay bất cứ hãng nào mà tuân thủ theo kiến trúc .NET.
- Để làm cho những người phát triển có kinh nghiệm vững chắc có thể
nắm vững nhiều kiểu ứng dụng khác nhau. Như là từ những ứng dụng trên
nền Windows đến những ứng dụng dựa trên web.
b) Ngôn ngữ Visual Basic.Net
 Sơ lược về Visual Basic.Net
Visual Basic.NET (VB.NET) là ngôn ngữ lập trình khuynh hướng đối
tượng (Object Oriented Programming Language) do Microsoft thiết kế lại từ
con số không. Visual Basic.NET (VB.NET) không kế thừa VB6 hay bổ sung,
phát triển từ VB6 mà là một ngôn ngữ lập trình hoàn toàn mới trên nền
10


Microsoft’s.NET Framework. Do đó, nó cũng không phải là VB phiên bản 7.
Thật sự, đây là ngôn ngữ lập trình mới và rất lợi hại, không những lập nền tảng
vững chắc theo kiểu mẫu đối tượng như các ngôn ngữ lập trình hùng mạnh

khác đã vang danh C++, Java mà còn dễ học, dễ phát triển và còn tạo mọi cơ
hội hoàn hảo để giúp ta giải đáp những vấn đề khúc mắc khi lập trình.
 Mở và chạy một chương trình Visual Basic.NET
+) Khởi động visual studio.NET:
Việc khởi động vs.NET cũng tương tự như các phần mềm khác như
ms.Word hay Excel. Nếu lần đầu khởi động vs.NET sẽ yêu cầu xem bạn chạy
nó với ưu tiên ứng dụng và ngôn ngữ nào. Bạn chọn Visual Basic và start
vs.net là xong.
Nếu trang start page không hiện, bạn có thể làm nó xuất hiện bằng cách
chọn menu View | Other Windows | Start Page.
Các công cụ của VS.NET
Công cụ trong vs.NET rất phong phú. Bạn có thể khám phá từ từ. Sau
đây là mô phỏng màn hình làm việc của bộ vs.NET:

11


Hiển thị bộ thiết kế Form
Góc phải màn hình là cửa sổ Solution Explorer. Hiển thị nó View
Solution Explorer.
Double Click vào MusicTrivia.vb trong cửa sổ Solution Explorer bạn
sẽ thấy tất cả các file chứa form.
Nhắp chuột vào biểu tượng View Designer

trong solution để hiển

thị form thiết kế ở dạng trực quan.
+) Chạy một chương trình Visual Basic
- Nhắp chuột vào nút start màu xanh


trên standard bar để chạy

chương trình (bạn cũng có thể ấn phím F5).
- Ấn thử nút Answer và Quit thử xem.
+) Cửa sổ thuộc tính Properties
Cho phép thay đổi thông số của đối tượng thiết kế form sau này.
Bạn thử mở giao diện chương trình MusicTrivia và click vào một phần
tử bất kỳ rồi thay đổi thử các thuộc tính của chúng xem sao.
+) Xem trợ giúp
Bạn có thể xem trợ giúp trực tuyến hay cài bộ MSDN để xem trợ giúp.
Có nhiều cách xem trợ giúp khác nhau.
+) Thoát khỏi VISUAL STUDIO.NET
- Lưu lại những gì chúng ta làm bằng cách chọn File | Save all.
- Chọn File | Exit để thoát khỏi vs.NET.

12


CHƯƠNG 2: CÁC HỆ MÃ HÓA CỔ ĐIỂN
2.1. Giới thiệu về hệ mật mã
2.1.1. Khái niệm hệ mật mã
 Định nghĩa 2.1: Một hệ mật mã là một bộ năm (P, C, K, E, D) thoả
mãn các điều kiện sau:
1. P là không gian bản rõ, tập hợp tất cả các mẩu tin nguồn cần mã hoá
có thể có.
2. C là không gian bản mã, tập hợp hữu hạn tất cả các mẩu tin có thể có
sau khi mã hoá.
3. K là không gian khoá, tập hợp hữu hạn các khoá có thể được sử dụng.
4. Với mỗi khoá k Î K, có một quy tắc mã hoá ek Î K và một quy tắc
giải mã tương ứng dk Î D. Với mỗi ek: P→C và dk: C → Plà những hàm mà

dk(ek(x)) = x cho mọi bản rõ x Î P. Hàm giải mã dk chính là ánh xạ ngược của
hàm mã hoá ek[5].
Thường thì không gian các bản rõ và không gian các bản mã là các văn
bản được tạo thành từ một bộ chữ cái A nào đó. Đó có thể là bộ chữ cái tiếng
Anh, bộ mã ASCII, bộ mã Unicode hoặc đơn giản là các bit 0 và 1.
Tính chất 4 là tính chất quan trọng nhất của mã hoá. Nội dung của nó
nói rằng nếu mã hoá bằng ek và bản mã nhận được sau đó được giải mã bằng
hàm dk thì kết quả nhận được phải là bản rõ ban đầu x. Rõ ràng trong trường
hợp này, hàm ek(x) phải là một đơn ánh, nếu không thì ta sẽ không giải mã
được. Vì nếu tồn tại x1 và x2 sao cho y = ek(x1) = ek(x2) thì khi nhận ra được
bản mã y ta không biết nó được mã từ x1 hay x2.
 Định nghĩa 2.2: Zm được định nghĩa là tập hợp {0, 1 … m - 1}, được
trang bị phép cộng (ký hiệu +) và phép nhân (ký hiệu x). Phép cộng và phép
nhân trong Zm được thực hiện tương tự trong Z, ngoại trừ kết quả tính theo
module m.

13


Ví dụ 2.1: Giả sử ta cần tính giá trị 11 x 13 trong Z16. Trong Z, ta có kết
quả của phép nhân 11 x 13. Do 143 = 15 (mod16) nên 11 x 13 = 15 trong Z16.
Một số tính chất của Zm:
1. Phép cộng đóng trong Zm, i.e., a, b Î Zm, a + b Î Zm.
2. Tính giao hoán của phép cộng trong Zm, i.e., a, bÎ Zm, a + b = b + a.
3. Tính kết hợp của phép cộng trong Zm, i.e.,  a, b, c Î Zm,
(a + b) + c = a + (b + c).
4. Zm có phần tử trung hoà là 0, i.e., a Î Zm, a + 0 = 0 + a = a.
5. Mọi phần tử a trong Zm, i.e., a, b Î Zm, a x b Î Zm.
6. Phép nhân đóng trong Zm, i.e., a, b Î Zm, a x b Î Zm.
7. Tính giao hoán của phép cộng trong Zm, i.e., a, b Î Zm, a x b = b x a.

8. Tính kết hợp của phép cộng trong Zm, i.e., a, b, c Î Zm,
(a x b) x c = a x (b x c)
9. Zm có phần tử đơn vị là 1, i.e., a Î Zm, ax 1 = 1xa = a.
10. Tính phân phối của phép nhân đối với phép cộng, i.e., a, b, c Î Zm,
(a + b)x c = (axc) + (bxc).
11. Zm có các tính chất 1, 3 - 5 nên tạo thành 1 nhóm. Do Zm có tính chất 2
nên tạo thành nhóm Abel. Zm có tính chất 1 - 10 nên tạo thành 1 vành.
2.1.2. Một số ứng dụng của mật mã học
Ngày nay các ứng dụng trên máy tính đều sử dụng các thuật toán và các
giao thức mật mã học. Từ các ứng dụng cho các máy tính cá nhân (Desktop
Applications) cho tới các chương trình hệ thống như các hệ điều hành hoặc các
ứng dụng mạng như Yahoo Messenger hoặc các hệ cơ sở dữ liệu đều có thể sử
dụng các thuật toán mã hoá mật khẩu người dùng bằng một hệ mã hoặc một
hàm băm nào đó.
Đặc biệt với sự phát triển mạnh mẽ của thương mại điện tử các mô hình
chữ ký điện tử ngày càng đóng vai trò tích cực cho một môi trường an toàn

14


cho người dùng. Tuy vậy chúng ta vẫn có thể chia các lĩnh vực ứng dụng của
mật mã học thành các lĩnh vực nhỏ như sau:
- Bảo mật (Confidentiality): che dấu nội dung của các thông điệp được
trao đổi trong một phiên truyền thông hoặc giao dịch hoặc các thông điệp trên
một hệ thống máy tính (các file, các dữ liệu trong một cơ sở dữ liệu…).
- Xác thực hoá (Authentication): đảm bảo nguồn gốc của một thông
điệp, người dùng.
- Toàn vẹn: đảm bảo chỉ có các tổ chức đã được xác thực hoá mới có thể
thay đổi các tài sản của hệ thống cũng như các thông tin trên đường truyền.
- Dịch vụ không thể chối từ: các bên đã được xác thực không thể phủ

nhận việc tham gia vào một giao dịch hợp lệ.
- Ngoài ra còn có các dịch vụ quan trọng khác như: chữ ký điện tử, dịch
vụ chứng thực danh tính cho phép thay thế hình thức xác thực hoá người dùng
dựa trên các mật khẩu bằng các kỹ thuật mạnh hơn hoặc dịch vụ thương mại
điện tử cho phép tiến hành các giao dịch an toàn trên các kênh truyền thông
không an toàn như Internet.
2.1.3. Phân loại các thuật toán của hệ mật mã
Phân loại các thuật toán mật mã học dựa vào hai tiêu chí:
 Tiêu chí thứ nhất: dựa vào các dịch vụ an toàn bảo mật mà các thuật
toán cung cấp, dựa vào số lượng khoá sử dụng (0, 1, 2), chúng ta có các thuật
toán mã hoá sau:
1. Các thuật toán mã hoá bí mật tương ứng với các hệ mã mật khoá bí
mật hay khoá đối xứng SKC (Symmetric Key Crytosystem), do vai trò của
người nhận và người gửi là như nhau, cả hai đều có thể mã hoá và giải mã
thông điệp, như Caesar, DES, AES… Khoá sử dụng cho các thuật toán này là
một khoá cho cả việc mã hoá và giải mã.
2. Các thuật toán mã hoá công khai tương ứng với các hệ mã khoá công
khai PKC (Public Key Crytosystems). Đôi khi các hệ mã này còn được gọi là

15


các hệ mã khoá bất đối xứng (Asymmetric Key Crytosystems). Khoá sử dụng
cho các thuật toán này là 2 khoá, một cho việc mã hoá và một cho việc giải
mã, khoá mã hoá được công khai hoá.
3. Các kỹ thuật tạo chữ ký điện tử (Digital Signature Algorithms). Các
thuật toán tạo chữ ký điện tử tạo thành các hệ chữ ký điện tử. Thông thường
mỗi hệ chữ ký điện tử có cùng cơ sở lý thuyết với một hệ mã mật khoá công
khai nhưng trong các áp dụng khác nhau.
4. Các hàm băm (Hash function). Các hàm băm là các thuật toán mã

hoá không khoá hoặc có khoá và thường được sử dụng trong các hệ chữ ký
điện tử hoặc các hệ mã khoá công khai.
 Tiêu chí thứ hai: phân loại các thuật toán mã hoá dựa trên cách thức
xử lý input của thuật toán (tức là bản rõ), dựa trên tiêu chí này chúng ta có hai
loại thuật toán mã hoá sau:
1. Các thuật toán mã hoá khối (chẳng hạn như DES, AES…) xử lý bản
rõ dưới các đơn vị cơ bản là các khối có kích thước giống nhau.
2. Các thuật toán mã hoá dòng (RC4…) coi bản rõ là một luồng bit, byte
liên tục.
2.2. Các hệ mã thông dụng
2.2.1. Hệ mã hoá thay thế (subtitution cipher)
Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tự của bản rõ được
thay thế bằng ký tự khác trong bản mã (có thể là một chữ cái, một số hoặc
một ký hiệu).
Có 4 kỹ thuật thay thế sau đây:
1. Thay thế đơn (A simple substitution cipher): là hệ trong đó một ký tự
của bản rõ được thay thế bằng một ký tự tương ứng trong bản mã. Một ánh xạ
1 - 1 từ bản rõ tới bản mã được sử dụng để mã hoá toàn bộ thông điệp.
2. Thay thế đồng âm (A homophonic substitution cipher): giống như hệ
thống mã hoá thay thế đơn, ngoại trừ một ký tự của bản rõ có thể được ánh xạ

16


tới một trong số một vài ký tự của bản mã: sơ đồ ánh xạ 1 - n. Ví dụ, “A” có
thể tương ứng với 7, 19, 31, 42…
3. Thay thế đa mẫu tự (A polyalphbetic substitution cipher): được tạo
nên từ nhiều thuật toán mã hoá thay thế đơn. Ánh xạ 1 - 1 như trong trường
hợp thay thế đơn, nhưng có thể thay đổi trong phạm vi một thông điệp. Ví dụ,
có thể có năm thuật toán mã hoá đơn khác nhau được sử dụng. Đặc biệt thuật

toán mã hoá đơn được sử dụng thay đổi theo vị trí của mỗi ký tự trong bản rõ.
4. Thay thế đa sơ đồ (A pologram substitution cipher): là thuật toán
trong đó các khối ký tự được mã hoá theo nhóm. Đây là thuật toán tổng quát
nhất, cho phép thay thế các nhóm ký tự của văn bản gốc. Ví dụ, “ABA” có thể
tương ứng với “RTQ”, “ABB” có thể tương ứng với “SLL”…
2.2.2. Hệ mã Caesar
Hệ mã Caesar là một hệ mã hoá thay thế đơn âm làm việc trên bảng chữ
cái tiếng Anh 26 ký tự (A, B … Z). Đây là hệ mã cổ điển và đơn giản nhất đã
từng được dùng trong thực tế bởi hoàng đế La mã Caesar nên được đặt theo
tên của vị hoàng đế này.
Không gian các bản rõ P là các thông điệp được tạo từ bảng chữ cái A.
Tương tự không gian các bản mã C≡ P. Giả sử số phần tử của bảng chữ cái
|A|= N.
Để mã hoá người ta đánh số các chữ cái từ 0 tới N - 1. Không gian khoá
K = ZN. Với mỗi khoá K Î K hàm mã hoá và giải mã một ký tự có số thứ tự là
i sẽ được thực hiện như sau:
Mã hoá: EK(i) = (i + k) mod N.
Giải mã: DK(i) = (i - k) mod N.
Hệ mã Caesar với bảng chữ cái tiếng Anh sẽ có N = 26 chữ cái, bảng
chữ cái được đánh số như sau:

17


A

B

C


D

E

F

G

H

I

J

K

L

M

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

13

14

15

16

17

18

19

20

21


22

23

24

25

Bảng 2.1. Bảng đánh số các chữ cái tiếng Anh
Các phép tính toán số học được thực hiện trên vành Z26, số khoá có thể
sử dụng là 26 nhưng trên thực tế chỉ có 25 khoá có ích.
Ví dụ 2.2: với k = 3, ký tự A được thay bằng D, B được thay bằng E …
W được thay bằng Z … Y được thay bằng B, Z được thay bằng C.
A B C D E F G H I K L M N O P Q R S T U V W X Y Z
Bảng chữ cái dùng để mã hoá:
D E F G H I K L M N O P Q R S T U V W X Y Z A B C
Do đó chẳng hạn xâu “ANGLES” sẽ được mã hoá thành “DQJOHV”.
Hệ mã Caesar sử dụng phương pháp thay thế đơn âm nên có hiện tượng
gọi là phụ thuộc tần suất xuất hiện của ngôn ngữ tự nhiên. Trong ngôn ngữ tự
nhiên một số chữ cái xuất hiện nhiều hơn so với các chữ cái khác (chẳng hạn
trong tiếng Anh các chữ cái xuất hiện nhiều là e, t, i, h…) nên các chữ cái dùng
để thay thế chúng cũng xuất hiện nhiều. Điều này có thể dẫn tới hệ quả là
người thám mã có thể sử dụng phương pháp thử thay thế các ký tự xuất hiện
nhiều trong bản mã bằng các ký tự xuất hiện nhiều trên các văn bản thực tế.
2.2.3. Hệ mã Affine
Không gian các bản rõ và bản mã của hệ mã là các xâu được hình thành
từ một bảng chữ cái A, giả sử |A|= N. Khi đó không gian khoá của hệ mã
được xác định như sau:
K ={(a, b): a, b Î ZN, (a, N) = 1}


18


Để mã hoá người ta đánh số các chữ cái của bảng chữ cái từ 0 tới N - 1
và tiến hành mã hoá, giải mã từng ký tự (thay thế) theo công thức sau:
Mã hoá: EK(x) = (a*x + b) mod N. Ký tự bản rõ có số thứ tự là x sẽ
được chuyển thành ký tự có số thứ tự là (a*x + b) mod N trong bảng chữ cái.
Để giải mã ta cần tìm a-1 (do (a, N) = 1 nên luôn tìm được) và tiến hành
công thức giải mã sau:
Dk(y) = a*(y - b) mod N. Ký tự bản mã có số thứ tự là y sẽ thay thế
bằng ký tự có số thứ tự là a*(y - b) mod N trong bảng chữ cái.
2.2.4. Hệ mã Vigenere
Hệ mã này được đặt theo tên của một nhà mật mã học người Pháp
Blaise de Vigenere (1523 - 1596).
Đối với hệ mã này không gian các bản mã và bản rõ cũng là các thông
điệp được tạo thành từ một bảng chữ cái A như trong hệ mã Ceasar, các chữ
cái được đánh số từ 0 tới N - 1, trong đó N là số phần tử của bảng chữ cái.
Không gian khoá K được xác định như sau:
+ Với mỗi số nguyên dương M, khoá có độ dài M là một xâu ký tự có
độ dài M, K = k1k2 … kM.
+ Để mã hoá một bản rõ P người ta chia P thành các đoạn độ dài M và
chuyển thành số thứ tự tương ứng của chúng trong bảng chữ cái, chẳng hạn X
= x1x2 … xM. Khi đó việc mã hoá và giải mã được thực hiện như sau :
Ek(X) = (x1 + k1, x2 + k2 … xM + kM) mod N
Dk(Y) = (y1 - k1, y2 - k2 … yM - kM) mod N với N là số phần tử của bảng
chữ cái và Y = y1 y2 … yM là bản mã.
Ví dụ 2.3: Xét A là bảng chữ cái tiếng Anh, ta có N = 26. Giả sử khoá
có độ dài 6 và K= “CIPHER”, bản rõ P= “THIS CRYTOSYSTEM IS NOT
SECURE”. Ta có K = 2 8 15 7 4 17, P = 19 7 8 18 2 17 | 24 15 19 14 18 23 |
18 19 4 12 8 18 | 13 14 19 18 4 2 | 20 17 4.

Quá trình mã hoá thực hiện như sau:

19


×