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ự
Trang 1LỜ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ệ
Trang 2LỜ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ệ
Trang 3MỤ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
Trang 43.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
Trang 5DANH 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
Trang 6DANH 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
Trang 7MỞ ĐẦ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ã
Trang 82 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
Trang 9sẽ 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
Trang 10CHƯƠ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à
Trang 11để đạ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
Trang 12- 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
Trang 131.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:
Trang 14SQL 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 Bytes Diễn giải
Bigint 8 Dữ liệu số nguyên có giá trị từ -263 đến 263 - 1
Binary Dữ liệu nhị phân có chiều dài cố định, tối đa 8000
bytes Bit 1 Dữ liệu bít có giá trị 0 (False) hay 1 (True)
Char Dữ liệu ký tự Non-Unicode chiều dài cố định, tối
đa 8000 ký tự
Trang 15DateTime 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
Image Dữ liệu nhị phân có chiều dài biến đổi, tối đa 2
32
-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 Dữ liệu ký tự Unicode chiều dài cố định, tối đa
4000 ký tự
Ntext Dữ liệu ký tự Unicode chiều dài biến đổi, tối đa
1,073,741,823 ký tự Numeric Tương tự Decimal nhưng chỉ dùng trong SQL
Nvarchar Dữ liệu ký tự Unicode chiều dài biến đổi, tối đa
để 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
Trang 16triể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
Trang 17Microsoft’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:
Trang 18Hiể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
Trang 19CHƯƠ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 → P là 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
Trang 20Ví 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, a x 1 = 1 x a = 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 = (a x c) + (b x c)
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
Trang 21cho 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à
Trang 22cá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ạ
Trang 23tớ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á
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:
Trang 24A 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:
Trang 25Để 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
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ó
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:
Trang 26Về bản chất hệ mã này là kết hợp của nhiều mã Caesar, trong hệ Caesar
ta thay thế từng ký tự đơn lẻ thì trong hệ mã Vigenere này thay thế từng bộ M
ký tự liên tiếp Với mỗi M chúng ta có số khoá có thể sử dụng là NM, cụ thể với bảng chữ cái tiếng Anh sẽ có 26M khoá có thể sử dụng
2.2.5 Hệ mã Hill
Hệ mã hoá này dựa trên lý thuyết về đại số tuyến tính do Lester S.Hill đưa ra năm 1929 Cả không gian bản rõ và bản mã đều là các câu được thành lâp từ một bảng chữ cái A như trong hệ mã Vigenere
Với mỗi số nguyên M khoá của hệ mã là một ma trận K vuông kích thước MxM gồm các phần tử là các số nguyên thuộc ZN, trong đó N là số phần tử của bảng chữ cái Điều kiện để ma trận K có thể sử dụng làm khoá của hệ mã là K phải là một ma trận không suy biến trên ZN hay nói cách khác
là tồn tại ma trận nghịch đảo của ma trận trên ZN
Các ký tự của bảng chữ cái cũng được đánh số từ 0 tới N - 1
Để mã hoá một bản rõ người ta cũng chia bản rõ đó thành các xâu có độ dài M, chuyển các xâu này thành số thứ tự của các chữ cái trong bảng chữ cái dưới dạng một vecto hàng M chiều và tiến hành mã hoá, giải mã theo công thức sau: Mã hoá: C = P*K
Giải mã: P = C*K-1
Ví dụ 2.4: Cho hệ mã Hill có M = 2 (khoá là các ma trận vuông cấp 2)
và bảng chữ cái là bảng chữ cái tiếng Anh, tức là N = 26