1. Trang chủ
  2. » Luận Văn - Báo Cáo

Sơ đồ chia sẽ chữ kí bí mật trong hệ mật mã và ứng dụng cho bài toán bỏ phiếu điện tử

83 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 2,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 2: “Hệ mật mã công khai và sơ đồ chia sẻ chữ kí bí mật” Từ những bài toán, vấn đề đã đặt ra trong phần mở đầu và chương 1, chương 2 trình bày tổng quan về hệ mật mã khóa công kha

Trang 1

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &TRUYỀN THÔNG

PHẠM AN HƯNG

SƠ ĐỒ CHIA SẺ CHỮ KÍ BÍ MẬT TRONG HỆ MẬT MÃ VÀ ỨNG DỤNG

CHO BÀI TOÁN BỎ PHIẾU ĐIỆN TỬ

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

THÁI NGUYÊN - 2016

Trang 2

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

PHẠM AN HƯNG

SƠ ĐỒ CHIA SẺ CHỮ KÍ BÍ MẬT TRONG HỆ MẬT MÃ VÀ ỨNG DỤNG

CHO BÀI TOÁN BỎ PHIẾU ĐIỆN TỬ

Chuyên ngành: KHOA HỌC MÁY TÍNH

Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS VŨ VINH QUANG

THÁI NGUYÊN - 2016

Trang 3

LỜI CAM ĐOAN

Tên tôi là: Phạm An Hưng

Sinh ngày: 14/10/1979

Học viên lớp cao học CK13A - Trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên

Hiện đang công tác tại: Trường THPT Hoàng Văn Thụ - Lục Yên - Yên Bái

Xin cam đoan: Đề tài “Sơ đồ chia sẻ chữ kí bí mật trong hệ mật mã và

ứng dụng cho bài toán bỏ phiếu điện tử” do Thầy giáo, NGƯT - TS Vũ Vinh

Quang hướng dẫn là công trình nghiên cứu của riêng tôi Tất cả tài liệu tham khảo đều có nguồn gốc, xuất xứ rõ ràng

Tác giả xin cam đoan tất cả những nội dung trong luận văn đúng như nội dung trong đề cương và yêu cầu của thầy giáo hướng dẫn Nếu sai tôi hoàn toàn chịu trách nhiệm trước hội đồng khoa học và trước pháp luật

Thái Nguyên, ngày 15 tháng 5 năm 2016

TÁC GIẢ LUẬN VĂN

Phạm An Hưng

Trang 4

MỤC LỤC

LỜI CAM ĐOAN i

MỤC LỤC ii

DANH MỤC HÌNH VẼ v

MỞ ĐẦU 1

Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ AN TOÀN THÔNG TIN 3

1.1 Tổng quan về an toàn và bảo mật thông tin 3

1.1.1 An toàn và bảo mật thông tin 3

1.1.2 Các chiến lược an toàn hệ thống 5

1.1.3 Các mức bảo vệ trên mạng 6

1.1.4 An toàn thông tin bằng mật mã 9

1.1.5 Vai trò của hệ mật mã 9

1.1.6 Phân loại hệ mật mã 10

1.1.7 Tiêu chuẩn đánh giá hệ mật mã 11

1.2 Cơ sở toán học của hệ mật mã 12

1.2.1 Ước số - Bội số 12

1.2.2 Số nguyên tố 12

1.3 Mã hóa 16

1.3.1 Mã hóa dữ liệu 16

1.3.2 Ưu khuyết điểm của hai phương pháp 20

1.3.3 Chữ ký số 21

Chương 2 HỆ MẬT MÃ KHÓA CÔNG KHAI VÀ SƠ ĐỒ CHIA SẺ BÍ MẬT 24

2.1 Khái niệm chung 24

2.2 Một số hệ mã công khai thông dụng 25

2.2.1 Hệ mã RSA (R.Rivest, A.Shamir, L.Adleman) 25

2.2.2 Hệ mã Rabin 29

2.2.3 Hệ mã Elgamal 31

2.2.4 Hệ mã MHK (Merkle -Hellman Knapsack) 33

Trang 5

2.2.5 Hệ mật mã McEliece 34

2.3 Một số vấn đề về chia sẻ khóa bí mật 36

2.3.1 Kỹ thuật Chia sẻ khóa bí mật (Secret Sharing) 36

2.3.2 Các sơ đồ chia sẻ bí mật 37

Chương 3 ỨNG DỤNG CHIA SẺ KHÓA BÍ MẬT TRONG BÀI TOÁN BỎ PHIẾU ĐIỆN TỬ 43

3.1 Một số bài toán về an toàn thông tin trong “Bỏ phiếu điện tử” 43

3.1.1 Bài toán xác thực cử tri 43

3.1.2 Bài toán ẩn danh lá phiếu 44

3.1.3 Bài toán phòng tránh sự liên kết giữa thành viên ban bầu cử và cử tri 45

3.2 Giải quyết bài toán chia sẻ khóa kí phiếu bầu cử 46

3.2.1 Chia sẻ khóa 46

3.2.2 Khôi phục khóa 46

3.3 Giải quyết bài toán chia sẻ nội dung phiếu bầu cử 47

3.4 Tổ chức hệ thống bỏ phiếu từ xa 48

3.4.1 Mô hình tổng thể của hệ thống bầu cử điện tử 48

3.4.2 Các thành phần trong ban tổ chức bỏ phiếu: 48

3.4.3 Các thành phần kỹ thuật trong hệ thống bỏ phiếu: 48

3.4.4 Các thành phần trong hệ thống bỏ phiếu điện tử 49

3.5 Quy trình bỏ phiếu điện tử 49

3.5.1 Các giai đoạn bỏ phiếu điện tử 50

3.5.2 Ứng dụng của hệ mật mã trong bài toán bỏ phiếu điện tử điện tử 52

3.5.3 Kiểm tra tổng các phiếu bầu thay vì kiểm tra từng lá phiếu 52

3.5.4 Kĩ thuật phân quyền trong kiểm phiếu 54

3.5.5 Kĩ thuật giúp giữ vững tính ẩn danh của phiếu bầu 55

3.5.6 Một số vấn đề để chống việc bán phiếu bầu 55

3.6 Ứng dụng hệ mật mã Elgamal và sơ đồ chia sẻ bí mật Shamir trong bỏ phiếu điện tử 57

3.6.1 Bài toán bỏ phiếu Đồng ý / Không đồng ý 57

Trang 6

3.6.2 Bài toán bỏ phiếu chọn L trong K 59

3.7 Khảo sát thực trạng tại Văn phòng UBND Tỉnh Yên Bái 61

3.7.1 Giới thiệu chung về Văn phòng UNND Tỉnh Yên Bái 61

3.7.2 Thực trạng các cuộc bỏ phiếu/bầu cử tại VP UNND Tỉnh 64

3.7.3 Một số mẫu biểu liên quan 64

3.7.4 Xây dựng chương trình mô phỏng bỏ phiếu điện tử 66

Kết luận chương 3 74

KẾT LUẬN 75

TÀI LIỆU THAM KHẢO 76

Trang 7

DANH MỤC HÌNH VẼ

Hình 1: Tường lửa 8

Hình 2: Quy trình mã hóa dữ liệu 16

Hình 3: Sơ đồ mã hóa và giải mã 17

Hình 4: Sơ đồ mã hóa và giải mã bằng khóa riêng 18

Hình 5: Sơ đồ mã hóa và giải mã bằng khóa công khai 19

Hình 7: Quy trình bỏ phiếu điện tử 50

Hình 8: Sơ đồ giai đoạn đăng kí bỏ phiếu 50

Hình 9: Sơ đồ giai đoạn bỏ phiếu 51

Hình 10: Sơ đồ giai đoạn kiểm phiếu 51

Hình 11: Sơ đồ tổ chức chung của Văn phòng UBND tỉnh 61

Hình 13: Mẫu phiếu bầu cử 65

Hình 14: Mẫu danh sách cử tri 65

Hình 15: Giao diện chính của chương trình 69

Hình 16: Giao diện chương trình bỏ phiếu có/không đồng ý 69

Hình 17: Giao diện chương trình bỏ phiếu chọn L trong K 71

Trang 8

MỞ ĐẦU

Hiện nay Internet đã trở nên rất phổ biến trên toàn thế giới, thông qua mạng Internet mọi người có thể trao đổi thông tin với nhau một cách nhanh chóng và thuận tiện Những tổ chức có các hoạt động trên môi trường Internet/Intranet phải đối diện với vấn đề là làm thế nào để bảo vệ những dữ liệu quan trọng, ngăn chặn những hình thức tấn công, truy xuất dữ liệu bất hợp pháp

từ bên trong (Intranet) lẫn bên ngoài (Internet) Khi một người muốn trao đổi thông tin với một người hay một tổ chức nào đó thông qua mạng máy tính thì yêu cầu quan trọng là làm sao để đảm bảo thông tin không bị sai lệch hoặc bị lộ

do sự can thiệp của người thứ ba Trước các yêu cầu cần thiết đó, lý thuyết về mật mã thông tin đã ra đời nhằm đảm bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng Vấn đề chia sẻ bí mật được đã được nghiên cứu từ những năm 70 của thế kỷ trước Ý tưởng chính của chia sẻ

bí mật dựa trên nguyên tắc đơn giản là không tin vào bất cứ ai Để đảm bảo an toàn một thông tin nào đó thì ta không thể trao nó cho một người nắm giữ mà phải chia nhỏ thành các mảnh và chỉ trao cho mỗi người một hoặc một số mảnh, sao cho một người với một số mảnh mình có thì không thể tìm ra thông tin bí mật Việc phân chia các mảnh phải theo một sơ đồ chia sẻ bí mật nhất định, sau

đó có thể khôi phục lại thông tin bí mật ban đầu

Được sự gợi ý của giáo viên hướng dẫn và nhận thấy tính thiết thực của vấn đề, tôi đã chọn đề tài: “Sơ đồ chia sẻ chữ kí bí mật trong hệ mật mã và ứng dụng cho bài toán bỏ phiếu điện tử” với mong muốn áp dụng các kiến thức đã được học, xây dựng thử nghiệm mô hình bỏ phiếu điện tử tại văn phòng ủy ban nhân dân tỉnh Yên Bái

Trang 9

Nội dung luận văn bao gồm 3 chương:

Chương 1: “Các kiến thức cơ bản về hệ mật mã” Chương này giới thiệu

tổng quan về an toàn và bảo mật thông tin, các cơ sở toán học về hệ mật mã Khái niệm chữ kí số, một số hệ mật mã và sơ đồ chữ kí số, hàm băm và ứng dụng

Chương 2: “Hệ mật mã công khai và sơ đồ chia sẻ chữ kí bí mật” Từ những

bài toán, vấn đề đã đặt ra trong phần mở đầu và chương 1, chương 2 trình bày tổng quan về hệ mật mã khóa công khai, mã khóa bí mật và các phương pháp mã hóa

để giải quyết các bài toán đặt ra

Chương 3: “Ứng dụng kĩ thuật chia sẻ khóa bí mật trong bài toán bỏ phiếu

điện tử”, trong chương này đi sâu vào trình bày và phân tích hệ mã hóa công khai

Elgamal cùng với tính chất đồng cấu của hệ mật này, tiếp đến là sơ đồ chia sẻ bí mật theo ngưỡng Shamir Từ đó chỉ ra ứng dụng của hệ mật Elgamal trong bài toán “bỏ phiếu Có/ không”; Phối hợp hệ mật mã Elgamal và sơ đồ chia sẻ bí mật Shamir để giải quyết bài toán “bỏ phiếu chọn L trong K” Phần cuối chương khảo sát bài toán bầu cử tại UBND Tỉnh Yên Bái, từ đó làm căn cứ để xây dựng chương trình mô phỏng cho hai bài toán “bỏ phiếu Có/ không” và “bỏ phiếu chọn L trong K”

Trang 10

Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ AN TOÀN THÔNG TIN

Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ

về điện tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Trong chương này sẽ trình bày một số kiến thức cơ bản về an toan thông tin, Các kiến thức dưới đây được tham khảo từ [2], [3], [9]

1

1.1 Tổng quan về an toàn và bảo mật thông tin

1.1.1 An toàn và bảo mật thông tin

Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến

bộ về điện tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Các phương pháp bảo vệ an toàn thông tin dữ liệu có thể được quy tụ vào ba nhóm sau:

- Bảo vệ an toàn thông tin bằng các biện pháp hành chính

- Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng)

- Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm)

Trang 11

Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp Môi trường khó bảo vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xâm nhập nhất đó là môi trường mạng và truyền tin Biện pháp hiệu quả nhất và kinh tế nhất hiện nay trên mạng truyền tin và mạng máy tính là biện pháp thuật toán

An toàn thông tin bao gồm các nội dung sau:

- Tính bí mật: tính kín đáo riêng tư của thông tin

- Tính xác thực của thông tin, bao gồm xác thực đối tác (bài toán nhận danh), xác thực thông tin trao đổi

- Tính trách nhiệm: đảm bảo người gửi thông tin không thể thoái thác trách nhiệm về thông tin mà mình đã gửi

Để đảm bảo an toàn thông tin dữ liệu trên đường truyền tin và trên mạng máy tính có hiệu quả thì điều trước tiên là phải lường trước hoặc dự đoán trước các khả năng không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể xảy ra đối với thông tin dữ liệu được lưu trữ và trao đổi trên đường truyền tin cũng như trên mạng Xác định càng chính xác các nguy cơ nói trên thì càng quyết định được tốt các giải pháp để giảm thiểu các thiệt hại

Có hai loại hành vi xâm phạm thông tin dữ liệu đó là: vi phạm chủ động

và vi phạm thụ động Vi phạm thụ động chỉ nhằm mục đích cuối cùng là nắm bắt được thông tin (đánh cắp thông tin) Việc làm đó có khi không biết được nội dung cụ thể nhưng có thể dò ra được người gửi, người nhận nhờ thông tin điều khiển giao thức chứa trong phần đầu các gói tin Kẻ xâm nhập có thể kiểm tra được số lượng, độ dài và tần số trao đổi Vì vậy vi pham thụ động không làm sai lệch hoặc hủy hoại nội dung thông tin dữ liệu được trao đổi Vi phạm thụ động thường khó phát hiện nhưng có thể có những biện pháp ngăn chặn hiệu quả Vi phạm chủ động là dạng vi phạm có thể làm thay đổi nội dung, xóa bỏ, làm trễ, xắp xếp lại thứ tự hoặc làm lặp lại gói tin tại thời điểm đó hoặc sau đó một thời gian Vi phạm chủ động có thể thêm vào một số thông tin ngoại lai để làm sai

Trang 12

lệch nội dung thông tin trao đổi Vi phạm chủ động dễ phát hiện nhưng để ngăn chặn hiệu quả thì khó khăn hơn nhiều

Một thực tế là không có một biện pháp bảo vệ an toàn thông tin dữ liệu nào là an toàn tuyệt đối Một hệ thống dù được bảo vệ chắc chắn đến đâu cũng không thể đảm bảo là an toàn tuyệt đối

1.1.2 Các chiến lược an toàn hệ thống

- Giới hạn quyền hạn tối thiểu (Last Privilege):

Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cùng chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng đối tượng đó chỉ được sử dụng một số tài nguyên nhất định

- Bảo vệ theo chiều sâu (Defence In Depth):

Nguyên tắc này nhắc nhở chúng ta : Không nên dựa vào một chế độ an toàn nào dù cho chúng rất mạnh, mà nên tạo nhiều cơ chế an toàn để tương hỗ lẫn nhau

- Nút thắt (Choke Point) :

Tạo ra một “cửa khẩu” hẹp, và chỉ cho phép thông tin đi vào hệ thống của mình bằng con đường duy nhất chính là “cửa khẩu” này => phải tổ chức một cơ cấu kiểm soát và điều khiển thông tin đi qua cửa này

- Điểm nối yếu nhất (Weakest Link) :

Chiến lược này dựa trên nguyên tắc: “ Một dây xích chỉ chắc tại mắt duy nhất, một bức tường chỉ cứng tại điểm yếu nhất”

Kẻ phá hoại thường tìm những chỗ yếu nhất của hệ thống để tấn công, do

đó ta cần phải gia cố các yếu điểm của hệ thống Thông thường chúng ta chỉ

Trang 13

quan tâm đến kẻ tấn công trên mạng hơn là kẻ tiếp cận hệ thống, do đó an toàn vật lý được coi là yếu điểm nhất trong hệ thống của chúng ta

- Tính toàn cục:

Các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục

bộ Nếu có một kẻ nào đó có thể bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng cách tấn công hệ thống tự do của ai đó và sau đó tấn công hệ thống từ nội bộ bên trong

- Tính đa dạng bảo vệ:

Cần phải sử dụng nhiều biện pháp bảo vệ khác nhau cho hệ thống khác nhau, nếu không có kẻ tấn công vào được một hệ thống thì chúng cũng dễ dàng tấn công vào các hệ thống khác

1.1.3 Các mức bảo vệ trên mạng

Vì không thể có một giải pháp an toàn tuyệt đối nên người ta thường phải

sử dụng đồng thời nhiều mức bảo vệ khác nhau tạo thành nhiều hàng rào chắn đối với các hoạt động xâm phạm Việc bảo vệ thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong máy tính, đặc biệt là các server trên mạng Bởi thế ngoài một số biện pháp nhằm chống thất thoát thông tin trên đường truyền mọi

cố gắng tập trung vào việc xây dựng các mức rào chắn từ ngoài vào trong cho các hệ thống kết nối vào mạng Thông thường bao gồm các mức bảo vệ sau:

- Quyền truy nhập

Lớp bảo vệ trong cùng là quyền truy nhập nhằm kiểm soát các tài nguyên của mạng và quyền hạn trên tài nguyên đó Dĩ nhiên là kiểm soát được các cấu trúc dữ liệu càng chi tiết càng tốt Hiện tại việc kiểm soát thường ở mức tệp

- Đăng ký tên /mật khẩu

Trang 14

Thực ra đây cũng là kiểm soát quyền truy nhập, nhưng không phải truy nhập ở mức thông tin mà ở mức hệ thống Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản ít phí tổn và cũng rất hiệu quả Mỗi người sử dụng muốn được tham gia vào mạng để sử dụng tài nguyên đều phải có đăng ký tên và mật khẩu trước Người quản trị mạng có trách nhiệm quản lý, kiểm soát mọi hoạt động của mạng và xác định quyền truy nhập của những người sử dụng khác theo thời gian và không gian (nghĩa là người sử dụng chỉ được truy nhập trong một khoảng thời gian nào đó tại một vị trí nhất định nào đó)

Về lý thuyết nếu mọi người đều giữ kín được mật khẩu và tên đăng ký của mình thì sẽ không xảy ra các truy nhập trái phép Song điều đó khó đảm bảo trong thực tế vì nhiều nguyên nhân rất đời thường làm giảm hiệu quả của lớp bảo vệ này Có thể khắc phục bằng cách người quản mạng chịu trách nhiệm đặt mật khẩu hoặc thay đổi mật khẩu theo thời gian

- Mã hoá dữ liệu

Để bảo mật thông tin trên đường truyền người ta sử dụng các phương pháp mã hoá Dữ liệu bị biến đổi từ dạng nhận thức được sang dạng không nhận thức được theo một thuật toán nào đó và sẽ được biến đổi ngược lại ở trạm nhận (giải mã) Đây là lớp bảo vệ thông tin rất quan trọng

- Bảo vệ vật lý

Ngăn cản các truy nhập vật lý vào hệ thống Thường dùng các biện pháp truyền thống như ngăn cấm tuyệt đối người không phận sự vào phòng đặt máy mạng, dùng ổ khoá trên máy tính hoặc các máy trạm không có ổ mềm

- Tường lửa

Trang 15

Ngăn chặn thâm nhập trái phép và lọc bỏ các gói tin không muốn gửi hoặc nhận vì các lý do nào đó để bảo vệ một máy tính hoặc cả mạng nội bộ (intranet)

Hình 1: Tường lửa

- Quản trị mạng

Trong thời đại phát triển của công nghệ thông tin, mạng máy tính quyết định toàn bộ hoạt động của một cơ quan, hay một công ty xí nghiệp Vì vậy việc bảo đảm cho hệ thống mạng máy tính hoạt động một cách an toàn, không xảy ra

sự cố là một công việc cấp thiết hàng đầu Công tác quản trị mạng máy tính phải được thực hiện một cách khoa học đảm bảo các yêu cầu sau :

 Toàn bộ hệ thống hoạt động bình thường trong giờ làm việc

 Có hệ thống dự phòng khi có sự cố về phần cứng hoặc phần mềm xảy ra

 Backup dữ liệu quan trọng theo định kỳ

 Bảo dưỡng mạng theo định kỳ

Trang 16

 Bảo mật dữ liệu, phân quyền truy cập, tổ chức nhóm làm việc trên mạng

1.1.4 An toàn thông tin bằng mật mã

Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin bí mật Mật mã bao gồm : Lập mã và phá mã Lập mã bao gồm hai quá trình: mã hóa và giải mã

Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá trình này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện quá trình ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ liệu đã được mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là giải mã Đây là một lớp bảo vệ thông tin rất quan trọng và được

sử dụng rộng rãi trong môi trường mạng

Để bảo vệ thông tin bằng mật mã người ta thường tiếp cận theo hai hướng:

- Theo đường truyền (Link_Oriented_Security)

- Từ nút đến nút (End_to_End)

Theo cách thứ nhất thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút mà không quan tâm đến nguồn và đích của thông tin đó Ở đây ta lưu ý rằng thông tin chỉ được bảo vệ trên đường truyền, tức là ở mỗi nút đều có quá trình giải mã sau đó mã hoá để truyền đi tiếp, do đó các nút cần phải được bảo vệ tốt

Ngược lại theo cách thứ hai thông tin trên mạng được bảo vệ trên toàn đường truyền từ nguồn đến đích Thông tin sẽ được mã hoá ngay sau khi mới tạo ra và chỉ được giải mã khi về đến đích Cách này mắc phải nhược điểm là chỉ có dữ liệu của người ung thì mới có thể mã hóa được còn dữ liệu điều khiển thì giữ nguyên để có thể xử lý tại các nút

1.1.5 Vai trò của hệ mật mã

Các Hệ mật mã phải thực hiện được các vai trò sau:

Trang 17

- Hệ mật mã phải che dấu được nội dung của văn bản rõ (PlainText)

để đảm bảo sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin (Secrety), hay nói cách khác là chống truy nhập không đúng quyền hạn

- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực (Authenticity)

- Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo danh để gửi thông tin trên mạng

Ưu điểm lớn nhất của bất kỳ Hệ mật mã nào đó là có thể đánh giá được độ phức tạp tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu đã được mã hoá Tuy nhiên mỗi hệ mật mã có một số ưu và nhược điểm khác nhau, nhưng nhờ đánh giá được độ phức tạp tính toán mà ta có thể áp dụng các thuật toán mã hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo yêu cầu về độ an toàn

- Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai) : Hay còn gọi là hệ mật mã công khai, các hệ mật mã này dùng một khoá để mã hoá sau đó dùng một khoá khác để giải mã, nghĩa là khoá để mã hoá và giải mã là khác nhau Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể suy được từ khoá kia Khoá dùng để mã hoá có thể công khai nhưng khoá dùng để giải mã phải giữ bí mật

Trang 18

Ngoài ra nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại: Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970) và mật mã hiện đại (ra đời sau năm 1970) Còn nếu dựa vào cách thức tiến hành mã thì hệ mật

mã còn được chia làm hai loại là mã dòng (tiến hành mã từng khối dữ liệu, mỗi khối lại dựa vào các khóa khác nhau, các khóa này được sinh ra từ hàm sinh khóa, được gọi là dòng khóa) và mã khối (tiến hành mã từng khối dữ liệu với khóa như nhau)

1.1.7 Tiêu chuẩn đánh giá hệ mật mã

Để đánh giá một hệ mật mã người ta thường đánh giá thông qua các tính chất sau:

độ an toàn cao Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán mà không cần phải cài đặt Một hệ mật mã được coi là

an toàn nếu để phá hệ mật mã này phải dùng n phép toán Mà để giải quyết n phép toán cần thời gian vô cùng lớn, không thể chấp nhận được

Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:

- Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khoá, công khai thuật toán

- Khi cho khoá công khai e K và bản rõ P thì chúng ta dễ dàng tính được

Khi không biết d K thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm f: X → Y thì việc tính y=f(x) với mọi x X là dễ còn việc tìm x khi biết y lại

là vấn đề khó và nó được gọi là hàm một chiều

- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ

Tốc độ mã và giải mã: Khi đánh giá hệ mật mã chúng ta phải chú ý đến

tốc độ mã và giải mã Hệ mật mã tốt thì thời gian mã và giải mã nhanh

Trang 19

Phân phối khóa: Một hệ mật mã phụ thuộc vào khóa, khóa này được

truyền công khai hay truyền khóa bí mật Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật mã có khóa công khai Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã

1.2 Cơ sở toán học của hệ mật mã

1.2.1 Ước số - Bội số

Định nghĩa :

Ước số của a và b là c nếu c|a và c|b

Ước số chung lớn nhất : Là số lớn nhất mà a và b chia hết

Các thuật toán trong Z

Cho a và b là các số nguyên không âm và nhỏ hơn hoặc bằng n Cần chú ý rằng số các bit trong biểu diễn nhị phân của n là [lgn] + 1 và số này xấp xỉ bằng lg n Số các phép toán bit đối với bốn phép toán cơ bản trên các

số là cộng , trừ, nhân và chia sử dụng các thuật toán kinh điển được tóm lược trên bảng sau Các kỹ thuật tinh tế hơn đối với các phép toán nhân và chia sẽ có độ phức tạp nhỏ hơn

Trang 20

Phép toán Độ phức tạp bit Cộng a + b

Trừ a – b

Nhân a * b

Chia a = qb + r

0(lg a + lg b) = 0 (lg n) 0(lg a + lg b) = 0 (lg n) 0((lga)*(lgb)) = 0((lg n)) 0((lga)*(lgb)) = 0((lg n))

Thuật toán Euclide : Tính UCLN của 2 số nguyên

Input : Hai số nguyên không âm a và b với a > b

Output : UCLN của a và b

(1) while b ≠ 0 do

R ← a mod b, a ← b, b ← r

(2) Return (a)

Thuật toán Euclide mở rộng

Input : Hai số nguyên không âm a và b với a > b

Output : d = UCLN (a, b) và các số nguyên x và y thỏa mãn ax + by = d (1) Nếu b = 0 thì đặt d ← a, x ← l, y ← 0 và return (d, x, y) (2) Đặt x2 ← l, x1 ← 0, y2 ← 0, y1 ← l

(3) while b > 0 do

1 q ← [a/b], r ← a – qb, x ← x2 – qx1 , y ← y2 – qy1

2 a ← b, b ← r, x2 ← x1, x1 ← x, y2 ← y1 , y1 ← y (4) Đặt d ← a, x ← x2, y ← y2 và return (d, x, y)

Trang 21

Định nghĩa : Cho a và b là hai số nguyên tố, a được gọi là đồng dư với b theo

modulo n, ký hiệu là a ≡ b(mod n) nếu a, b chia cho n có cùng số dư

Số nghịch đảo

Định nghĩa :

Cho a  Zn Một số nguyên x  Zn gọi là nghịch đảo của a theo mod n

nếu a.x ≡ 1mod n Nếu có số x như vậy thì nó là duy nhất và ta nói a là khả nghịch Ký hiệu là a-1 Có thể suy ra rằng a khả nghịch theo mod n khi và chỉ khi gcd (a,n)=1

Nhóm nhân *

n

Z Định nghĩa : Nhóm nhân của Zn ký hiệu là *

n

Z là tập hợp các phần tử sao cho gcd (a,n)=1 Đặc biệt với n là số nguyên tố thì *

n

ZaZn   a n

Trang 22

Phần dư China CRT ( Chinese Remainder Theorem)

Nếu các số nguyên n1, n2, …, nk là nguyên tố cùng nhau từng thì hệ các phương trình đồng dư:

Trang 23

1.3 Mã hóa

1.3.1 Mã hóa dữ liệu

Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một dạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể đọc hiểu được Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ liệu đã được mã hóa về dạng thông tin ban đầu

Hình 2: Quy trình mã hóa dữ liệu

- Mã hóa: Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao cho người khác không thể đọc hiểu được

- Giải mã: Là quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được

mã hóa thành dạng gốc ban đầu

- Bản mã: Tệp dữ liệu đã được mã hóa

Một hệ thống mã hóa bao gồm các thành phần sau:

- PlainText : Bản tin sẽ được mã hóa hay bản tin gốc

- CipherText : Bản tin đã được mã hóa hay bản tin mã

- Thuật toán mã hóa và giải mã :

Encryption : quá trình chuyển bản tin gốc sang dạng mật mã

Decryption : quá trình giải bản tin dạng mật mã trở về bản tin gốc Cách chọn khóa : giá trị toán học dùng để thực hiện mã hóa

Nhiều phương pháp mã hóa đã được đưa ra dựa trên những giải thuật toán phức tạp, để tạo khó khăn cho những ai đó muốn phá mật mã mà không cần được ai trao chìa khóa Nói tạo khó khăn là vì trên lý thuyết ta không thể nói

Trang 24

việc tìm chìa khóa là vô phương Nhưng nếu trở ngại đủ lớn để làm nản lòng kẻ gian thì đã là một mức độ an toàn tốt

Quá trình mã hóa và giải mã có thể được minh họa theo sơ đồ sau :

Hình 3: Sơ đồ mã hóa và giải mã

Phân loại

1.3.1.1 Mã hóa bằng khóa bí mật

Các hệ thống mã hóa với khóa bí mật còn được gọi là mã hóa bằng khóa riêng, mã hóa đối xứng sử dụng duy nhất một khóa cho cả quá trình mã hóa lẫn quá trình giải mã

Có hai loại thuật toán mã hóa bí mật :

- Stream Algorithms/Stream Ciphers : các thuật toán hoạt động trên văn bản bình thường theo từng bit một

- Block Algorithms/Block Ciphers : các thuật toán hoạt động trên văn bản theo các khối (32 bit, 64 bit, 128 bit, )

- Một số thuật toán đang được sử dụng rộng rãi hiện nay : DES, DES, RC5, RC6, Rijndael

Triple Quá trình mã hóa và giải mã bằng cách sử dụng khóa bí mật được minh họa như hình sau :

Trang 25

hệ thống mã hóa với khóa công khai cần có một quá trình sinh ra hai khóa để mã hóa và giải mã thông điệp Các khóa này được xem như là một đôi:

Trang 26

- Public-key (khóa công khai): được phép công khai mà không phải chịu rủi

ro về an toàn Khóa này được dùng để mã hóa thông điệp

- Private-key (khóa bí mật): không được để lộ Mỗi thông điệp được mã hóa bằng public-key chỉ có thể giải mã bằng một khóa mật thích hợp

Một số thuật toán mã hóa công khai phổ biến : RSA, Diffie-Hellman Exchange Algorithm (dùng cho việc phân phối và trao đổi khóa)

Key-Quá trình mã hóa và giải mã bằng cách sử dụng khóa công khai được minh họa như hình sau :

-Quá trình truyền

dữ liệu

Khóa công khai, chỉ

dùng để mã hóa (có

thể cho mọi người

biết) Khóa mật, chỉ dùng để giải mã (cần

được giữ bí mật)

Quá trình

mã hóa

Quá trình giải mã

Trang 27

1.3.2 Ưu khuyết điểm của hai phương pháp

1.3.2.1 Phương pháp mã hóa khóa bí mật

Các ưu khuyết điểm của hệ thống khóa bí mật (khóa đối xứng) :

+ Có thể được thiết kế để đạt tốc độ

cao Các thiết bị phần cứng hỗ trợ có

thể đạt tốc độ hàng trăm megabytes

mỗi giây trong khi việc thực thi bằng

phần mềm chỉ đạt được khoảng vài

megabytes mỗi giây

+ Khóa dùng cho mã hóa khóa đối

xứng tương đối ngắn

+ Được xem như thành phần cơ bản có

thể triển khai để xây dựng các kỹ thuật

mã hóa khác bao gồm khởi tạo các số

ngẫu nhiên, các hàm băm, các kỹ thuật

tính toán

+ Có thể được kết hợp để tạo ra các

thuật toán mã hóa mạnh hơn

+ Trong quá trình truyền thông giữa hai người, khóa phải được giữ bí mật

cho cả hai phía

+ Trong một hệ thống mạng lớn, số lượng khóa cần được quản lý rất nhiều

Do vậy việc quản lý khóa một cách hiệu quả đòi hỏi sử dụng một bộ phận tin cậy thứ ba (TTP :Trusted Third Party)

+ Khóa bí mật cần được thay đổi thường xuyên

+ Kỹ thuật chữ ký số được phát triển

từ cơ chế mã hóa khóa đối xứng đòi hỏi sử dụng các khóa lớn cho các hàm xác nhận công khai hoặc là sử dụng một TTP

Trang 28

1.3.2.2 Phương pháp mã hóa khóa công khai

Các ưu khuyết điểm của hệ thống mã hóa khóa công khai:

+ Chỉ có khóa riêng thì cần được giữ bí

mật (tuy nhiên việc xác nhận của các

khóa công khai cần được đảm bảo)

+ Việc quản trị các khóa trên mạng đòi

hỏi sự tồn tại duy nhất một thành phần

tin cậy TTP

+ Cặp khóa riêng và công khai có thể

được sử dụng trong thời gian dài

+ Nhiều mô hình khóa công cộng được

phát triển hình thành nên các kỹ thuật

chữ ký số hiệu quả Khóa được sử

dụng cho hàm kiểu công khai thì nhỏ hơn

rất nhiều so với dùng khóa đối xứng

+ Trong một mạng lớn, số lượng các

khóa cần thiết được quan tâm ít hơn so

với việc dùng khóa đối xứng

+ Tốc độ cho các phương thức mã hóa công khai thì chậm hơn rất nhiều so với các mô hình khóa đối xứng

+ Kích thước khóa lớn hơn rất nhiều so với cơ chế mã hóa khóa đối xứng + Không có mô hình khóa công khai nào được chứng minh là an toàn Phần lớn các mô hình mã hóa hiệu quả ngày nay có sự an toàn dựa trên các giả thuyết của một tập nhỏ của các vấn đề

lý thuyết số học

+ Hệ thống mã hóa công khai không có

bề dày lâu đời như hệ thống mã hóa khóa đối xứng, nó chỉ được tìm ra vào giữa khoảng những năm 1970

1.3.3 Chữ ký số

Giới thiệu

Kỹ thuật chữ ký số hay chữ ký điện tử là kỹ thuật sử dụng kỹ thuật số để

mô phỏng chữ ký bằng tay Kỹ thuật chữ kí số được dùng để xác định người đã tạo ra và chịu trách nhiệm với thông tin mà người đó ký vào Kỹ thuật chữ ký số gồm 2 phần : thuật toán ký tên và thuật toán xác nhận và kiểm tra chữ ký Theo

Trang 29

kỹ thuật này thì chỉ có người tạo ra thông điệp mới có thể ký tên và tất cả mọi người đều có thể kiểm chứng chữ ký Mô hình chữ ký số cũng giống như mô hình mã hóa công khai Do vậy, thuật toán RSA có thể được áp dụng để xây dựng chữ ký số Hiện nay, có 3 thuật toán chữ ký số thông dụng là chữ ký RSA, chữ ký Elgamall và chữ ký DSS (Digital Signature Standard)

Yêu cầu chữ ký số

Các yêu cầu chữ ký số (chữ ký điện tử) cần :

- Chữ ký phải dựa vào thông điệp ký

- Chữ ký phải chứa vài thông tin quan trọng duy nhất đối với người gửi

để ngăn chặn sự giả mạo

- Dễ dàng tạo ra chữ ký điện tử

- Dễ dàng nhận diện và xác nhận chữ ký điện tử

- Không dễ dàng giả mạo một chữ ký điện tử

Để có thể tạo ra và sử dụng chữ ký số ta cần phải sử dụng một hàm băm

để rút gọn một thông điệp có chiều dài bất kỳ thành một giá trị Giá trị này có thể được sử dụng để kiểm tra sự toàn vẹn của thông tin

Tồn tại của chữ ký số

Khi công nhận một chữ ký số, một lời khuyên rằng với sự tồn tại của publickey Nhưng sẽ hiểu như thế nào nếu publickey là không đúng? Nếu ta

Trang 30

không cho lập tức một publickey vào trong bảo mật thì chúng ta không chắc chắn puplickey là đúng Chứng thực số sẽ cố gắng (Digital certificates) giải quyết những vấn đề này, việc đồng nhất một publickey vào trong là cách không thể giải được, chúng ta sẽ sử dụng certificates vào đồng nhất biến

Hàm băm mật mã

Hàm băm (hash function) là một trong hai kĩ thuật chủ yếu phục vụ quá trình xác thực Chức năng chính của nó là thực hiện ánh xạ các bản tin có chiều dài khác nhau thành một miếng băm có kích thước cố định Miếng băm mới tạo

ra thường có kích thước nhỏ hơn rất nhiều so với bản tin ban đầu

Một giá trị miếng băm h được sinh ra bởi hàm băm H có dạng: h= H(M) trong đó: M là bản tin có chiều dài tùy ý, h là giá trị băm chiều dài cố định

Các yêu cầu đối với hàm băm

- Hàm H có thể áp dụng cho các khối dữ liệu với kích thước tùy ý

- Đầu ra của hàm H có độ dài xác định

- Việc tính giá trị H(x) đủ đơn giản để việc cài đặt là khả thi đối với cả phần mềm và phần cứng

- Hàm H là hàm một chiều, nghĩa là với x cho trước thì H(x) xác định nhưng với h cho trước thì việc tính x là cực kỳ khó khăn

- Với hai giá trị đầu vào x ≠ y thì H(x) ≠ H(y)

Hiện nay, một số kỹ thuật băm được sử dụng phổ biến như: SHA-1, SHA-256, SHA-384, SHA-512…

Trang 31

Chương 2

HỆ MẬT MÃ KHÓA CÔNG KHAI VÀ SƠ ĐỒ CHIA SẺ BÍ MẬT

Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng

để mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai Trong chương này sẽ trình bày các vấn đề cơ bản về hệ mật mã khóa công khai và một số sơ đồ chia

sẻ bí mật Các kiến thức dưới đây được tham khảo từ [3], [5], [6]

2.1 Khái niệm chung

Trong phần này, chúng ta sẽ đề cập đến những phép biến đổi của mã khoá công khai hay mã không đối xứng, trong hệ mã khoá công khai, mỗi thực thể A

có một khoá công khai e và tương ứng là một khoá riêng d Hệ thống này bảo đảm việc tính d từ e là không thể làm được Khoá công khai xác định một phép

mã hoá Ee, trong khi đó khoá riêng xác định phép giải mã Dd Bất kỳ thực thể B nào muốn gửi một văn bản tới A thu được một bản sao xác thực từ khoá công khai của A là e, sử dụng phép mã hoá để thu được bản mã c=Ee(m) và truyền tới

A Để giải mã c, A áp dụng phép giải mã, thu được văn bản gốc m=Dd(c)

Khoá công khai không cần giữ bí mật, một thuận lợi chính của những hệ thống này là cung cấp tính xác thực khoá công khai, thường dễ hơn so với việc bảo đảm phân phối khoá bí mật Mục đích chính của mã khoá công khai là cung cấp sự bí mật và sự tin cậy

Sơ đồ mã khoá công khai về cơ bản là chậm hơn so với thuật toán mã hoá đối xứng Vì lý do này, mã khoá công khai được sử dụng phổ biến nhất trên thực

tế cho việc truyền tải khoá, sau đó được sử dụng để mã hoá khối dữ liệu bằng

Trang 32

thuật toán đối xứng, và những ứng dụng khác bao gồm sự toàn vẹn dữ liệu và sự xác định quyền Một số tính chất quan trọng của mã khóa công khai

- Mã khóa công khai có tính chất bất đối xứng, sử dụng 2 khóa riêng biệt tương phản với mã hóa qui ước có tính đối xứng là chỉ sự dụng 1 khóa Việc sử dụng 2 khóa có tầm quan trọng sâu sắc trong lĩnh vực cần tính bí mật, phân bố khóa và sự chứng thực quyền Một khóa cho mã hóa (khóa công khai) và một khóa khác (có quan hệ với khóa trên) cho giải mã (khóa bí mật, khóa riêng chỉ

có người nhận mới biết mã này)

- Một đối tượng B muốn gửi tin cho A thì phải dùng khóa công khai của

A để mã hóa thông tin, để giải mã được bản tin B gửi thì A sử dụng khóa riêng của mình để giải mã

- Giải thuật mã hóa có đặc điểm là nếu biết giải thuật mã và khóa mã hóa (khoá công khai) tuy nhiên việc tính ra khóa bí mật hay khả năng giải mã là không khả thi

Các bước cần thiết trong quá trình mã hóa công khai:

+ Người nhận bản mã tự tạo ra một cặp khóa để dùng cho mã hóa và giải

2.2 Một số hệ mã công khai thông dụng

2.2.1 Hệ mã RSA (R.Rivest, A.Shamir, L.Adleman)

Khái niệm hệ mật mã RSA đã được ra đời năm 1976 bởi các tác giả R.Rivets, A.Shamir, và L.Adleman Hệ mã hoá này dựa trên cơ sở của hai bài toán:

Trang 33

+ Bài toán Logarithm rời rạc (Discrete logarith)

+ Bài toán phân tích thành thừa số nguyên tố

Sơ đồ mã hoá RSA là sơ đồ mã hoá khối, đoạn tin được mã hoá từng khối với mỗi khối có giá trị < n với n là số nguyên đủ lớn

Hệ mã RSA là hệ mã dựa vào bài toán logarithm rời rạc và bài toán phân tích một số nguyên thành tích các thừa số nguyên tố, là hệ mã được sử dụng rộng rãi nhất Nó cung cấp cả sự bí mật và chữ ký điện tử, và tính bảo mật của

nó là cơ sở cho độ khó trong vấn đề tìm thừa số nguyên tố

Thuật toán

Tạo khoá:

Mỗi thực thể tạo một khoá công khai và một khoá riêng tương ứng

Thực thể A cần làm công việc sau:

1 Tạo 2 số nguyên tố lớn p và q bất kỳ có cỡ xấp xỉ nhau

2 Tính n = p×q và ( n )= (p-1)(q-1)

3 Chọn 1 số nguyên e, 1<e<( n ) sao cho UCLN(e, ( n )) = 1

4 Sử dụng thuật toán Euclid mở rộng để tính d, 1<d< ( n ) sao cho: e×d  1 (mod ( n ))

5 Khoá công khai của A là (n,e), khoá riêng của A là d

Mã hoá: B mã hoá một văn bản gửi cho A

1 Nhận được khoá xác thực công khai của A là (n,e)

2 Trình bày văn bản như một số nguyên m thuộc [0, n-1]

3 Tính c = me mod n

4 Gửi bản mã c cho A

Giải mã: Để khôi phục bản rõ m từ bản mã c, A phải thực hiện công việc sau: Sử dụng khoá riêng d để tính m = cd mod n

Trang 34

Chú ý: Số =BCNN(p-1, q-1) còn được gọi là số mũ tự nhiên của n có

thể được sử dụng để thay cho ( n ) = (p-1)(q-1) trong việc tạo khoá RSA Để ý rằng  là một ước số đúng của ( n ) Sử dụng  có thể tính toán với giải mã

số mũ nhỏ hơn và kết quả là việc giải mã sẽ nhanh hơn

Chú ý: Có nhiều cách để tăng tốc độ mã hoá và giải mã RSA nhưng với một

số cải tiến thì tốc độ mã hoá/giải mã RSA về căn bản vẫn chậm hơn so với các thuật toán mã hoá đối xứng Trong thực tế, hệ mã RSA được sử dụng phổ biến để truyền khoá đã được tạo bằng thuật toán đối xứng và mã hoá những mục dữ liệu nhỏ

Trang 35

pq và do vậy p n Khi đó có thể dễ dàng phân tích n thành thừa số bằng

cách chia thử cho tất cả các số nguyên lẻ cho tới n

Một số tính chất của hệ RSA

Trong các hệ mật mã RSA, một bản tin có thể được mã hoá trong thời gian tuyến tính Đối với các bản tin dài, độ dài của các số được dùng cho các khoá có thể được coi như là hằng Tương tự như vậy, nâng một số lên luỹ thừa được thực hiện trong thời gian hằng, các số không được phép dài hơn một độ dài hằng Thực ra tham số này che dấu nhiều chi tiết cài đặt có liên quan đến việc tính toán với các con số dài, chi phí của các phép toán thực sự là một yếu tố ngăn cản sự phổ biến ứng dụng của phương pháp này Phần quan trọng nhất của việc tính toán có liên quan đến việc mã hoá bản tin Nhưng chắc chắn là sẽ không có hệ mã hoá nào hết nếu không tính ra được các khoá của chúng là các

số lớn Các khoá cho hệ mã hoá RSA có thể được tạo ra mà không phải tính toán quá nhiều

Mỗi số nguyên tố lớn có thể được phát sinh bằng cách đầu tiên tạo ra một

số ngẫu nhiên lớn, sau đó kiểm tra các số kế tiếp cho tới khi tìm được một số nguyên tố Các bước tính p dựa vào thuật toán Euclid

Như phần trên đã trình bày trong hệ mã hoá công khai thì khoá giải mã (private key) kB và các thừa số p,q là được giữ bí mật và sự thành công của phương pháp là tuỳ thuộc vào kẻ địch có khả năng tìm ra được giá trị của kB hay không nếu cho trước N và KB Rất khó có thể tìm ra được kB từ KB vì cần phải xác định được p và q Như vậy cần phân tích N ra thành thừa số để tính p

và q, nhưng việc phân tích ra thừa số là một việc làm tốn rất nhiều thời gian, với

kỹ thuật hiện đại ngày nay thì cần tới hàng triệu năm để phân tích một số có 200 chữ số ra thừa số

Độ an toàn của thuật toán RSA dựa trên cơ sở những khó khăn của việc xác định các thừa số nguyên tố của một số lớn

Trang 36

3 Khoá công khai của A là n, khoá riêng của A là (p,q)

Mã hoá: B mã hoá văn bản m gửi cho A

1 Nhận được khoá công khai xác thực của A là n

2 Biểu diễn đoạn văn bản là một số nguyên trong miền: {0, 1, , n-1}

3 Tính c = m2 mod n

4 Gửi bản mã c cho A

Giải mã: Khôi phục bản rõ m từ c, cần phải dùng thuật toán tìm căn bậc hai theo

modulo n từ số nguyên tố p và q đã cho để tính ra 4 căn bậc hai m1, m2, m3 và

m4 của c theo modulo n Khi đó văn bản đã gửi là một trong các giá trị m1, m2,

m3 hoặc m4 A bằng cách này hay cách khác quyết định đâu là m

Chú ý : Giả sử p và q đều được chọn sao cho  3 (mod 4) thì việc tính toán 4

căn bậc 2 của c theo modulo n được thực hiện đơn giản theo thuật toán sau:

+ Sử dụng thuật toán Euclid mở rộng để tìm số nguyên a và b thoả mãn a×p + b×q = 1 Chú ý rằng a và b có thể được tính chỉ 1 lần trong suốt quá trình tạo khoá

+ Tính r = c(p + 1)/4 mod p

+ Tính s = c(q + 1)/4 mod q

+ Tính x = (aps + bqr) mod n

+ Tính y = (aps - bqr) mod n

Trang 37

+ Bốn căn bậc 2 của c theo modulo n lần lượt là x, -x mod n, y và -y mod n

Ví dụ

Tạo khoá: Chọn số nguyên tố p = 277, q = 331, tính n = p×q = 91687 Khoá công khai của A là n = 91687, khoá riêng là (p = 277, q= 331)

Mã hoá: Giả sử rằng 6 bit cuối cùng của văn bản gốc là quy định để tái tạo

trước khi mã hoá Yêu cầu mã hoá 10 bit văn bản m = 1001111001, B tái tạo lại

6 bit cuối cùng của m để thu được 16 bit văn bản m = 1001111001111001, biểu

diễn ở dạng thập phân là m = 40569 sau đó B tính c = m2 mod n = 405692 mod

91687 = 62111

Giải mã: Để giải mã c, A dùng thuật toán tính được 4 căn bậc hai của c mod

n là m1 = 69654, m2 = 22033, m3 = 40569, m4 = 51118 biểu diễn ở dạng nhị phân là:

m1 = 10001000000010110, m2 = 101011000010001

m3 = 1001111001111001, m4 = 1100011110101110

Ta thấy chỉ m3 có phần mở rộng quy định, khi đó A tiến hành giải mã c (hay m3 ) để khôi phục văn bản gốc m = 1001111001

Tính bảo mật của hệ mã khoá công khai Rabin

Do việc phân tích n thành thừa số là rất khó nên lược đồ mã khoá công khai Rabin là minh chứng bảo đảm chống lại sự tấn công của đối phương Tuy nhiên, lược đồ mã khoá công khai Rabin không chống lại được sự tấn công bản

mã chọn trước Mặt hạn chế của lược đồ mã khoá công khai Rabin là người nhận phải lựa chọn chính xác bản rõ từ 4 khả năng Sự nhập nhằng trong giải mã có thể dễ dàng khắc phục trong thực tế bằng cách thêm phần mở rộng vào bản rõ trước khi mã hoá Khi đó, với xác suất cao, chính xác một trong bốn căn bậc 2:

m1, m2, m3, m4 củabản mã c sẽ có phần mở rộng này, và người nhận sẽ chọn đó

là bản rõ mong đợi Nếu không có căn bậc 2 nào của c có phần mở rộng này thì

Trang 38

người nhận từ chối Nếu phần mở rộng được sử dụng như đã nói ở trên, lược đồ Rabin không dễ bị tấn công bằng bản mã chọn trước

2.2.3 Hệ mã Elgamal

Hệ mã Elgamal xây dựng dựa trên bài toán logarithm rời rạc là bài toán được dùng nhiều trong thủ tục mật mã

Chúng ta sẽ bắt đầu bằng việc mô tả bài toán khi thiết lập trường hữu hạn

Zp trong đó p là số nguyên tố Nhớ lại rằng nhóm nhân Z*P là nhóm cyclic và phần tử sinh của Z*

P được gọi là phần tử nguyên thuỷ Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu và được xem là bài toán khó Không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc, để gây khó khăn cho các phương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và (p-1) phải có ít nhất một thừa số nguyên tố lớn Lợi thế của bài toán logarithm rời rạc trong xây dựng hệ mã là khó tìm được các logarithm rời rạc, song bài toán ngược lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán

“bình phương và nhân” Nói cách khác, luỹ thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp

Thuật toán

Tạo khoá: Mỗi thực thể tạo một khoá công khai và một khoá riêng tương ứng

1 Tạo một số nguyên tố p và phần tử sinh nhóm nhân Z*

P

2 Chọn một số nguyên a, 1  a  p-2, và tính a mod p

3 Khoá công khai của A là (p, , a); khoá riêng là a

Mã hoá: B mã hoá văn bản m gửi cho A

1 Thu được khoá công khai của A (p, , a)

2 Biểu diễn văn bản như một số nguyên m trong {0,1, ,p-1}

3 Chọn ngẫu nhiên một số nguyên k, 1kp-2

4 Tính   k mod p và   m (a ) kmod p

Trang 39

khai của A là (p = 2357,  = 2, a = 1185)

Mã hoá: Để mã hoá một văn bản m=2035, B chọn ngẫu nhiên một số nguyên k

= 1520 và tính =21520 mod 2357 = 1430,

 = 2035×11851520 mod 2357 = 697 B gửi  =1430 và  =697 cho A

Giải mã: Để giải mã, A thực hiện tính: m = 872*697 mod 2357 = 2035

Chú ý: Một bất lợi của mã hoá Elgamal là sự mở rộng của văn bản, bản mã có

thể dài gấp 2 lần so với bản rõ Mã hoá Elgamal là một trong những lược đồ mã

hoá sử dụng sự ngẫu nhiên trong tiến trình mã hoá Những nguyên tắc cơ bản đằng sau kỹ thuật mã hoá ngẫu nhiên là sử dụng tính ngẫu nhiên để tăng thêm sự

bảo mật bằng mật mã của tiến trình mã hoá theo một trong các phương thức sau:

1 Tăng dần khoảng trống trong bản rõ một cách phù hợp

2 Ngăn ngừa hoặc làm suy giảm sự có hiệu lực của sự tấn công bản rõ chọn trước thông qua ánh xạ một - nhiều từ bản rõ đến bản mã

Tính bảo mật của mã hoá Elgamal

Vấn đề bẻ khoá lược đồ mã hoá Elgamal, khôi phục m từ p, , a,  , và

 tương đương với giải quyết vấn đề Diff-Hellman Trên thực tế, lược đồ mã hoá Elgamal được xem như sự thay đổi khoá Diff-Hellman để quyết định khoá

ak

 , và việc mã hoá văn bản bằng tính nhân với khoá đó Vì lý do này, tính bảo mật của lược đồ mã hoá Elgamal được gọi là cơ sở trong vấn đề logarithm rời rạc trong Z*

P

Trang 40

2.2.4 Hệ mã MHK (Merkle -Hellman Knapsack)

Sơ đồ mã khoá công khai ba lô dựa trên cơ sở của bài toán tập con, quan điểm cơ bản là chọn một trường hợp của bài toán tổng con mà dễ dàng tìm lời giải, sau đó che giấu nó như một trường hợp của bài toán tổng con tổng quát khó

có hy vọng giải được Khoá được thiết lập ban đầu có thể dùng như khoá riêng, còn khoá được thiết lập sau khi biến đổi là khoá công khai Sơ đồ mã hoá MHK che giấu lời giải bằng phép nhân theo modulo và phép hoán vị

Định nghĩa một dãy siêu tăng là một dãy các số nguyên dương (b1,b2, ,

2 Chọn số nguyên ngẫu nhiên W 1WM-1 sao cho UCLN(W, M) = 1

3 Chọn một phép hoán vị ngẫu nhiên  của n số nguyên {1,2, ,n}

4 Tính ai = Wb(i) mod M với i = 1, 2, , n

5 Khoá công khai là (a1, a2, , an), khoá riêng là ( , M, W, (b1,b2, , bn))

Mã hoá: B mã hoá văn bản m gửi cho A

1 Thu được khoá công khai (a1, a2, , an) của A

2 Biểu diễn văn bản m như một chuỗi nhị phân có độ dài n, m=m1m2 mn

3 Tính số nguyên c = m1a1 + m2a2 + + mnan

4 Gửi bản mã c cho A

Giải mã: Để khôi phục bản rõ m từ c, cần thực hiện các công việc sau:

1 Tính d = W-1c mod M

Ngày đăng: 26/03/2021, 09:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm