Giáo trình Một số bài toán về an toàn thông tin trong giai đoạn kiểm phiếu điện tử - Trịnh Nhật Tiến
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Một số bài toán về an toàn thông tin trong giai đoạn kiểm phiếu điện tử - Trịnh Nhật Tiến", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_mot_so_bai_toan_ve_an_toan_thong_tin_trong_giai_d.pdf
Nội dung text: Giáo trình Một số bài toán về an toàn thông tin trong giai đoạn kiểm phiếu điện tử - Trịnh Nhật Tiến
- Bé gi¸o dôc vµ ®µo t¹o Tr•êng ®¹i häc d©n lËp h¶i phßng o0o MỘT SỐ BÀI TOÁN VỀ AN TOÀN THÔNG TIN TRONG GIAI ĐOẠN KIỂM PHIẾU ĐIỆN TỬ ®å ¸n tèt nghiÖp ®¹i häc hÖ chÝnh quy Ngµnh c«ng nghÖ th«ng tin Gi¸o viªn h•íng dÉn: PGS. TS Trịnh Nhật Tiến Sinh viªn: Nguyễn Việt Thịnh M· sè sinh viªn: 1013101015 H¶i Phßng, 7/2012 1
- LỜI CẢM ƠN Lời đầu tiên, em xin đƣợc gửi lời cảm ơn chân thành và sâu sắc nhất tới PGS.TS Trịnh Nhật Tiến – ngƣời Thầy luôn chỉ bảo, hƣớng dẫn hết sức nhiệt tình, giúp đỡ em trong suốt quá trình xây dựng đồ án. Em xin chân thành cảm ơn các Thầy, Cô giáo đã dạy dỗ em trong suốt quá trình học tập tại trƣờng Đại học Dân lập Hải Phòng. Những kiến thức các thầy cô truyền đạt sẽ mãi là hành trang để em vững bƣớc trong tƣơng lai. Xin đƣợc cảm ơn tới các bạn lớp CTL401 đã cung cấp cho mình những tài liệu quý báu để mình hoàn thành đồ án. Cảm ơn tới tất cả các bạn bè của mình đã luôn sát vai, tin tƣởng và giúp đỡ mình trong suốt những năm học qua. Cuối cùng, con xin đƣợc gửi lời biết ơn sâu sắc nhất tới Bố mẹ và những ngƣời thân trong gia đình, những ngƣời luôn dành cho con tình yêu, niềm tin và động viên con trong suốt quá trình học tập. Hải Phòng, tháng 7 năm 2012 Sinh viên: Nguyễn Việt Thịnh 2
- GIỚI THIỆU ĐỀ TÀI Đồ án tốt nghiệp này trình bày một số hiểu biết cơ bản về bỏ phiếu và bỏ phiếu điện tử, tình hình triển khai bỏ phiếu điện tử ở Việt Nam. Qua đó giúp ngƣời đọc hiểu thêm về quá trình kiểm phiếu, đồng thời cũng giúp hình dung đƣợc viễn cảnh bỏ phiếu điện tử ở Việt Nam. Đồ án cũng trình bày những kiến thức tổng quát về phƣơng pháp mã hóa khóa công khai, một phƣơng pháp đƣợc sử dụng rộng rãi trong việc mã hóa văn bản và chữ ký số. Cùng với chữ ký số, hệ thống PKI (Cơ sở hạ tầng khóa công khai) cũng đƣợc giới thiệu giúp ngƣời đọc hiểu đƣợc phần nào cốt lõi của việc đảm bảo an toàn thông tin trong giai đoạn kiểm phiếu điện tử. Phần chính của đồ án là nêu ra một số bài toán về an toàn thông tin trong giai đoạn kiểm phiếu điện tử. Phần này cũng phân tích kĩ các giải pháp và đƣa ra những phƣơng án có thể sử dụng để triển khai trong thực tế. 3
- MỤC LỤC LỜI CẢM ƠN GIỚI THIỆU ĐỀ TÀI MỤC LỤC CÁC KÍ HIỆU VIẾT TẮT CÁC KÍ HIỆU TOÁN HỌC Chương 1. CÁC KHÁI NIỆM CƠ BẢN 1.1.TỔNG QUAN VỀ BỎ PHIẾU ĐIỆN TỬ 1.1.1. Khái niệm về bỏ phiếu 1.1.2. Khái niệm bỏ phiếu điện tử 1.1.3. Các thành phần trong hệ thống bỏ phiếu điện tử 1.1.4. Các giai đoạn bỏ phiếu điện tử . 1.1.5. Thực trạng bỏ phiếu điện tử ở Việt Nam và thế giới 1.2. TỔNG QUAN VỀ AN TOÀN THÔNG TIN 1.2.1. Sự cần thiết của bảo đảm an toàn thông tin 1.2.2. Khái niệm an toàn thông tin 1.2.2.1. Khái niệm 1.2.2.2. Các yêu cầu an toàn bảo mật thông tin 1.2.2.3. Các nội dung an toàn thông tin 1.2.2.4. Các chiến lược bảo đảm an toàn thông tin 4
- 1.3. CÁC PHƢƠNG PHÁP BẢO VỆ THÔNG TIN . 1.4. PHƢƠNG PHÁP MÃ HÓA . 1.4.1. Tổng quan về mã hóa dữ liệu 1.4.2. Mã hóa 1.4.3. Hệ mã hóa đối xứng – cổ điển 1.4.3. Hệ mã hóa đối xứng DES 1.5. CHỮ KÝ SỐ 1.5.1. Định nghĩa 1.5.2. Phân loại “Chữ ký số” 1.5.3. Lịch sử 1.5.4. Các ưu điểm của chữ ký số 1/. Khả năng xác định nguồn gốc 2/. Tính toàn vẹn 3/. Tính không thể chối bỏ 4/. Thực hiện chữ ký số khóa công khai 1.5.5. Tình trạng hiện tại – pháp luật và thực tế . 1.5.6. Đăng ký, sử dụng và thẩm tra chữ ký số 1/. Các bƣớc mã hoá và ký 2/. Các bƣớc kiểm tra 1.5.7. Một vài thuật toán dùng trong chữ ký số 1/. Chữ ký số RSA 2/. Chữ ký số DSA 3/. Ký số Schnoor 4/. Chữ ký dùng một lần . 5/. Chữ ký không thể phủ định 5
- 1.6. HẠ TẦNG MẬT MÃ KHÓA CÔNG KHAI (PKI) 1.6.1. Tổng quan về PKI 1.6.2. Các thành phần của PKI 1/. Chứng nhận khóa công khai 2/. Phát hành chứng nhận số 1.6.3. Mục tiêu và các chức năng của PKI 1.6.4. Các dịch vụ PKI Chương 2. MỘT SỐ BÀI TOÁN VỀ AN TOÀN THÔNG TIN TRONG GIAI ĐOẠN KIỂM PHIẾU ĐIỆN TỬ 2.1.MỘT SỐ BÀI TOÁN 2.1.1. Bài toán thông gian giữa ngƣời kiểm phiếu và ứng viên 2.1.2. Bài toán thông gian giữa ngƣời ứng viên và cử tri 2.2.CÁCH GIẢI QUYẾT 2.2.1. Bảo vệ nội dung lá phiếu, phòng tránh xem trộm 2.2.2. Bảo vệ nội dung lá phiếu, phòng tránh sửa đổi trái phép 1). Chữ ký không thể phủ định 2). Chữ ký nhóm 3). Kỹ thuật trộn phiếu bầu . Chương 3. VẤN ĐỀ CHIA SẺ KHÓA BÍ MẬT . 1/. Sơ đồ chia sẻ bí mật sơ khai . 2/. Sơ đồ chia sẻ bí mật tầm thƣờng 3/. Sơ đồ chia sẻ bí mật có ngƣỡng giới hạn KẾT LUẬN DANH MỤC TÀI LIỆU THAM KHẢO 6
- CÁC KÝ HIỆU VIẾT TẮT CT Cử tri. ĐH Ban điều hành. ĐK Ban đăng ký. KT Ban kiểm tra KP Ban kiểm phiếu TT Thông tin RSA Tên 3 nhà khoa học: Ron Rivest, Adi Shamir, Leonard Adleman. ID Identify (Định danh) SSL Secure Sockets Layer CA Certificate Authority HTTP HyperText Transfer Protocol 7
- CÁC KÝ HIỆU TOÁN HỌC Zn Trƣờng hữu hạn với n phần tử. Siga Thuật toán ký số Ver Thuật toán kiểm tra chữ ký Blind(x) Thuật toán làm mù UnBlind(x) Thuật toán xóa mù Enc Mã hóa Ek Thuật toán mã hóa 8
- Chương 1. CÁC KHÁI NIỆM CƠ BẢN 1.1. TỔNG QUAN VỀ BỎ PHIẾU ĐIỆN TỬ 1.1.1. Khái niệm về bỏ phiếu Bỏ phiếu là việc ngƣời dùng phiếu để bày tỏ sự lựa chọn hay thái độ của mình trong cuộc bầu cử hoặc biểu quyết. Một cuộc bỏ phiếu thành công phải bảo đảm các tính chất: Quyền bỏ phiếu: chỉ ngƣời có quyền bầu cử mới đƣợc bỏ phiếu. Mỗi cử tri chỉ đƣợc bỏ phiếu một lần. Bí mật: không thể biết đƣợc lá phiếu nào đó là của ai, trừ cử tri của nó. Kiểm soát kết quả: có thể phát hiện đƣợc những sai sót trong quá trình bỏ phiếu. Cho đến nay các cuộc bỏ phiếu vẫn đƣợc thực hiện theo cách truyền thống, tuy nhiên với tốc độ phát triển của ngành công nghệ thông tin, đặc biệt là xu thế thực hiện “Chính phủ điện tử” thì việc “bỏ phiếu điện tử” thay thế phƣơng thức truyền thống là điều sẽ diễn ra trong tƣơng lai gần. 1.1.2. Khái niệm bỏ phiếu điện tử Ngƣời ta bỏ phiếu để bầu cử các chức vụ, chức danh hay để thăm dò dƣ luận về một kế hoạch, chính sách nào đó. Hiện nay có 2 loại bỏ phiếu chính. Bỏ phiếu trực tiếp tại hòm phiếu bằng các lá phiếu in trên giấy. Bỏ phiếu từ xa bằng các lá phiếu “số hóa” tạm gọi là các lá phiếu điện tử từ các máy tính cá nhân trên mạng, trên điện thoại di động Nó cũng đƣợc gọi là bỏ phiếu điện tử. Bỏ phiếu điện tử là bỏ phiếu bằng các phƣơng pháp điện tử. Các hệ thống bỏ phiếu điện tử cho phép cử tri sử dụng các kỹ thuật mã hóa, để giữ bí mật lá phiếu điện tử trƣớc khi chuyển đến hòm phiếu qua các kênh công khai. Cử tri có thể bỏ phiếu qua Internet, các máy bỏ phiếu tự động. 9
- 1.1.3. Các thành phần trong hệ thống bỏ phiếu điện tử 1/. Cử tri: Là ngƣời tham gia bỏ phiếu. Cử tri có quyền hợp lệ để bỏ phiếu, đồng thời là ngƣời giám sát cuộc bầu cử: kiểm tra xem lá phiếu của mình có đƣợc đếm không?. 2/. Ban điều hành (ĐH): Quản lý các hoạt động bỏ phiếu, trong đó có thiết lập danh sách cử tri cùng các hồ sơ của mỗi cử tri, quy định cơ chế định danh cử tri. 3/. Ban đăng ký (ĐK): Nhận dạng cử tri và cấp quyền bỏ phiếu cho cử tri, theo dõi cuộc bầu cử chống lại việc cử tri bỏ phiếu hai lần. Có hệ thống ký hỗ trợ. 4/. Ban kiểm tra (KT): Kiểm tra cử tri có hợp lệ không? Nội dung lá phiếu có hợp lệ không? (Vì là lá phiếu đã mã hóa nên ban kiểm phiếu không biết đƣợc lá phiếu có hợp lệ không, nên cần xác minh tính hợp lệ của lá phiếu trƣớc khi nó chuyển đến hòm phiếu). 5/. Ban kiểm phiếu (KP): Kiểm phiếu và thông báo kết quả bầu cử. Có hệ thống kiểm phiếu hỗ trợ. 6/. Hệ thống phân phối khóa tin cậy: Cung cấp khóa ký của ban ĐK, quá trình mã hóa và giải mã lá phiếu. 7/. Hệ thống ký: Giúp ban ĐK ký vào các định danh cử tri. 10
- 8/. Hệ thống kiểm phiếu: Giúp ban KP tính kết quả cuộc bầu cử. 9/. Bảng niêm yết công khai (BB): Giúp theo dõi quá trình bầu cử. Đây là kênh liên lạc công khai của tất cả các tành phần tham gia hệ thống bỏ phiếu điện tử. 1.1.4. Các giai đoạn bỏ phiếu điện tử Bỏ phiếu điện tử gồm 3 giai đoạn chính: Đăng ký, bỏ phiếu, kiểm phiếu và công bố kết quả. 1/. Giai đoạn đăng ký bỏ phiếu: Chuẩn bị các thành phần kỹ thuật của hệ thống bỏ phiếu cũng nhƣ cơ cấu tổ chức. Ban KP, ban ĐK, ban KT đƣợc chỉ định. Danh sách các cử tri cũng đƣợc thiết lập. Trong bƣớc này, quan trọng nhất là cơ chế định danh ngƣời gửi, dùng trong quá trình bỏ phiếu của cử tri. 2/. Giai đoạn bỏ phiếu: Các cử tri thực hiện bỏ phiếu. Các cử tri phải có một hình thức định danh tính hợp lệ của lá phiếu. Thêm vào đó, một số kỹ thuật mã hóa cần đƣợc áp dụng để bảo đảm tính toàn vẹn của lá phiếu. 3/. Giai đoạn kiểm phiếu và công bố kết quả: Ban KP sẽ tính toán kết quả dựa vào các lá phiếu đã thu thập, sau đó công bố kết quả. 11
- 1.1.5. Thực trạng bỏ phiếu điện tử ở Việt Nam và thế giới Việt Nam: Bỏ phiếu điện tử ở nƣớc ta mới chỉ dừng ở mục đích bầu chọn, bình chọn (bầu chọn Vịnh Hạ Long là di sản Thiên nhiên thế giới, bình chọn bài hát hay trên sóng truyền hình ) song chƣa thể triển khai vào bầu cử Quốc hội do còn nhiều hạn chế (vấn đề ngân sách, giáo dục ý thức cho ngƣời dân, quá trính phổ biến, huấn luyện phƣơng thức thực hiện cho các cấp, các bộ phận liên quan ). Đây rõ ràng là một khoảng trống khá lớn, nhất là việc kinh phí lắp đặt hệ thống máy bầu cử hay trở ngại trong khoảng cách vùng miền. Thế giới: Khái niệm bỏ phiếu điện tử (e-voting) không còn xa lạ gì đối với các nƣớc phát triển, nhất là ở Bắc Mỹ và Châu Âu. Tại Châu Á, chỉ có ba nƣớc đã từng thử nghiệm hệ thống bầu cử điện tử, đó là Hàn Quốc, Nhật Bản và Ấn Độ, những nƣớc có trình độ công nghệ phát triển cao. Tuy nhiên bầu cử điện tử tại ba nƣớc này vẫn chƣa đƣợc xem là thực sự thành công khi kết quả thu đƣợc từ những lá phiếu điện tử vẫn còn nhiều nghi vấn. Vấn đề lớn nhất chính là tính bảo mật của toàn hệ thống. Câu hỏi đặt ra là liệu có khả năng ai đó can thiệp vào những chiếc máy bầu cử hay chƣơng trình bầu cử trên internet để làm thay đổi kết quả hay không. Cần và Đủ: Đề cập đến khả năng thực hiện bầu cử điện tử, ở một khía cạnh nào đó cần đáp ứng hai điều kiện. Thứ nhất, điều kiện cần là phải xây dựng một hệ cơ sở dữ liệu cho tất cả ngƣời dân. Một ngƣời dân cần phải có một con số nhận diện duy nhất, chẳng hạn nhƣ số giấy chứng minh nhân dân, để nhà nƣớc có thể kiểm tra đƣợc số cử tri đi bầu. Hệ cơ sở dữ liệu này có thể ví nhƣ một cổng giao tiếp điện tử toàn quốc, là nơi có thể cung cấp thông tin của bất kì công dân nào khi truy xuất từ con số nhận diện của ngƣời đó. 12
- Điều này cũng giúp cho cơ quan tiến hành việc bầu cử rà soát tính hợp pháp của cử tri, trong trƣờng hợp có một số ngƣời bị tƣớc quyền bầu cử. Ngoài ra, hệ cơ sở dữ liệu này sẽ là tiền đề cho tất cả các hoạt động khác của một quốc gia, chẳng hạn nhƣ chính phủ điện tử (e-government), quốc hội điện tử (e-parliament), chính trị điện tử (e-politics) Thứ hai, điều kiện đủ là chính phủ phải định nghĩa đƣợc rõ ràng các quy trình trong bầu cử để có thể tin học hóa những quá trình đó. Không chỉ riêng trong bầu cử, các công ty quản lý hành chính khác cũng cần phải minh bạch trong quá trình thì mới có thể tiến hành tin học hóa - bƣớc đầu tiên của điện tử hóa công tác quản lý. Riêng trong bầu cử điện tử, các quy trình đó có thể là phân công cho ai nắm giữ và chịu trách nhiệm về kết quả bầu cử, phân chia cấp độ bầu cử giữa các cấp quận, huyện, hội đồng nhân dân và địa biểu quốc hội. 13
- 1.2. TỔNG QUAN VỀ AN TOÀN THÔNG TIN 1.2.1. Sự cần thiết của bảo đảm an toàn thông tin Ngày nay, sự suất hiện internet và mạng máy tính đã giúp cho việc trao đổi thông tin trở lên nhanh gọn, dễ dàng, Email cho phép ngƣời ta nhận hay gửi thƣ ngay trên máy tính của mình, E-business cho phép thực hiện các giao dịch buôn bán ngay trên mạng. Tuy nhiên lại phát sinh những vấn đề mới. Thông tin quan trọng nằm ở kho dữ liệu hay đang trên đƣờng truyền có thể bị trộm cắp, có thể bị làm sai lệch, có thể bị làm giả mạo. Điều đó làm ảnh hƣởng đến các tổ chức, các công ty hay cả một quốc gia. Những bí mật kinh doanh, tài chính là mục tiêu của các đối thủ cạnh tranh. Những tin tức về an ninh quốc gia là mục tiêu của các tổ chức tình báo trong và ngoài nƣớc. Theo số liệu của CERT (Computer Emegency Response Team: đội cấp cứu máy tính) số lƣợng các vụ tấn công trên máy internet ngày càng nhiều, quy mô của chúng mỗi ngày một lớn và phƣơng pháp tấn công ngày càng hoàn thiện. Khi trao đổi thông tin trên mạng, những tình huống mới nảy sinh: Ngƣời ta nhận đƣợc một bản tin trên mạng, thì lấy gì làm đảm bảo rằng nó là của đối tác gửi cho họ. Khi nhận đƣợc tờ Sec điện tử hay tiền điện tử trên mạng, thì có cách nào xác nhận rằng nó là của đối tác đã thanh toán cho ta. Tiền đó là tiền thật hay tiền giả. Thông thƣờng ngƣời gửi vản bản quan trọng phải ký phía dƣới. Nhƣng khi truyền trên mạng, văn bản hay giấy thanh toán có thể bị trộm cắp và phía dƣới nó có thể dán một chữ ký khác. Tóm lại với cách thức ký nhƣ cũ, chữ kỹ rất dễ bị giả mạo. 14
- Để giải quyết tình hình trên, vấn đề đẳm bảo an toàn thông tin (ATTT) đã đƣợc đặt ra trong lý luận cũng nhƣ thực tiễn. Thực ra vấn đề này đã có từ ngàn xƣa, khi đó nó chỉ có tên là “bảo mật”, mà kỹ thuật rõ đơn giản, chẳng hạn trƣớc khi truyền thông báo, ngƣời gửi và ngƣời nhận thỏa thuận một số từ ngữ mà ta quen thuộc gọi là “tiếng lóng” Khi có điện tín điện thoại ngƣời ta dùng mật mã cổ điển, phƣơng pháp chủ yếu là thay thế hay hoán vị các ký tự trong bản tin “gốc” để đƣợc bản tin “mật mã”. Ngƣời khác khó có thể đọc đƣợc. Với sự phát triển mạnh mẽ của công nghệ thông tin, an toàn thông tin đã trở thành một khoa học thực thụ vì có đất phát triển. 15
- 1.2.2. Khái niệm an toàn thông tin 1.2.1.1. Khái niệm An toàn thông tin nghĩa là thông tin đƣợc bảo vệ, các hệ thống và dịch vụ có khả năng chống lại những sự can thiệp, lỗi và những tai họa không mong đợi, các thay đổi tác động đến độ an toàn của hệ thống là nhỏ nhất. Hệ thống không an toàn là hệ thống tồn tại những điểm: thông tin bị rò rỉ ra ngoài - thông tin dữ liệu trong hệ thống bị ngƣời không đƣợc quyền truy nhập lấy và sử dụng, thông tin bị thay đổi - các thông tin trong hệ thống bị thay thế hoặc sửa đổi làm sai lệch một phần hoặc hoàn toàn nội dung Giá trị thực sự của thông tin chỉ đạt đƣợc khi thông tin đƣợc cung cấp chính xác và kịp thời, hệ thống phải hoạt động chuẩn xác thì mới có thể đƣa ra những thông tin có giá trị cao. Mục tiêu của an toàn bảo mật trong công nghệ thông tin là đƣa ra một số tiêu chuẩn an toàn và áp dụng các tiêu chuẩn an toàn này vào chỗ thích hợp để giảm bớt và loại trừ những nguy hiểm có thể xảy ra. Ngày nay với kỹ thuật truyền nhận và xử lý thông tin ngày càng phát triển và phức tạp nên hệ thống chỉ có thể đạt tới một mức độ an toàn nào đó và không có một hệ thống an toàn tuyệt đối. Ngoài ra khi đánh giá còn phải cân đối giữa mức độ an toàn và chất lƣợng của dịch vụ đƣợc cung cấp. Khi đánh giá độ an toàn thông tin cần phải dựa trên nội dung phân tích các rủi ro có thể gặp, từ đó tăng dần sự an toàn bằng cách giảm bớt những rủi ro. Các đánh giá cần hài hoà với đặc tính, cấu trúc hệ thống và quá trình kiểm tra chất lƣợng. 16
- 1.2.1.2. Các yêu cầu an toàn bảo mật thông tin. Ngày nay, với sự phát triển rất nhanh của khoa học công nghệ, các biện pháp tấn công ngày càng tinh xảo hơn, độ an toàn của thông tin có thể bị đe dọa từ nhiều nơi, theo nhiều cách khác nhau, chúng ta cần phải đƣa ra các chính sách đề phòng thích hợp. Các yêu cầu cần thiết của việc bảo vệ thông tin và tài nguyên: • Đảm bảo bí mật (Bảo mật) thông tin không bị lộ đối với ngƣời không đƣợc phép. • Đảm bảo tính tin cậy (Confidentiality): Thông tin và tài nguyên không thể bị truy cập trái phép bởi những ngƣời không có quyền hạn. • Đảm bảo tính toàn vẹn (Integrity): Thông tin và tài nguyên không thể bị sửa đổi, bị thay thế bởi những ngƣời không có quyền hạn. • Đảm bảo tính sẵn sàng (Availability): Thông tin và tài nguyên luôn sẵn sàng để đáp ứng sử dụng cho ngƣời có quyền hạn. • Đảm bảo tính không thể chối bỏ (Non-repudiation): Thông tin và tài nguyên đƣợc xác nhận về mặt pháp luật của ngƣời cung cấp. 1.2.1.3. Các nội dung an toàn thông tin Nội dung chính: • An toàn máy tính: là sự bảo vệ các thông tin cố định bên trong máy tính, là khoa học về bảo đảm an toàn thông tin trong máy tính • An toàn truyền tin: là sự bảo vệ thông tin trên đƣờng truyền tin(thông tin đƣợc truyền từ hệ thống này sang hệ thống khác), là khoa học bảo đảm an toàn thông tin trên đƣờng truyền tin. Nội dung chuyên ngành: • An toàn dữ liệu (data security) • An toàn cơ sở dữ liệu (database security) • An toàn hệ điều hành (operation system security) • An toàn mạng máy tính (network security) 17
- 1.2.1.4. Các chiến lược bảo đảm an toàn thông tin. Cấp quyền hạn tối thiểu: Nguyên tắc cơ bản trong an toàn nói chung là “hạn chế sự ƣu tiên”. Mỗi đối tƣợng sử dụng hệ thống (ngƣời quản trị mạng, ngƣời sử dụng ) chỉ đƣợc cấp phát một số quyền hạn nhất định đủ dùng cho công việc của mình. Phòng thủ theo chiều sâu: Nguyên tắc tiếp theo trong an toàn nói chung là “bảo vệ theo chiều sâu”. Cụ thể là tạo lập nhiều lớp bảo vệ khác nhau cho hệ thống. 18
- 1.3. CÁC PHƢƠNG PHÁP BẢO VỆ THÔNG TIN Các giải pháp bảo đảm an toàn thông tin Phương pháp che giấu, bảo đảm toàn vẹn và xác thực thông tin. • “Che” dữ liệu (mã hóa): thay đổi hình dạng dữ liệu gốc, ngƣời khác khó nhận ra. • “Giấu” dữ liệu: Cất giấu dữ liệu này trong môi trƣờng dữ liệu khác. • Bảo đảm toàn vẹn và xác thực thông tin(đánh giấu thông tin) Kỹ thuật: Mã hóa, hàm băm, giấu tin, ký số. . . Giao thức bảo toàn thông tin, giao thức xác thực thông tin, . . . Phương pháp kiểm soát lỗi vào ra của thông tin. • Kiểm soát, ngăn chặn các thông tin vào ra hệ thống máy tính. • Kiểm soát, cấp quyền sử dụng các thông tin trong hệ thống máy tính. • Kiểm soát, tìm diệt “sâu bọ” vào trong hệ thống máy tính Kỹ thuật: Mật khẩu, tƣờng lửa, mạng riêng ảo, nhận dạng, xác định thực thể, cấp quyền hạn. Phát hiện và xử lý các lỗ hổng trong an toàn thông tin. • Các “lỗ hổng” trong các thuật toán hay giao thức mật mã, giấu tin. • Các “lỗ hổng” trong các giao thức. • Các “lỗ hổng” trong các hệ điều hành. • Các “lỗ hổng” trong các ứng dụng. Phối hợp các phương pháp: Xây dựng các “hành lang”, “đường đi” an toàn cho thông tin gồm 3 phần: • Hạ tầng mật mã khóa công khai(PKI) • Kiểm soát nối vào – ra: Mật khẩu, tƣởng lửa, mạng riêng ảo, cấp quyền hạn. • Kiểm soát và xử lý các lỗ hổng. 19
- Các kỹ thuật bảo đảm an toàn thông tin - Kỹ thuật diệt trừ: Virus máy tính, chƣơng trình trái phép. - Kỹ thuật tƣờng lửa: Ngăn chặn truy cập trái phép, lọc thông tin không hợp pháp. - Kỹ thuật mạng riêng ảo: Tạo ra hành lang riêng cho thông tin “đi lại”. - Kỹ thuật mật mã: Mã hóa, kỹ số, các giao thức mật mã, chống chối cãi. - Kỹ thuật giấu tin: Che giấu thông tin trong môi trƣờng dữ liệu khác. - Kỹ thuật thủy ký: Bảo vệ bản quyền tài liệu số hóa. - Kỹ thuật truy tìm “dấu vết” kẻ trộm tin. Các công nghệ đảm bảo an toàn thông tin - Công nghệ chung: Tƣờng lửa, mạng riêng ảo, PKI(khóa côngkhai), thẻ thông minh. . . - Công nghệ cụ thể: SSL, TLS, PGP, SMINE . . . 20
- 1.4. PHƢƠNG PHÁP MÃ HÓA 1.4.1. Tổng quan về mã hóa dữ liệu Khái niệm về mã hóa. • thông tin “khó” ). . • . • hay giải mã • . . • ằm ƣ . Phân loại: Phân loại mã hóa theo đặc trƣng của khóa Có 2 loại: + Hệ mã hóa khóa bí mật. + Hệ mã hóa khóa công khai. 21
- a). Giới thiệu về mã hóa: Chúng ta biết rằng thông tin truyền đi trên mạng rất dễ bị trộm cắp. Để đảm bảo việc truyền tin an toàn, ngƣời ta thƣờng mã hóa thông tin trƣớc khi truyền đi. Việc mã hóa cần theo quy tắc nhất định. Hiện nay có 2 loại mật mã: hệ mật mã khoá bí mật và hệ mật mã khóa công khai . Hệ mật mã khóa bí mật (còn gọi là hệ mật mã đối xứng hay hệ mật mã cổ điển) dễ hiểu, dễ thực thi nhƣng độ an toàn không cao. Với các hệ mật mã khóa bí mật, nếu biết khóa lập mã hay thuật toán lập mã, ngƣời ta có thể tìm thấy ngay đƣợc bản rõ. Ngƣợc lại, các hệ mật mã khóa công khai (còn gọi là hệ mật mã phi đói xứng) cho biết khóa lập mã K và hàm lập mã ek, thì cũng rất khó tìm đƣợc cách giải mã. Và việc thám mã là rất khó khăn do độ phức tạp tính toán lớn. Hệ mã hóa đƣợc định nghĩa là bộ năm (P, C, K, E, D), trong đó: P là tập hữu hạn các bản rõ có thể. C là tập hữu hạn các bản mã có thể. K là tập hữu hạn các khoá có thể. E là tập các hàm lập mã. D là tập các hàm giải mã. Với khóa lập mã ke K, có hàm lập mã eke E, eke: P C, Với khóa giải mã kd K, có hàm giải mã dkd D, dkd: C P, sao cho dkd (eke (x)) = x, x P. Ở đây x đƣợc gọi là bản rõ, eke (x) đƣợc gọi là bản mã. 22
- Mã hóa và giải mã. Ngƣời gửi G eke (T) Ngƣời nhận N (có khóa lập mã ke) (có khóa giải mã kd) Tin tặc có thể trộm bản mã eke (T) b). Hệ mật mã khóa bí mật: Hệ mật mã khóa bí mật là hệ mật mã mà khóa mã hóa có thể dễ dàng tìm đƣợc từ khóa giải mã và ngƣợc lại. Trong rất nhiều trƣờng hợp, khoá mã hoá và khoá giải mã là giống nhau. Hệ mật mã khóa bí mật yêu cầu ngƣời gửi và ngƣời nhận phải thoả thuận một khoá trƣớc khi tin tức đƣợc gửi đi, khoá này phải đƣợc cất giữ bí mật. Độ an toàn của hệ này phụ thuộc vào khoá, nếu để lộ ra khoá này nghĩa là bất kỳ ngƣời nào cũng có thể mã hoá và giải mã thông báo. Các đặc điểm của hệ mật mã khóa bí mật: - Các phƣơng pháp mã hóa cổ điển đòi hỏi ngƣời mã hóa và ngƣời giải mã phải có cùng chung một khóa. - Khóa phải đƣợc giữ bí mật tuyệt đối, khóa phải đƣợc gửi đi trên kênh an toàn. Vì dễ dàng xác định một khóa nếu biết khóa kia. Phạm vi ứng dụng: Hệ mật mã đối xứng thƣờng đƣợc sử dụng trong môi trƣờng mà khóa có thể dễ dàng trao chuyển bí mật, chẳng hạn trong cùng một văn phòng. Nó cũng đƣợc dùng để mã hóa thông tin khi lƣu trên đĩa. 23
- Một số thuật toán mã hóa khóa đối xứng: - Hệ mã hóa dịch chuyển. - Hệ mã hóa thay thế. - Hệ mã hóa Affine. - Hệ mã hóa Vigenere. - Hệ mã hóa hoán vị. c). Hệ mật mã khóa công khai. Trong hệ mật mã khóa công khai, khóa mã hõa khác với khóa giải mã. Mặt khác, biết đƣợc khóa này không thể dễ dàng tìm đƣợc khóa kia, do vật khóa mã hóa có thể công khai. Một ngƣời bất kì có thể sử dụng khóa công khai để mã hóa tin tức, nhƣng chỉ ngƣời nào có đúng khóa giải mã thì mới có khả năng xem đƣợc bản rõ. Khóa mã hóa còn gọi là khóa công khai (public key), khóa giải mã là khóa bí mật (private key). Các đặc điểm của hệ mật mã khóa công khai: - Khi biết các điều kiện ban đầu, việc tìm ra cặp khóa công khai và bí mật phải đƣợc thực hiện một cách dễ dàng, tức là trong thời gian đa thức. - Ngƣời gửi G có khóa công khai, có bản tin P thì có thể tạo ra bản mã C nhanh gọn, nghĩa là cũng trong thời gian đa thức. - Ngƣời nhận N khi nhận đƣợc bản mã hóa C với khóa bí mật có thể giải mã bản tin dễ dàng trong thời gian đa thức. - Nếu kẻ phá hoại biết khóa công khai, và hơn nữa cả bản mã C thì việc tìm ra bản rõ P là bài toán khó, số phép thử là vô cùng lớn, không khả thi. - Hệ mật mã khóa công khai tiện lợi hơn hệ mật mã đối xứng ở chỗ thuật toán đƣợc viết một lần nhƣng có thể đƣợc sử dụng nhiều lần và cho nhiều ngƣời. Chỉ cần bí mật khóa riêng. 24
- - Nhƣợc điểm: Tốc độ mã hóa chậm. Tốc độ nhanh nhất của loại mật mã khóa công khai chậm hơn nhiều so với hệ mật mã khóa bí mật. Do đó ngƣời ta thƣờng kết hợp hai loại mã hóa để nâng cao tốc độ mã hóa và độ an toàn. Phạm vi ứng dụng: Hệ mật mã khóa công khai đƣợc sử dụng chủ yếu trên các mạng công khai nhƣ Internet, khi mà việc trao đổi khóa bí mật tƣơng đói khó khăn. Đặc trƣng nổi bật của hệ mã hóa khóa công khai là cả khóa công khai và bản mã C đều có thể gửi đi trên một kênh thông tin không an toàn. 25
- 1.4.2. Mã hóa Mã hóa là một trong những phƣơng pháp đƣợc sử dụng nhằm bảo vệ lá phiếu, phòng tránh sửa đổi Một số thuật toán mã hóa khóa công khai: - Mã hóa RSA. - Mã hóa Elgamal. Ví dụ về Hệ mã hóa khóa công khai RSA: 1). Sơ đồ (Rivest, Shamir, Adleman đề xuất năm 1977) - Tạo cặp khóa (bí mật, công khai) (a, b) : Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, đặt P = C = Zn Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b < (n), nguyên tố với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1 mod (n). Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b Zn , a*b 1 mod (n) . Với Bản rõ x P và Bản mã y C, định nghĩa: b Hàm Mã hoá: y = ek (x) = x mod n a Hàm Giải mã: x = dk (y) = y mod n 2). Ví dụ . Bản rõ chữ: R E N A I S S A N C E *Sinh khóa: Chọn bí mật số nguyên tố p= 53, q= 61, tính n = p * q = 3233, công khai n. Đặt P = C = Zn , tính bí mật (n) = (p-1). (q-1) = 52 * 60 = 3120. + Chọn khóa công khai b là nguyên tố với (n), tức là ƢCLN(b, (n)) = 1, ví dụ chọn b = 71. 26
- + Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1(mod (n)). Từ a*b 1 (mod (n)), ta nhận đƣợc khóa bí mật a = 791. * Bản rõ số: R E N A I S S A N C E (Dấu cách) 17 04 13 00 08 18 18 00 13 02 04 26 m1 m2 m3 m4 m5 m6 b 71 Theo phép lập mã: ci = mi mod n = mi mod 3233, ta nhận đƣợc: * Bản mã số: c1 c2 c3 c4 c5 c6 3106 0100 0931 2691 1984 2927 a 791 Theo phép giải mã: mi = ci mod n = ci mod 3233, ta nhận lại bản rõ. 3). Độ an toàn - Hệ mã hóa RSA là tất định, tức là với một bản rõ x và một khóa bí mật a, thì chỉ có một bản mã y. - Hệ mật RSA an toàn, khi giữ đƣợc bí mật khoá giải mã a, p, q, (n). Nếu biết đƣợc p và q, thì thám mã dễ dàng tính đƣợc (n) = (q-1)*(p-1). Nếu biết đƣợc (n), thì thám mã sẽ tính đƣợc a theo thuật toán Euclide mở rộng. Nhƣng phân tích n thành tích của p và q là bài toán “khó”. Độ an toàn của Hệ mật RSA dựa vào khả năng giải bài toán phân tích số nguyên dƣơng n thành tích của 2 số nguyên tố lớn p và q. 27
- Mã hóa đồng cấu. Khái niệm mã hóa đồng cấu: Giả sử cho trƣớc (G1, +) và (G2,*) là hai nhóm với các toán tử + và * lần lƣợt trong G1 và G2. Một ánh xạ f: G1→G2 đƣợc gọi là một phép đồng cấu (đồng cấu nhóm) nếu thỏa mãn điều kiện: f(g1+g2+ +gn) = f(g1)*f(g2)* .*f(gn). (với n≥2) Hệ mã hóa Elgamal có tính chất đồng cấu. Trong Hệ Elgamal P = Zp , chọn tập bản mã C ={(a, b) / a, b Zp }. a Chọn khóa bí mật là a Zp* , khóa công khai là h = g . Để mã hóa m, ta chọn số ngẫu nhiên bí mật k, k K bản mã là (x, y) = Ek (m) = ( g , h m). Tài liệu đƣợc giải mã là m = y/xa Vì y/xa = hkm/(gk)a = hkm/(ga)k = hkm/hk = m. Nhận xét: 1/. Hệ mã hóa Elgamal có tính chất đồng cấu vì: k1 k1 k2 k2 Ek1(m1) = (g , h m1), Ek2(m2) = (g , h m2). Thỏa mãn tính chất đồng cấu: k1 k2 k1 k2 k k k Ek1(m1) * Ek2(m2) = (g g , h h m1m2) = (g , h m1m2) = E (m1* m2). Với k = k1 + k2. 2/. Trong bài toán Elgamal trên thì hàm f chính là hàm Encrypt (Ek(m)). G1 chính là tập hợp các bản rõ, tạo thành nhóm với phép tính +. G2 chính là tập hợp các bản mã, tạo thành nhóm với phép tính *. +, * là phép cộng và nhân theo không gian modulo (). 28
- Ví dụ về Ứng dụng hệ mã hóa đồng cấu Elgamal cho loại bỏ phiếu có/ không Bài toán: Cần lấy ý kiến về một việc nào đó, cử tri phải ghi vào lá phiếu: đồng ý (1) hay không đồng ý (0). Nội dung lá phiếu đƣợc mã hoá và gửi về Ban kiểm phiếu. Vấn đề là Ban kiểm phiếu tính kết quả bỏ phiếu nhƣ thế nào, trong khi không biết nội dung từng lá phiếu ? (Vì chúng đã đƣợc mã hoá). Giải quyết: Cho dễ hiểu, chúng tôi trình bày cách giải quyết thông qua một ví dụ cụ thể. B1: Cử tri ghi ý kiến vào lá phiếu Giả sử có 4 cử tri tham gia bỏ phiếu là V1, V2, V3, V4. Lá phiếu tƣơng ứng của họ ghi: v1 = 0 (không đồng ý), v2 = 1 (đồng ý), v3 = 1, v4 = 0. Chọn phần tử sinh g =3, hệ mã hoá Elgamal đƣợc sử dụng với các khoá nhƣ sau: Khóa bí mật a = 2, khóa công khai h = ga = 32 = 9. Mỗi cử tri Vi, chọn khóa ngẫu nhiên bí mật k đề mã hóa lá phiếu m của mình thành (x, y) = (gk, hk m) B2: Cử tri mã hoá lá phiếu V1 mã hóa lá phiếu của mình nhƣ sau và gửi tới Ban kiểm phiếu: V1 chọn ngẫu nhiên k1 = 5, mã hóa v1 = 0 5 5 0 5 5 thành (x1, y1) = (3 , 9 * 3 ) = (3 , 9 ). V2 mã hóa lá phiếu của mình nhƣ sau và gửi tới Ban kiểm phiếu: V2 chọn ngẫu nhiên k2 = 3, mã hóa v2 = 1 3 3 1 3 3 thành (x2, y2) = (3 , 9 * 3 ) = (3 , 9 * 3). V3 mã hóa lá phiếu của mình nhƣ sau và gửi tới Ban kiểm phiếu: V3 chọn ngẫu nhiên k3 = 3, mã hóa v3 = 1 3 3 1 3 3 thành (x3, y3) = (3 , 9 * 3 ) = (3 , 9 * 3). V4 mã hóa lá phiếu của mình nhƣ sau và gửi tới Ban kiểm phiếu: V4 chọn ngẫu nhiên k4 = 7, mã hóa v4 = 0 7 7 0 7 7 thành (x4, y4) = (3 , 9 * 3 ) = (3 , 9 ). 29
- Bước 3: Ban kiểm phiếu tính kết quả Ban KP không cần giải mã từng lá phiếu, vẫn có thể tính đƣợc kết quả bỏ phiếu bằng cách tính nhân các lá phiếu đã đƣợc mã hóa: k1+k2 k1+k2 v1+v2 (x1, y1) * (x2, y2) = (x1x2, y1y2) = (g h , g ). Theo tính chất đồng cấu thì tích của phép nhân trên chính là kết quả bỏ phiếu. Cụ thể tích của 4 giá trị lá phiếu đã đƣợc mã hóa là: k1+k2+k3+k4 k1+k2+k3+k4 v1+v2+v3+v4 18 18 2 (X, Y) = (∏ixi , ∏iyi) = (g , h g ) = (3 , 9 * 3 ). Giải mã (X, Y) bằng cách tính: m = gv = Y/Xa = 918 *32/(318)2 = 32 Nhƣ vậy số phiếu đồng ý (ghi 1) là 2. 30
- 1.4.3. Hệ mã hóa đối xứng – cổ điển Khái niệm - Hệ mã hóa đối xứng đã đƣợc dùng từ rất sớm, nên còn đƣợc gọi là Hệ mã hóa đối xứng – cổ điển. Bản mã hay bản rõ là dãy các ký tự Lantin. - Lập mã: thực hiện theo các bƣớc sau: Bƣớc 1: nhập bản rõ ký tự: RÕ_CHỮ. Bƣớc 2: chuyển RÕ_CHỮ ==> RÕ_SỐ. Bƣớc 3: chuyển RÕ_SỐ ==> MÃ_SỐ. Bƣớc 4: chuyển MÃ _SỐ ==> MÃ_CHỮ - Giải mã: thực hiện theo các bƣớc sau. Bƣớc 1: nhập bản mã ký tự: MÃ_CHỮ. Bƣớc 2: chuyển MÃ_CHỮ ==> MÃ_SỐ Bƣớc 3: chuyển MÃ_SỐ ==> RÕ_SỐ. Bƣớc 4: chuyển RÕ_SỐ ==> RÕ_CHỮ Các hệ mã hóa cổ điển - Hệ mã hóa dịch chuyển: khóa có 1 chìa. - Hệ mã hóa Affine: khóa có 2 chìa. - Hệ mã hóa thay thế: khóa có 26 chìa. - Hệ mã hóa VIGENERE: khóa có m chìa - Hệ mã hóa HILL: khóa có ma trận chìa 31
- 1/. Hệ mã hóa dịch chuyển Sơ đồ Đặt P = C = K = Z26. Bản mã y và bản rõ x Z26. Với khóa k K, ta định nghĩa: Hàm mã hóa: y=ek(x) = (x+k)mod 26 Hàm giải mã: x=dk(y) = (y-k)mod 26 Độ an toàn Độ an toàn của mã dịch chuyển là rất thấp Tập khóa K chỉ có 26 khóa, nên việc phá khóa có thể thực hiện dễ dàng bằng cách thử kiểm tra từng khóa: k=1,2,3, ,26. 2/. Hệ mã hóa thay thế (Hoán vị toàn cục) Sơ đồ Đặt P = C = Z26. Bản mã y và bản rõ x Z26. Tập khóa K là tập mọi hoán vị trên Z26. Với khóa k = K, tức là 1 hoán vị trên Z26, ta định nghĩa: Mã hóa: y=e (x)= (x) Giải mã: x=d (y)= -1(y) Độ an toàn Độ an toàn của mã thay thế thuộc loại cao - Tập khóa K có 26! Khóa (>4.1026), nên việc phá khóa cố thể thực hiện bằng cách duyệt tuần tự 26! Hoán vị của 26 chữ cái. - Để kiểm tra tất cả 26! Khóa, tốn rất nhiều thời gian. Hiện nay với hệ mã này, ngƣời ta có phƣơng pháp thám mã khác nhanh hơn. 32
- 3/. Hệ mã hóa AFFINE Sơ đồ - Đặt P = C = Z26. Bản mã y và bản rõ x Z26. - Tập khóa K = {(a,b), với a,b Z26, UCLN(a,26)=1} - Với khóa k=(a,b) K, ta định nghĩa: Phép mã hóa y=ek(x)= (ax + b) mod 26 -1 Phép giải mã x=dk(y)= a (y-b) mod 26 Độ an toàn: Độ an toàn của Hệ mã hóa Affine: Rất thấp - Điều kiện UCLN(a,26)=1 để bảo đảm a có phần tử nghịch đảo a-1 mod 26, tức là thuật toán giải mã dk luôn thực hiện đƣợc. - Số lƣợng a Z26 nguyên tố với 26 là (26)=12, đó là 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 - Các số nghịch đảo theo (mod 26) tƣơng ứng là: 1, 9, 21, 15, 3, 19, 7, 23, 11, 5, 17, 25 - Số lƣợng b Z26 là 26 - Số khóa (a,b) có thể là 12*26 = 312. Rất ít - Nhƣ vậy việc dò tìm khóa mật khá dễ dàng. 4/. Hệ mã hóa VIGENRE Sơ đồ: m - Đặt P =C=K=(Z26) , m là số nguyên dƣơng, các phép toán thực hiện trong m (Z26) . m - Bản mã Y và bản rõ X (Z26) . Khóa k = (k1, k2, ,km) gồm m phầm tử. Mã hóa Y = (y1, y2, ,ym) = ek(x1, x2, , xm) = (x1 + k1, x2 + k2, , xm + km) mod 26 Giải mã X= (x1, x2, , xm) = dk(y1, y2, ,ym) = (y1 - k1, y2 - k2, , ym - km) mod 26 33
- Độ an toàn: Độ an toàn của mã VIGENERE là tƣơng đối cao Nếu khóa gồm m ký tự khác nhau, mỗi ký tự có thể đƣợc ánh xạ vào trong m ký tự có thể, do đó hệ mật này đƣợc gọi là thay thế đa biểu. Nhƣ vậy số khóa có thể có trong mật Vigenere là 26m. Nếu dùng phƣơng pháp “tấn công vét cạn”, thám mã phải kiểm tra 26m khóa. Hiện nay với hệ mã này, ngƣời ta có phƣơng pháp thám mã khác nhanh hơn. 5/. Hệ mã hóa hoán vị cục bộ Sơ đồ m Đặt P = C = K = (Z26) , m là số nguyên dƣơng. Bản mã Y và bản rõ X Z26. - Tập khóa K là tập tất cả các hoán vị của {1, 2, , m} - Với mỗi khóa k = K, k = (k1, k2, ,km) gồm m phần tử, ta định nghĩa: Mã hóa Y = (y1, y2, ,ym) = ek(x1, x2, , xm) = (xk(1), xk(2), , xk(m)) -1 -1 -1 Giải mã X = (x1, x2, , xm) = dk(y1, y2, ,ym) =(yk(1) , yk(2) , , yk(m) ) - Trong đó k-1 = -1 là hoán vị ngƣợc của . Độ an toàn - Nếu dùng phƣơng pháp “tấn công vét cạn”, thám mã phải kiểm tra số khóa có thể là: 1! + 2! + 3! + + m! trong đó m ≤ 26. - Hiện nay với hệ mã này, ngƣời ta có phƣơng pháp thám mã khác nhanh hơn. 34
- 6/. Hệ mã hóa HILL Sơ đồ m m - Đặt P = C = (Z26) ,m là số nguyên dƣơng. Bản mã Y và bản rõ X (Z26) . m*n -1 - Tập khóa K={ k (Z26) /det(k,26)=1}. (k phải có k ) - Mỗi khóa K là một chùm chìa khóa - Với mỗi k K, định nghĩa: Hàm lập mã: Y = (y1, y2, ,ym) = ek(x1, x2, , xm) = (x1, x2, , xm) * k -1 Hàm giải mã: X = (x1, x2, , xm) = dk(y1, y2, ,ym) = (y1, y2, ,ym) * k Độ an toàn Nếu dùng phƣơng pháp “tấn công vét cạn”, thám mã phải kiểm tra số khóa có thể với m lần lƣợt là 2, 3, 4, , trong đó m lớn nhất là bằng độ dài bản rõ. 35
- 1.4.4. Hệ mã hóa đối xứng DES 1/. Hệ mã hóa đối xứng DES a/. Giới thiệu - 15/05/1973, Ủy ban tiêu chuẩn quốc gia Mỹ đã công bố một khuyến nghị về hệ mã hóa chuẩn. Hệ mã hóa phải có độ an toàn cao. Hệ mã hóa phải đƣợc định nghĩa đầy đủ và dễ hiểu. Độ an toàn của hệ mã hóa phải nằm ở khóa, không nằm ở thuật toán. Hệ mã hóa phải sẵn sàng cho mọi ngƣời dùng ở các lĩnh vực khác nhau. Hệ mã hóa phải xuất khẩu đƣợc. - DES đƣợc IBM phát triển, là một cải biên của hệ mật LUCIPHER DES, nó đƣợc công bố lần đầu tiên vào ngày 17/03/1975. Sau nhiều cuộc tranh luận công khai, cuối cùng DES đƣợc công nhận nhƣ một chuẩn liên bang vào ngày 23/11/1976 và đƣợc công bố vào ngày15/01/1977. - Năm 1980, “cách dùng DES” đƣợc công bố. Từ đó chu kỳ 5 năm DES đƣợc xem xét lại một lần bởi Ủy ban tiêu chuẩn quốc gia Mỹ. b/. Quy trình mã hóa theo DES Giai đoạn 1: Bản rõ chữ === Bản rõ số (Dạng nhị phân) Chia thành Giai doạn 2: Bản rõ số === Các đoạn 64 bit rõ số Giai đoạn 3: 64 bit rõ số === 64 bit mã số Kết nối Giai đoạn 4: Các đoạn 64 bit mã số === Bản mã số (Dạng nhị phân) Giai đoạn 5: Bản mã số === Bản mã chữ 36
- 2/. Lập mã và giải mã a/. Lập mã Bản rõ là xâu x, bản mã là xâu y, khóa là xâu K, đều cố đọ dài 64 bit Thuật toán mã hóa DES thực hiện qua 3 bƣớc chính nhƣ sau: Bước 1: Bản rõ x đƣợc hoán vị theo phép hoán vị IP, thành IP (x). IP(x) = L0 R0, trong đó L0 là 32 bit đầu (Left), R0 là 32 bit cuối (Right). (IP(x) tách thành L0 R0). Bước 2 : Thực hiện 16 vòng mã hóa với những phép toán giống nhau Dữ liệu đƣợc kết hợp với khóa thông qua hàm f: Ll = Rl-1, Rl = Ll-1 f(Rl-1,k1) trong đó: là phép toán hoặc loại trừ của hai xâu bit (cộng theo modulo 26) k1, k2, ,k16 là các khóa con (48 bit) đƣợc tính từ khóa gốc K. -1 Bước 3: Thực hiện phép hoán vị ngƣợc IP cho xâu L16R16, thu dƣợc bản mã y. -1 y = IP ( L16, R16) b/. Quy trình giải mã - Quy trình giải mã của DES tƣơng tự nhƣ quy trình lập mã, nhƣng theo dùng các khóa thứ tự ngƣợc lại: k16, k15, , k1. - Xuất phát (đầu vào) từ bản mã y, kết quả (đầu ra) là bản rõ x. 37
- 3/. Độ an toàn của hệ mã hóa DES - Độ an toàn của hệ mã hóa DES có liên quan đến các bảng Sj: Ngoại trừ các bảng S, mọi tính toán trong DES đều tuyến tính, tức là việc tính phép hoặc loại trừ của hai đầu ra cũng giống nhƣ phép hoặc loại trừ của hai đầu vào, rồi tính toán đầu ra. Các bảng S chứa đựng nhiều thành phần phi tuyến của hệ mật, là yếu tố quan trọng nhất đối với độ mật của hệ thống. Khi mới xây dựng hệ mật DES, thì tiêu chuẩn xây dựng các hộp S không đƣợc biết đầy đủ. Và có thể các hộp S này có thể chứa các “cửa sập” đƣợc giấu kín. Và đó cũng là một điểm đảm bảo tính bảo mật của hệ DES - Hạn chế của DES chính là kích thƣớc không gian khóa: Số khóa có thể là 256, không gian này là nhỏ để đảm bảo an toàn thực sự. Nhiều thiết bị chuyên dụng đã đƣợc đề xuất nhằm phục vụ cho phép tấn công với bản rõ đã biết. Phép tấn công này chủ yếu thực hiện theo phƣơng pháp “vét cạn”. Tức là với bản rõ x và bản mã y tƣơng ứng (64 bit), mỗi khóa có thể đều đƣợc kiểm tra cho tới khi tìm đƣợc một khóa K thỏa mãn eK(x) = y. 38
- 1.5. CHỮ KÝ SỐ Trong các giao dịch truyền thống, chúng ta vẫn sử dụng giấy tờ, công văn cùng với chữ ký và con dấu. Việc giao dịch, trao đổi thông tin trên môi trƣờng internet cũng cần có một cơ chế tƣơng tự và chữ ký số đƣợc sử dụng để phục vụ cho môi trƣờng này. Khác với chữ ký thƣờng có thể phải mất nhiều thời gian để giám định khi cần thiết, chữ ký số có thể đƣợc giám định, xác nhận nhanh với các công cụ điện tử. Cũng thế, chứng thực số là một dịch vụ trên internet tƣơng tự nhƣ việc công chứng trên giấy tờ, văn bản thông thƣờng. Cụ thể, chữ ký số là một giải pháp công nghệ đảm bảo tính duy nhất cho một ngƣời khi giao dịch thông tin trên mạng đảm bảo các thông tin cung cấp là của ngƣời đó. Chữ ký số do ngƣời sử dụng tạo ra sau khi đƣợc nhà cung cấp dịch vụ cung cấp chứng thƣ số. Chứng thực số đƣợc sử dụng để các đối tác của ngƣời sử dụng biết và xác định đƣợc chữ ký, chứng thƣ của mình là đúng. 1.5.1. Định nghĩa Chữ ký số (một dạng chữ ký điện tử) là thông tin đƣợc mã hóa bằng khóa riêng (tƣơng ứng với một khóa công khai) của ngƣời gửi, đƣợc đính kèm theo văn bản nhằm đảm bảo cho ngƣời nhận định danh và xác thực đúng nguồn gốc, tính toàn vẹn của dữ liệu nhận đƣợc. Chữ ký số ra đời để khắc phục các thiếu sót của những hệ thống xác thực ra đời trƣớc đó. Cùng với sự phát triển của thƣơng mại điện tử, ngoài nhu cầu xác thực, các nhu cầu khác về bảo mật nhƣ toàn vẹn dữ liệu và chống từ chối cũng đều hết sức cấp thiết. Chữ ký số đóng một vai trò rất quan trọng trong trƣờng hợp xảy ra tranh chấp vì chữ ký số đƣợc cung cấp bởi hệ thống CA công cộng nhƣ FPT có giá trị pháp lý tƣơng đƣơng nhƣ chữ ký tay trong các giao dịch phi điện tử. 39
- Chữ kí số là một tập con của chữ kí điện tử. Khái niệm chữ kí điện tử- mặc dù thƣờng đƣợc sử dụng cùng nghĩa với chữ ký số nhƣng thực sự có nghĩa rộng hơn. Chữ ký điện tử chỉ đến bất kỳ phƣơng pháp nào (không nhất thiết là mật mã) để xác định ngƣời chủ của văn bản điện tử. Chữ ký điện tử bao gồm cả địa chỉ telex và chữ ký trên giấy đƣợc truyền bằng fax. Chữ ký số đƣợc phát triển dựa trên lý thuyết mật mã, cụ thể là kỹ thuật mật mã hoá công khai. Trong mô hình này, một hệ mã khoá công khai sẽ có hai chìa khoá: Một chìa khoá công khai (public key) và một chìa khoá bí mật (private key), mỗi chìa khoá là một số cố định đƣợc sử dụng trong quá trình mã hoá và giải mã; trong đó, khoá công khai đƣợc công bố rộng rãi cho mọi ngƣời và đƣợc sử dụng để mã hoá, còn khoá bí mật thì đƣợc giữ kín và đƣợc sử dụng để giải mã. Chữ ký số, tương tự như chữ ký bằng tay, nó phải có một số tính chất sau: - Có khả năng xác thực tác giả và thời gian ký. - Có khả năng xác thực nội dung tại thời điểm ký. - Các thành viên thứ ba có thể kiểm tra để xác thực khi xảy ra tranh chấp. Vì chức năng ký số bao hàm cả chức năng xác thực, dựa vào tính chất cơ bản này ta đƣa một số yêu cầu sau cho chữ ký số: - Chữ ký số phải là một mẫu bit phụ thuộc vào thông báo đƣợc ký. - Chữ ký phải dùng thông tin duy nhất nào đó từ ngƣời gửi, nhằm ngăn chặn tình trạng giả mạo và chối bỏ. - Tạo ra chữ ký số dễ dàng. - Dễ nhận ra và dễ kiểm tra chữ ký. 40
- - Khó làm giả chữ ký số bằng cách tạo ra một thông báo mới cho một chữ ký số hiện có, hoặc tạo ra một chữ ký giả cho một thông báo có trƣớc. - Trong thực tế cần phải sao lƣu bản sao của chữ ký số. Bảng so sánh chữ ký thông thƣờng và chữ ký số: Chữ ký thông thƣờng Chữ ký số Vấn đề ký 1 tài liệu Chữ ký chỉ là một phần Chữ ký số không gắn kiểu vật lý của tài liệu vật lý vào bức thông điệp nên thuật toán đƣợc dùng phải “không nhìn thấy” theo một cách nào đó trên bức thông điệp. Vấn đề kiểm tra Chữ ký đƣợc kiểm tra Chữ ký số có thể kiểm tra nhờ bằng cách só sánh nó dùng một thuật toán kiểm tra với chữ ký xác thực công khai. Nhƣ vậy, bất kỳ ai khác. Tuy nhiên, đây cũng có thể kiểm tra đƣợc chữ không phải là một ký số. Việc dùng chữ ký số an phƣơng pháp an toàn toàn có thể chặn đƣợc giả mạo. vì nó dễ bị giả mạo. Một điểm khác biệt cơ bản nữa giữa chữ ký thông thƣờng và chữ ký số, đó là việc sử dụng lại. Bản copy thông điệp đƣợc ký bằng chữ ký số thì đồng nhất với bản gốc, còn bản copy thông điệp đƣợc ký bằng chữ ký thông thƣờng lại có thể khác với bản gốc. Điều này có nghĩa là cần phải ngăn chặn một bức thông điệp ký số không bị dùng lại. 41
- Ví dụ: A ký một bức thông điệp xác nhận B rút 1000$ trong tài khoản của A, A chỉ muốn B làm điều đó một lần, do đó bản thân bức điện cần chứa thông tin thêm để ngăn nó bị dùng lại. Đối với các hoạt động trên môi trƣờng mạng ngày càng phát triển nhƣ hiện nay, chữ ký số là một hình thức đảm bảo tính pháp lý của các cam kết. Nó phải đáp ứng đƣợc các yêu cầu: - Ngƣời nhận có thể xác thực đƣợc đặc điểm nhận dạng của ngƣời gửi. - Ngƣời gửi sau này không thẻ chối bỏ nội dung của bản tin đã gửi. - Ngƣời gửi không thể bịa đặt thay đổi bản tin sau khi đã gửi. Sơ đồ chữ ký số Một sơ đồ chữ ký số thƣờng bao gồm hai thành phần chủ chốt là thuật toán ký và thuật toán xác minh. Một sơ đồ chữ ký số là một bộ 5 (P, A, K, S, V) thỏa mãn các điều kiện sau : P là một tập hợp các bản rõ có thể A là tập hữu hạn các chữ ký có thể K là tập hữu hạn các khóa có thể S là tập các thuật toán ký V là tập các thuật toán xác minh Với mỗi k thuộc K, tồn tại một thuật toán ký sigk thuộc S và một thuật toán xác minh verk thuộc V, trong đó sigk và verk là các ánh xạ : sigk là một ánh xạ từ P sang A và Verk là một ánh xạ từ A sang tập biểu diễn {True, False} thỏa mãn với mọi x thuộc P, y thuộc A, ver (x,y)= true nếu y=sig(x) và ver(x,y) = false nếu y khác sig(x). Chú ý: Ngƣời ta thƣờng dùng hệ mã hóa khóa công khai để lập: “Sơ đồ chữ ký số”. Ở đây khóa bí mật a dùng làm khóa “ký”, khóa công khai b dùng làm khóa kiểm tra “chữ ký”. 42
- Ngƣợc lại với việc mã hóa, dùng khóa công khai b để lập mã, dùng khóa bí mật a để giải mã. Điều này là hoàn toàn tự nhiên, vì “ký” cần giữ bí mật nên phải dùng khóa bí mật a để “ký”. Còn “chữ ký” là công khai cho mọi ngƣời biết, nên họ dùng khóa công khai b để kiểm tra. 1.5.2. Phân loại “Chữ ký số” Cách 1: Phân loại chữ ký theo đặc trưng kiểm tra chữ ký 1). Chữ ký khôi phục thông điệp: Là loại chữ ký, trong đó ngƣời gửi chỉ cần gửi “chữ ký”, ngƣời nhận có thể khôi phục lại đƣợc thông điệp, đã đƣợc “ký” bởi “chữ ký” này. 2). Chữ ký đi kèm thông điệp: Là loại chữ ký, trong đó ngƣời gửi cần gửi “chữ ký”, phải gửi kèm cả thông điệp đã đƣợc “ký” bởi “chữ ký” này. Ngƣợc lại, ngƣời nhận sẽ không có đƣợc thông điệp gốc. Ví dụ: Chữ ký Elgaman là chữ ký đi kèm thông điệp. Cách 2: Phân loại chữ ký theo mức an toàn. 1). Chữ ký “không thể phủ nhận”: Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là ngƣời gửi tham gia trực tiếp vào việc kiểm thử chữ ký. Điều đó đƣợc thực hiện bằng một giao thức kiểm thử, dƣới dạng một giao thức mời hỏi và trả lời. Ví dụ: Chữ ký không phủ định (Chaum-van Antverpen). 2). Chữ ký “một lần”: Chữ ký dùng một lần (one-time signature) là một khái niệm vẫn còn khá mới mẻ song rất quan trọng, đặc biệt là trong một số mô hình về bỏ phiếu điện tử và tiền điện tử. Để đảm bảo an toàn, “khóa ký” chỉ dùng 1 lần (one-time) trên 1 tài liệu. Ví dụ: Chữ ký một lần Lamport. Chữ ký Fail-Stop (Van Heyst & Pedersen). 43
- Cách 3: Phân loại chữ ký theo ứng dụng đặc trưng. Chữ ký “mù” (Blind Signature). Chữ ký “nhóm” (Group Signature). Chữ ký “bội” (Multy Signature). Chữ ký “mù nhóm” (Blind Group Signature). Chữ ký “mù bội” (Blind Multy Signature). 1.5.3. Lịch sử Con ngƣời đã sử dụng các hợp đồng dƣới dạng điện tử từ hàng trăm năm nay với việc sử dụng mã Morse và điện tín. Vào năm 1889, tòa án tối cao bang New Hampshire (Hoa Kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử. Tuy nhiên, chỉ với những phát triển vƣợt bậc của khoa học kỹ thuật nói chung và công nghệ thông tin nói riêng gần đây thì chữ ký điện tử mới đi vào cuộc sống một cách rộng rãi. Vào thập kỷ 1980, các công ty, tổ chức và một số cá nhân bắt đầu sử dụng máy fax để trao đổi các tài liệu quan trọng. Mặc dù chữ ký trên các tài liệu này vẫn thể hiện trên giấy tờ nhƣng quá trình truyền và nhận chúng hoàn toàn dựa trên tín hiệu điện tử. Hiện nay, chữ ký điện tử có thể bao hàm các cam kết gửi bằng thƣ điện tử, nhập các số định danh cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử với thiết bị màn hình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản ngƣời dùng (EULA) khi cài đặt phần mềm máy tính, ký các hợp đồng điện tử trực tuyến 44
- 1.5.4. Các ƣu điểm của chữ ký số Việc sử dụng chữ ký số mang lại một số lợi điểm sau: 1/. Khả năng xác định nguồn gốc Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà chỉ có ngƣời chủ của khóa có. Để sử dụng chữ ký số thì văn bản cần phải đƣợc mã hóa hàm băm (thƣờng có độ dài cố định và ngắn hơn nhiều so với văn bản) sau đó dùng khóa bí mật của ngƣời chủ khóa để mã hóa, khi đó ta đƣợc chữ ký số. Khi cần kiểm tra, bên nhận sử dụng khóa công khai của bên gửi thực hiện giải mã để lấy lại hàm băm và kiểm tra với hàm băm của văn bản nhận đƣợc. Nếu hai giá trị này khớp nhau thì bên nhận có thể tin tƣởng rằng văn bản đƣợc gửi đi từ ngƣời sở hữu khóa bí mật. Tất nhiên chúng ta không thể đảm bảo 100% là văn bản không bị giả mạo vì hệ thống vẫn có thể bị truy cập và giả mạo. Vấn đề là hàm băm thực đặc biệt quan trọng đối với các giao dịch tài chính. Chẳng hạn một chi nhánh ngân hàng gửi một gói tin A về trung tâm trong đó chứa thông tin về số tài khoản và số tiền gửi. Kẻ gian có thể thực hiện một giao dịch, sau đó bắt lấy nội dung gói tin A và truyền lại gói tin thu đƣợc nhiều lần hoặc thay đổi nội dung gói tin để thu lợi (tấn công truyền lại gói tin). 2/. Tính toàn vẹn Cả hai bên tham gia vào quá trình trao đổi thông tin đều có thể tin tƣởng là văn bản không bị sửa đổi trong quá trình truyền truyền vì nếu văn bản bị thay đổi dù là cực nhỏ thì giá trị hàm băm cũng sẽ thay đổi theo và việc này sẽ bị phát hiện. Nếu chỉ có quá trình mã hóa thì chỉ có thể ẩn nội dung của gói tin nhƣng không thể ngăn cản đƣợc việc thay đổi nội dung của nó. Một ví dụ cho trƣờng hợp này là tấn công đồng hình (homomorphism attack): tiếp tục ví dụ nhƣ ở trên, một kẻ lừa đảo gửi 500.000 Đồng vào tài khoản Z, sau đó bắt gói tin A mà chi nhánh gửi về trung tâm sau đó gửi gói tin B có giá trị hơn để sinh lợi. 45
- Đây là vấn đề bảo mật của chi nhánh đối với trung tâm ngân hàng không hẳn liên quan đến tính toàn vẹn của thông tin từ ngƣời gửi tới chi nhánh, bởi thông tin đã đƣợc băm và mã hóa để gửi đến đúng đích của nó tức chi nhánh ngân hàng, vấn đề còn lại vấn đề bảo mật của chi nhánh ngân hàng tới trung tâm của nó. 3/. Tính không thể chối bỏ Trong khi trao đổi thông tin, một bên có thể không nhận thông tin là do mình gửi đi. Để chống lại khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ ký số với thông tin. Khi có tranh chấp xảy ra, bên nhận sẽ dùng chữ ký này nhƣ một chứng cứ để bên thứ ba giải quyết. Tuy nhiên, bằng cách nào đó khóa bí mật vẫn có thể bị lộ và tính không thể chối bỏ cũng không phải là hoàn toàn. 4/. Thực hiện chữ ký số khóa công khai Chữ ký số khóa công khai dựa trên nền tảng mật mã hóa khóa công khai. Để có thể trao đổi thông tin trong môi trƣờng này, mỗi ngƣời sử dụng cần tạo, hoặc đăng ký cho mình cặp khóa: một khóa bí mật và một khóa công khai. Khóa bí mật phải đƣợc bảo quản kĩ lƣỡng, không đƣợc để lộ, khóa công khai sẽ đƣợc công bố rộng rãi qua nhà phân phối chứng thực khóa công khai hoặc qua đƣợc riêng. Nếu chỉ biết khóa công khai thì không thể dò ngƣợc lại đƣợc để tìm khóa bí mật. Quá trình này gồm ba thuật toán: • Thuật toán tạo khóa. • Thuật toán tạo chữ ký số. • Thuật toán thẩm tra chữ ký số. 46
- Xét ví dụ sau: Bob muốn gửi thông tin cho Alice và muốn Alice biết thông tin đó thực sự do chính Bob gửi. Bob gửi cho Alice bản tin kèm với chữ ký số. Chữ ký này đƣợc tạo ra với khóa bí mật của Bob. Khi nhận đƣợc bản tin, Alice sử dụng khóa công khai của Bob để kiểm tra nguồn gốc của văn bản. Bản chất của thuật toán tạo chữ ký đảm bảo nếu chỉ cho trƣớc bản tin, rất khó (gần nhƣ không thể) tạo ra đƣợc chữ ký của Bob nếu không biết khóa bí mật của Bob. Nếu quá trình kiểm tra cho kết quả đúng thì Alice có thể tin tƣởng rằng bản tin thực sự do Bob gửi. Thông thƣờng, Bob không mật mã hóa toàn bộ bản tin với khóa bí mật mà chỉ thực hiện với giá trị băm của bản tin đó. Điều này khiến việc ký trở nên đơn giản, thực hiện nhanh hơn và chữ ký ngắn hơn. Tuy nhiên nó cũng làm nảy sinh vấn đề khi hai bản tin khác nhau lại cho ra cùng một giá trị băm. Đây là điều có thể xảy ra khi sử dụng các thuật toán hàm băm mặc dù xác suất rất thấp. 1.5.5. Tình trạng hiện tại – luật pháp và thực tế. Tất cả các mô hình chữ ký số cần phải đạt đƣợc một số yêu cầu để có thể đƣợc chấp nhận trong thực tế: - Chất lƣợng của thuật toán: một số thuật toán không đảm bảo an toàn. - Chất lƣợng của phần mềm/ phần cứng thực hiện thuật toán. - Khóa bí mật phải đƣợc giữ an toàn. - Quá trình phân phối khóa công cộng phải đảm bảo mối liên hệ giữa khóa và thực tế sở hữu khóa là chính xác. Việc này thƣờng đƣợc thực hiện bởi hạ tầng khóa công cộng (PKI) và mối liên hệ khóa với ngƣời sở hữu đƣợc chứng thực bởi những ngƣời điều hành PKI. Đối với hệ thống PKI mở, nơi mà tất cả mọi ngƣời đều có thể yêu cầu sự chứng thực trên thì khả năng sai sót là rất thấp. Tuy nhiên các PKI thƣơng mại cũng đã gặp phải rất nhiều vấn đề có thể dẫn đến những văn bản bị ký sai. 47
- - Những ngƣời sử dụng (và phần mềm ) phải thực hiện các quá trình đúng thủ tục (giao thức). Chỉ khi các điều kiện trên đƣợc thỏa mãn thì chữ ký số mới là bằng chứng xác định ngƣời chủ (ngƣời có thẩm quyền ) của văn bản. Một số cơ quan lập pháp, dƣới sự tác động của các doanh nghiệp hy vọng thu lợi từ PKI hoặc với mong muốn là ngƣời đi tiên phong trong lĩnh vực mới, đã ban hành các điều luật cho phép, xác nhận hay khuyến khích việc sử dụng chữ ký số. Nơi đầu tiên thực hiện điều này là bang Utah (Hoa Kỳ). Tiếp theo sau là các bang Massachusetts và California. Các nƣớc khác cũng thông qua những đạo luật và quy định và cả Liên hợp quóc cũng có những dự án đƣa ra những bộ luật mẫu trong vấn đề này. Tuy nhiên, các quy định này lại thay đổi theo từng nƣớc tùy theo điều kiện và trình độ khoa học (mật mã học). Chính sự khác nhau này làm bối rối những ngƣời sử dụng tiềm năng, gây khó khăn cho việc kết nối giữa các quốc gia và do đó làm chậm lại tiến trình phổ biến chữ ký số. 1.5.6. Đăng ký, sử dụng và thẩm tra chữ ký số. 1/. Các bƣớc mã hoá và ký Bƣớc 1: Ở bƣớc này, sử dụng hàm băm để đảm bảo tính toàn vẹn của thông điệp. Các thuật toán hàm băm không làm thay đổi thông điệp mà chỉ dùng để tạo ra một chuỗi băm riêng của thông điệp. Sau đó bƣớc 3 sẽ sử dụng thông điệp và chuỗi băm của thông điệp để thực hiện mã hóa. Bƣớc này có thể dùng SHA hoặc MD5. Bƣớc 2: Mã hóa chuỗi băm của thông điệp bằng khóa bí mật của ngƣời gửi ở bƣớc 1. Quá trình này thƣờng dùng các thuật toán nhƣ RSA, DSA, 3DES, Kết quả thu đƣợc chính là chữ ký số của thông điệp ban đầu. Bƣớc 3: Sử dụng khóa công khai của ngƣời nhận để mã hoá thông tin cần gửi đi. 48
- Bƣớc 4: Gộp chữ ký số vào thông điệp đã đƣợc mã hoá và gửi đi. Nhƣ vậy sau khi đã ký nhận chữ ký số vào thông điệp đã đƣợc mã hoá, mọi sự thay đổi trên thông điệp sẽ bị phát hiện trong giai đoạn thẩm tra. Ngoài ra, việc ký nhận này cho phép ngƣời nhận xác định đƣợc chính xác ngƣời gửi tin. 49
- 2/. Các bƣớc kiểm tra Bƣớc 1: Ngƣời nhận dùng khóa bí mật của mình để giải mã thông tin nhận đƣợc gồm hai phần: phần thông điệp và phần chữ ký ngƣời gửi. Bƣớc 2: Dùng khóa công khai của ngƣời gửi (khoá này đƣợc phát hành qua một nhà chứng nhận khóa công khai) để giải mã chữ ký số của thông điệp, ta đƣợc chuỗi băm của thông điệp. Bƣớc 3: Dùng giải thuật MD5 (hoặc SHA) băm thông điệp đính kèm ta có chuỗi băm của thông điệp nữa. Bƣớc 4: So sánh kết quả thu đƣợc ở bƣớc 2 và 3 nếu trùng nhau, ta kết luận thông điệp này không bị thay đổi trong quá trình truyền và thông điệp này là của ngƣời gửi. 50
- 1.5.7. Một vài thuật toán dùng trong chữ ký số. 1/. Chữ ký số RSA Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vƣợt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công khai. RSA đang đƣợc sử dụng phổ biến trong thƣơng mại điện tử và đƣợc cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. Thuật toán đƣợc Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ ba chữ cái đầu của tên ba tác giả. 51
- Trƣớc đó, vào năm 1973, Clifford Cocks, một nhà toán học ngƣời Anh, đã mô tả một thuật toán tƣơng tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chƣa bao giờ đƣợc thực nghiệm. Tuy nhiên, phát minh này chỉ đƣợc công bố vào năm 1997 vì đƣợc xếp vào loại tuyệt mật. Thuật toán RSA đƣợc MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4.405.829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên, do thuật toán đã đƣợc công bố trƣớc khi có đăng ký bảo hộ nên sự bảo hộ hầu nhƣ không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu nhƣ công trình của Clifford Cocks đã đƣợc công bố trƣớc đó thì bằng sáng chế RSA đã không thể đƣợc đăng ký. Thuật toán RSA có hai khóa: khóa công khai và khóa bí mật. Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai đƣợc công bố rộng rãi cho mọi ngƣời và đƣợc dùng để mã hóa. Những thông tin đƣợc mã hóa bằng khóa công khai chỉ có thể đƣợc giải mã bằng khóa bí mật tƣơng ứng. Nói cách khác, mọi ngƣời đều có thể mã hóa nhƣng chỉ có ngƣời biết khóa bí mật mới có thể giải mã đƣợc. a). Tạo khóa Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ nhƣ Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bƣớc sau: • Chọn 2 số nguyên tố lớn p và q với p≠q , lựa chọn ngẫu nhiên và độc lập. • Tính: n = pq. • Tính: giá trị hàm số Ơle φ(n)=( p−1)(q−1). • Chọn một số tự nhiên e sao cho 1< e < φ(n) và là số nguyên tố cùng nhau với φ(n). • Tính: d sao cho de≡1(mod φ(n)). 52
- Khóa công khai bao gồm: • n, môđun • e, số mũ công khai (cũng gọi là số mũ mã hóa). Khóa bí mật bao gồm: • n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật • d, số mũ bí mật (cũng gọi là số mũ giải mã). Một dạng khác của khóa bí mật bao gồm: • p and q, hai số nguyên tố chọn ban đầu • d mod (p-1) và d mod (q-1) (thƣờng đƣợc gọi là dmp1 và dmq1) • (1/q) mod p (thƣờng đƣợc gọi là iqmp) Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dƣ Trung Quốc. Ở dạng này, tất cả thành phần của khóa bí mật phải đƣợc giữ bí mật. Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở đây, p và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính d khi biết e. Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ đƣợc xóa ngay sau khi thực hiện xong quá trình tạo khóa. b). Mã hóa Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành một số m < n theo một hàm có thể đảo ngƣợc (từ m có thể xác định lại M) đƣợc thỏa thuận trƣớc. Lúc này Bob có m và biết n cũng nhƣ e do Alice gửi. Bob sẽ tính c là bản mã hóa của m theo công thức: c = me mod n Hàm trên có thể tính dễ dàng sử dụng phƣơng pháp tính hàm mũ (theo môđun) bằng (thuật toán bình phƣơng và nhân). Cuối cùng Bob gửi c cho Alice. 53
- c). Giải mã Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm đƣợc m từ c theo công thức sau: m=cd mod n Biết m, Alice tìm lại M theo phƣơng pháp đã thỏa thuận trƣớc. Quá trình giải mã hoạt động vì ta có: cd ≡(me)d ≡med mod n. Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên: med ≡ m mod p và med ≡ m mod q Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dƣ Trung Quốc, ta có: med ≡ m mod pq. hay cd ≡ m mod n. d). Ví dụ Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn. Lấy: p = 61 - số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa) q = 53 - số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa) n = pq = 3233 - môđun (công bố công khai) e = 17 - số mũ công khai d = 2753 - số mũ bí mật Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là: encrypt(m) = me mod n = m17 mod 3233 với m là văn bản rõ. Hàm giải mã là: decrypt(c) = cd mod n = c2753 mod 3233 với c là văn bản mã. Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính: encrypt(123) = 12317 mod 3233 = 855 54
- Để giải mã văn bản có giá trị 855, ta thực hiện phép tính: decrypt(855) = 8552753 mod 3233 = 123 Cả hai phép tính trên đều có thể đƣợc thực hiện hiệu quả nhờ giải thuật bình phƣơng và nhân. e). Chuyển đổi văn bản rõ Trƣớc khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ (chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn. Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau: • Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tƣơng ứng • Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị m^e cũng nhận giá trị nhỏ (so với n). Nhƣ vậy phép môđun không có tác dụng và có thể dễ dàng tìm đƣợc m bằng cách khai căn bậc e của c (bỏ qua môđun). • RSA là phƣơng pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm ra bản rõ tƣơng ứng. Trên thực tế, ta thƣờng gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là nhóm vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ đƣợc gán giá trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và N. Tƣơng tự, một ký tự ASCII khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1. Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và 255^3 nhỏ hơn giá trị n chấp nhận đƣợc. Những bản mã này sẽ dễ dàng bị phá mã. Để tránh gặp phải những vấn đề trên, RSA trên thực tế thƣờng bao gồm một hình thức chuyển đổi ngẫu nhiên hóa m trƣớc khi mã hóa. Quá trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. 55
- Điều này làm giảm tính khả thi của phƣơng pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thể tƣơng ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi). Một số tiêu chuẩn, chẳng hạn nhƣ PKCS, đã đƣợc thiết kế để chuyển đổi bản rõ trƣớc khi mã hóa bằng RSA. Các phƣơng pháp chuyển đổi này bổ sung thêm bít vào M. Các phƣơng pháp chuyển đổi cần đƣợc thiết kế cẩn thận để tránh những dạng tấn công phức tạp tận dụng khả năng biết trƣớc đƣợc cấu trúc của bản rõ. Phiên bản ban đầu của PKCS dùng một phƣơng pháp đặc ứng (ad-hoc) mà về sau đƣợc biết là không an toàn trƣớc tấn công lựa chọn bản rõ thích ứng (adaptive chosen ciphertext attack). Các phƣơng pháp chuyển đổi hiện đại sử dụng các kỹ thuật nhƣ chuyển đổi mã hóa bất đối xứng tối ƣu (Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn công dạng này. Tiêu chuẩn PKCS còn đƣợc bổ sung các tính năng khác để đảm bảo an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA – RSA-PSS). 2/. Chữ ký số DSA Giải thuật ký số (Digital Signature Algorithm, viết tắt DSA) là chuẩn của chính phủ Mỹ hoặc FIPS cho các chữ ký số. a). Tạo khoá • Chọn số nguyên tố 160 bit q. • Chọn 1 số nguyên tố L bit p, sao cho p=qz+1 với số nguyên z nào đó, 512 ≤ L ≤ 1024, L chia hết cho 64. • Chọn h, với 1 1. (z = (p-1) / q) • Chọn x ngẫu nhiên, thoả mãn 0 < x < q. • Tính giá trị y = gx mod p. • Khoá công là (p, q, g, y). Khoá riêng là x. Hầu hết các số h đều thoả mãn yêu cầu, vì vậy giá trị 2 thông thƣờng đƣợc sử dụng. 56
- b). Ký • Tạo 1 số ngẫu nhiên với mỗi thông điệp, giá trị k thỏa mãn 0 1 và q là số nguyên tố suy ra g có bậc q. Ngƣời ký tính s=k−1(SHA−1(m)+xr)mod q Nhƣ vậy: k≡SHA−1(m)s-1 +xrs-1 ≡ SHA−1(m)w+xrw(mod q). Bởi vì g có bậc q chúng ta có gk ≡gSHA-1(m)w gxrw ≡ gSHA-1(m)w yrw ≡ gu1 yu2(mod p). Cuối cùng, tính đúng đắn của DSA suy ra từ r=(gk mod p)mod q = (gu1 yu2mod p)mod q=v. 57
- 3/. Ký số Schnoor Sơ đồ: Lấy G là nhóm con cấp q của Zn* với q là số nguyên tố. Chọn phần tử sinh g G sao cho bài toán logarit trên G là khó giải. Chọn x ≠ 0 làm khóa bí mật Tính y = gx làm khóa công khai Lấy H làm hàm băm không va chạm. * Ký: Giả sử cần ký trên văn bản m Chọn r ngẫu nhiên thuộc Zq Tính c = H (m,xr) Tính s = (r+xc) mod q Chữ ký Schorr là cặp (c,s) * Kiểm tra chữ ký: Với một văn bản m cho trƣớc, một cặp (c, s) đƣợc gọi là một chữ ký Schnorr hợp lệ nếu thỏa mãn phƣơng trình. c = H (m, gs * ys) 58
- 4/. Chữ ký dùng một lần. Sơ đồ chữ ký dùng một lần có nhiều ứng dụng, đặc biệt là một số ứng dụng trong các mô hình tiền điện tử. Sau đây là sơ đồ chữ ký dùng một lần của Schorr. Với sơ đồ này, ngƣời dùng trong cùng một hệ thống có thể chia sẻ một số ngẫu nhiên và 2 số nguyên tố p và q sao cho: q | (p-1), q ≠ 1 và gq = 1 mod q Chuẩn bị: Ngƣời dùng, giả sử Alice chọn Sk Zq ngẫu nhiên làm khóa bí mật. -sk Tính Pt= g mod p làm khóa công khai. Ký: Giả sử Alice cần ký trên thông điệp m Alice lấy ngẫu nhiên r Zq* r Tính x = g mod p, c = H (m||x), y= ( r + cSk )mod q Chữ ký trên thông điệp m là (c, y) Kiểm tra: Ver = true x = gr mod p và c = H (m || x) Nhận xét: Số r không đƣợc dùng quá một lần để tạo ra các chữ ký khác nhau. Alice sử dụng r để ký hai lân thông điệp m và m’, tạo ra hai chữ ký khác nhau là (c, y) và (c’, y’). Khi đó ta có: (y – y’) = [(r + cSk) – (r + c’Sk)] = Sk * (c – c’) Nhƣ vậy, nếu Alice sử dụng r quá một lần để ký cho hai thông điệp khác nhau, thì bất kỳ ai có hai thông điệp trên, đều có thể giải mã đƣợc khóa bí mật Sk. Vì vậy, sơ đồ chữ ký này đƣợc gọi là sơ đồ chữ ký dùng một lần. 59
- 5/. Chữ ký không thể phủ định Trong các sơ đồ chữ ký điện tử ta đã trình bày ở trên, việc kiểm thử tính đúng đắn của chữ ký là do ngƣời nhận tiến hành. Nhƣ vậy, cả văn bản cùng chữ ký có thể đƣợc sao chép và phát tán cho nhiều ngƣời mà không đƣợc phép của ngƣời gửi. Để tránh khả năng đó, ngƣời ta đƣa ra sơ đồ Chữ ký không thể phủ định đƣợc với một yêu cầu là chữ ký không thể đƣợc kiểm thử nếu không có sự hợp tác của ngƣời ký. Sự hợp tác đó đƣợc thể hiện qua giao thức kiểm thử ( hay xác nhận). Khi chữ ký đòi hỏi đƣợc xác nhận bằng một giao thức kiểm thử thì một vấn đề nảy sinh là làm sao có thể ngăn cản ngƣời ký chối bỏ một chữ ký mà anh ta đã ký? Để đáp ứng yêu cầu đó, cần có thêm một giao thức chối bỏ, thông qua giao thức này, ngƣời ký có thể chứng minh một chữ ký không phải là chữ ký của mình. Nếu anh ta từ chối không tham gia giao thức đó thì có bằng chứng là anh ta không chứng minh đƣợc chữ ký đó là giả mạo, tức là anh ta không chối bỏ đƣợc chữ ký của mình. Một sơ đồ Chữ ký không thể phủ định có 3 phần: • Một thuật toán ký. • Một giao thức kiểm thử (giao thức xác nhận). • Một giao thức chối bỏ. 60
- 1.6. HẠ TẦNG MẬT MÃ KHÓA CÔNG KHAI (PKI) Để triển khai đƣợc chữ ký số, việc cần thiết nhất là phải xây dựng đƣợc hệ thống PKI hoàn chỉnh, thuận tiện với ngƣời sử dụng. 1.6.1. Tổng quan về PKI Public Key Infrastructure (PKI) là một cơ chế để cho một bên thứ ba (thƣờng là nhà cung cấp chứng thực số) cung cấp và xác thực thông tin định danh các bên tham gia vào quá trình trao đổi thông tin. Cơ chế này cho phép gán cho mỗi ngƣời sử dụng trong hệ thống một cặp khóa bí mật/khóa công khai. Hệ thống này thƣờng bao gồm một phần mềm ở trung tâm, và các chi nhánh ở những địa điểm khác nhau của ngƣời dùng. Khoá công khai thƣờng đƣợc phân phối dựa trên cơ sở hạ tầng khóa công khai – hay Public Key Infrastructure. Khái niệm hạ tầng khoá công khai thƣờng đƣợc dùng chỉ toàn bộ hệ thống bao gồm cả nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan đồng thời với toàn bộ việc sử dụng các thuật toán mã hoá công khai trong trao đổi thông tin. Trên thực tế một hệ thông PKI không nhất thiết phải sử dụng phƣơng pháp mã hóa khóa công khai. 1.6.2. Các thành phần của PKI PKIs thông thƣờng bao gồm các thành phần chính sau: • Chứng thực và đăng ký mật mã đầu cuối. • Kiểm tra tính toàn vẹn của khoá công khai. • Chứng thực yêu cầu trong quá trình bảo quản các khoá công khai. • Phát hành khoá công khai. • Huỷ bỏ khoá công khai. • Duy trì việc thu hồi các thông tin về khoá công khai (CRL). • Đảm bảo an toàn về độ lớn của khoá. 61
- Kỹ thuật kết nối an toàn gói tin trên Internet 1/. Chứng nhận khóa công khai Mục tiêu của việc trao đổi khoá bất đối xứng là phát một cách an toàn khoá công khai từ ngƣời gửi (mã hoá) đến ngƣời nhận (giải mã). PKI hỗ trợ tạo điều kiện cho việc trao đổi khoá an toàn để đảm bảo xác thực các bên trao đổi với nhau. Chứng nhận khóa công khai đƣợc phát bởi nhà cung cấp chứng nhận số (CA). Để nhà cung cấp chứng nhận số cấp phát chứng nhận cho ngƣời dùng thì việc đầu tiên là phải đăng ký. Quá trình đăng ký gồm: đăng ký, kích hoạt, và chứng nhận của ngƣời dùng với PKI (CAs và RAs). 62
- Quá trình đăng ký nhƣ sau: • Ngƣời dùng đăng ký với CA hoặc RA. Trong quá trình đăng ký, ngƣời dùng đƣa ra cách nhận biết đến CA. CA sẽ xác thực đầu cuối, phát khóa công khai đến ngƣời sử dụng. • Các đầu cuối bắt đầu khởi tạo phase bằng cách tạo ra một cặp khóa và khóa công khai của cặp khóa đƣợc chuyển đến CA. • CA viết mật hiệu lên chứng nhận khóa công khai cùng với khóa bí mật để tạo một chứng nhận khóa công khai cho mật mã đầu cuối. Lúc này các ngƣời dùng có thể yêu cầu và nhận chứng thực khóa công khai từ ngƣời sử dụng khác. Chúng có thể sử dụng khóa công khai của CAs để giải mã chứng nhận khóa công khai để thu đƣợc khoá tƣơng ứng. Trong nhiều trƣờng hợp, CA sẽ cung cấp tất cả các dịch vụ cần thiết của PKI để quản lý các khóa công khai bên trong mạng. Tuy nhiên có nhiều trƣờng hợp CA có thể uỷ nhiệm làm công việc của RA. một số chức năng mà CA có thể uỷ nhiệm thay thế cho RA nhƣ: • Kiểm tra mật mã đầu cuối đã đăng ký khóa công khai với CA để có khóa bí mật mà đƣợc dùng để kết hợp với khóa công khai. • Phát cặp khóa đƣợc dùng để khởi tạo phase của quá trình đăng ký. • Xác nhận các thông số của khóa công khai. • Phát gián tiếp các danh sách thu hồi chứng nhận (CRL). 2/. Phát hành chứng nhận số CA dùng để cấp phát chứng nhận, xác thực PKI khách, và khi cần thiết thu hồi lại chứng nhận. CA đại diện cho nguồn tin cậy chính của PKI. Vì CA là yếu tố duy nhất trong PKI mà có thể phát chứng thực khóa công khai đến những ngƣời sử dụng. CA cũng luôn đáp ứng cho việc duy trì CRL. PKI không phải chỉ có một CA mà PKI có thể thiết lập nhiều CAs khác nhau. 63
- Các CA giúp dễ dàng xác nhận và lấy thông tin của những ngƣời thực hiện trao đổi thông tin với nhau. Các CA không chỉ chứng nhận cho những ngƣời dùng mà còn có thể chứng nhận những CA khác bằng cách cấp phát chứng nhận cho chúng. Những CA đã đƣợc chứng nhận lại có thể chứng nhận tiếp cho những CA khác, cứ nhƣ vậy cho đến khi các thực thể có thể ủy nhiệm cho nhau trong quá trình giao dịch. 1.6.3. Mục tiêu và các chức năng của PKI PKI cho phép những ngƣời tham gia xác thực lẫn nhau và sử dụng các thông tin từ các chứng thực khoá công khai để mã hoá và giải mã thông tin trong quá trình trao đổi. PKI cho phép các giao dịch điện tử đƣợc diễn ra đảm bảo tính bí mật, toàn vẹn và xác thực lẫn nhau mà không cần trao đổi các thông tin bảo mật từ trƣớc. Mục tiêu chính của PKI là cung cấp khoá công khai và xác định mối liên hệ giữa khoá và định dạng ngƣời dùng. Nhờ vậy, ngƣời dùng có thể sử dụng trong một số ứng dụng nhƣ : • Mã hoá Email hoặc xác thực ngƣời gửi Email. • Mã hoá hoặc chứng thực văn bản. • Xác thực ngƣời dùng ứng dụng. • Các giao thức truyền thông an toàn. 64
- 1.6.4. Các dịch vụ PKI PKI chủ yếu cung cấp dịch vụ xuất bản chứng chỉ và làm sao có thể truy nhập và sử dụng chúng. Giống nhƣ danh bạ điện thoại vậy, thƣ mục PKI liệt kê khóa công khai của tổ chức hay cá nhân. Các PKI giải quyết các bài toán quản lý khóa: tạo sinh, phân phối, xác thực và lƣu giữ. Một cơ sở hạ tầng khóa công khai PKI gồm: - Một ủy quyền chứng chỉ (CA) sinh và kiểm thử các chứng chỉ. - Một ủy quyền đăng ký (RA) thực hiện kiểm thử ủy quyền chứng chỉ trƣớc khi xuất bản chứng chỉ cho bên yêu cầu. - Dịch vụ thƣ mục (DS) trong đó các chứng chỉ (cùng với khóa công khaic ủa chúng) đƣợc lƣu giữ và có sẵn dùng (thƣờng là trong thƣ mục chuẩn ITU X.500) - Thực thể cuối (EE) giữ chứng chỉ: ngƣời dùng, tổ chức, ứng dụng - Các client dùng PKI để nhận chứng chỉ, hợp lệ chứng chỉ và chữ ký Một hệ thống quản lý chứng chỉ. Hệ thống quản lý chứng chỉ thường có các dịch vụ sau: - Hủy bỏ chứng chỉ: hủy chứng chỉ đã xuất bản, tạo và công khai danh sách chứng chỉ thu hồi - Hết hạn chứng chỉ và cập nhật - Dịch vụ bảo đảm có thể giải mã đƣợc các văn bản đã mã hóa trƣớc đó - Sao lƣu và phục hồi chứng chỉ: bảo đảm không bị mất thông tin - Dịch vụ hỗ trợ không thể thoái thác: việc sao lƣu và phục hồi khóa gây ra một kẽ hở cho hệ thống. Ai đó có thể lợi dụng điều này cho rằng đã có ngƣời khác truy nhập tới khóa đăng ký của họ, vì thế họ không hoàn toàn chịu trách nhiệm cho những giao dịch kiểu nhƣ thế, mặc dù những giao dịch này rõ ràng là do họ ký. Do đó cần thiết phải duy trì hai cặp khóa cho mỗi ngƣời dùng. Cặp khóa mã hóa có thể sao lƣu và phục hồi, ngƣợc lại thì cặp khóa ký không nên để cho ngƣời dùng sở hữu hoàn toàn. - Dịch vụ tem thời gian - Hợp lệ chứng chỉ thông qua chính sách. 65
- Chương 2. MỘT SỐ BÀI TOÁN VỀ AN TOÀN THÔNG TIN TRONG GIAI ĐOẠN KIỂM PHIẾU ĐIỆN TỬ 2.1. MỘT SỐ BÀI TOÁN 2.1.1. Bài toán thông gian giữa ngƣời kiểm phiếu và ứng viên Tình huống: Ứng viên “tác động” đến Ngƣời của Ban kiểm phiếu để họ sửa thông tin lá phiếu, nhằm có lợi cho ứng viên. Ở đây là sửa những lá phiếu không bầu cho ứng viên thành lá phiếu bầu cho ứng viên. 2.1.2. Bài toán thông gian giữa ứng viên và cử tri Tình huống: "Cử tri Bán phiếu bầu" Cử tri cho Ứng viên "Xem" lá phiếu của họ (Chiếu trên màn hình khi kiểm phiếu công khai). Ứng viên nhìn thấy lá phiếu Bầu cho mình, nên phải "Cám ơn" cử tri. 2.2. CÁCH GIẢI QUYẾT 2.2.2. Bảo vệ nội dung lá phiếu, phòng tránh sửa đổi trái phép Dùng "ngƣời trung thực" đứng giữa. Cử tri gửi lá phiếu, phải qua "ngƣời trung thực". "ngƣời trung thực" mã hoá lá phiếu lần 2, sau đó gửi vào hòm phiếu. Khi kiểm phiếu, chiếu lên màn hình. Cử tri không nhận ra lá phiếu của mình, nhằm tránh "Cử tri Bán phiếu bầu". Sau đây là các cách dùng để bảo vệ nội dung lá phiếu nhằm phòng tránh sửa đổi trái phép: 66
- 1). Chữ ký không thể phủ định Trong phần trƣớc ta đã trình bày một số sơ đồ chữ ký điện tử. Trong các sơ đồ đó, việc kiểm thử tính đúng đắn của chữ ký là do ngƣời nhận thực hiện. Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là để ngƣời gửi tham gia trực tiếp vào việc kiểm thử chữ ký. Điều đó đƣợc thực hiện bằng một giao thức kiểm thử, dƣới dạng một giao thức mời hỏi và trả lời. Giả sử tài liệu cùng chữ ký từ G gửi đến N. Khi N yêu cầu G cùng kiểm thử chữ ký, thì một vấn đề nảy sinh là làm sao để ngăn cản G chối bỏ một chữ ký mà anh ta đã ký, G có thể tuyên bố rằng chữ ký đó là giả mạo ? Để giải quyết tình huống trên, cần có thêm giao thức chối bỏ, bằng giao thức này, G có thể chứng minh một chữ ký là giả mạo. Nếu G từ chối tham gia vào giao thức đó, thì có thể xem rằng G không chứng minh đƣợc chữ ký đó là giả mạo. Nhƣ vậy sơ đồ chữ ký không phủ định đƣợc gồm 3 phần: một thuật toán ký, một giao thức kiểm thử, và một giao thức chối bỏ. Sơ đồ. (Chaum - van Antverpen). Chuẩn bị các tham số: Chọn số nguyên tố p sao cho bài toán log rời rạc trong Zp là khó. p = 2*q+1, q cũng là số nguyên tố. Gọi P là nhóm nhân con của Zp* theo q (P gồm các thặng dƣ bậc hai theo mod p). Chọn phần tử sinh g của nhóm P cấp q. * a Đặt P = A = P, K = (p, g, a, h): a Z q , h g mod p Thuật toán ký: Dùng khoá bí mật k’ = a để ký lên x: a Chữ ký là y = Sig k’ (x) = x mod p. 67
- Giao thức kiểm thử: Dùng khoá công khai k” = (p, g, h). Với x, y P, ngƣời nhận N cùng ngƣời gửi G thực hiện giao thức kiểm thử: * 1/. N chọn ngẫu nhiên e1, e2 Zq 2/. N tính c = y e1 h e2 mod p, và gửi cho G. 1 3/. G tính d c a mod q mod p và gửi cho N. 4/. N chấp nhận y là chữ ký đúng, nếu d x e1 g e2 mod p Giao thức chối bỏ: * 1/. N chọn ngẫu nhiên e1, e2 Zq 2/. N tính c = y e1 h e2 mod p, và gửi cho G. 3/. G tính và gửi cho N. 4/. N thử điều kiện d x e1 g e2 (mod p). * 5/. N chọn ngẫu nhiên f1, f2 Zq . 6/. N tính C y f1 * f2 mod p và gửi cho G. 1 7/. G tính D C a mod q mod p và gửi cho N. 8/. N thử điều kiện D x f1 g f2 (mod p). 9/. N kết luận y là chữ ký giả mạo nếu: (d * e2 ) f1 (D * f2 )e1 (mod p) (thay bằng g). 68
- Ví dụ Ký trên x = 229 Chuẩn bị các tham số: Chọn số nguyên tố p = 467 = 2 * q + 1, q = 233 cũng là số nguyên tố. Chọn phần tử sinh của nhóm P là g = 4, (P là nhóm nhân con cấp q của Zp*). * a Đặt P = A = P, K = (p, g, a, h): a Z q , h g mod p Chọn khóa mật a = 121. Khóa công khai h g a mod p = 4121 mod 467 = 422. Thuật toán ký: Dùng khoá bí mật k’ = a để ký lên x = 229: a 121 Chữ ký là y = Sig k’ (x) = x mod p = 229 mod 467 = 9. Giao thức kiểm thử: Dùng khoá công khai k” = (p, g, h) = (467, 4, 422). * 1/. N chọn ngẫu nhiên e1 = 48, e2 = 213 Zq 2/. N tính c = y e1 h e2 mod p = 116 và gửi cho G. 1 3/. G tính d c a mod q mod p = 235 và gửi cho N. 4/. N chấp nhận y là chữ ký đúng, nếu d x e1 g e2 mod p N thử điều kiện d x e1 g e2 mod p. Rõ ràng 235 229 48 * 4 213 (mod 467). N chấp nhận y = 9 đúng là chữ ký của G trên x = 229. 69
- Giao thức chối bỏ: Giả sử G gửi tài liệu x = 226 với chữ ký y = 183. Giao thức chối bỏ thực hiện: * 1/. N chọn ngẫu nhiên e1 = 47, e2 = 137 Zq 2/. N tính c = y e1 h e2 mod p = 306, và gửi cho G. 1 3/. G tính d c a mod q mod p = 184, và gửi cho N. 4/. N thử điều kiện d x e1 g e2 (mod p). Điều kiện trên không đúng vì 184 226 47 * 4 137 145 mod 467. N lại tiếp tục thực hiện bƣớc 5 của giao thức. * 5/. N chọn ngẫu nhiên f1 = 225, f2 = 19 Zq . 6/. N tính C y f1 * f2 mod p = 348, và gửi cho G. 1 7/. G tính D C a mod q mod p = 426, và gửi cho N. 8/. N thử điều kiện D x f1 g f2 (mod p). D = 426 trong khi x f1 g f2 (mod p) = 226 225 * 4 19 295 mod 467. Điều kiện 8 là đúng, nên N thực hiện bƣớc 9: 9/. N kết luận y là chữ ký giả mạo nếu: (d * e2 ) f1 (D * f2 )e1 (mod p) (thay bằng g). N tính giá trị của 2 vế đồng dƣ (d* -e2)f1 (184 * 4 -137)225 79 mod 467 D* -f2)e1 (426 * 4 -19)47 79 mod 467 Hai giá trị đó bằng nhau. Kết luận chữ ký y là giả mạo 70
- 2). Chữ ký nhóm Chữ ký nhóm là chữ ký điện tử đại diện cho một nhóm ngƣời hay một tổ chức. Các thành viên của một nhóm ngƣời đƣợc phép ký trên thông điệp với tƣ cách là ngƣời đại diện cho nhóm. a). Đặc điểm của chữ ký nhóm: Chỉ có thành viên trong nhóm mới có thể ký tên vào bản thông báo đó. Ngƣời nhận thông điệp có thể kiểm tra xem chữ ký đó có đúng là của nhóm đó hay không, nhƣng ngƣời nhận không thể biết đƣợc ngƣời nào trong nhóm đã ký vào thông điệp đó. Trong trƣờng hợp cần thiết chữ ký nhóm có thể đƣợc “mở” (có hoặc không có sự giúp đỡ của thành viên trong nhóm) để xác định ngƣời nào đã ký vào thông điệp đó. b). Một sơ đồ chữ ký nhóm gồm 3 thành phần cơ bản: • Ngƣời quản lý nhóm. • Các thành viên trong nhóm. • Ngƣời không thuộc nhóm. c). Một sơ đồ chữ ký nhóm thường bao gồm 5 thủ tục: KeyGen: Là thuật toán sinh khóa công khai của nhóm, khóa bí mật của ngƣời quản lý nhóm : KeyGen() → (pk,gmsk) trong đó pk là khóa công khai của nhóm (dùng để xác minh chữ ký của nhóm), gmsk là khóa bí mật của nhóm. Nếu số ngƣời trong nhóm là cố định thì KeyGen()→ (pk,gmsk,ski) trong đó ski là khóa bí mật của thành viên thứ i trong nhóm Join : Cho phép một ngƣời không phải là thành viên nhóm gia nhập nhóm. Khi gia nhập nhóm, thành viên i sẽ nhận đƣợc khóa bí mật của mình là ski, ngƣời quản lý nhóm sẽ lƣu thông tin của thành viên mới này. Sig : Khi thành viên i muốn ký thông điệp m đại diện cho nhóm, anh ta sẽ sử dụng thủ tục Sig: Sig(m, ski)→. Chữ ký trên thông điệp m là δ. 71
- Verify : Khi muốn kiểm tra chữ ký δ có phải là chữ ký đại diện cho nhóm trên thông điệp m sử dụng thủ tục Verify(m, δ,pk) = [False True] Open : Với mỗi chữ ký trên thông điệp m, ngƣời quản lý nhóm có thể xác định đƣợc thành viên nào đã ký vào thông điệp bằng việc sử dụng thủ tục Open(gmsk,m, δ), đầu ra của thủ tục là thông tin về thành viên đã ký. d). Hiệu quả của chữ ký nhóm: Khi đánh giá hiệu quả của một sơ đồ chữ ký nhóm ta cần quan tâm đến các thông số sau: • Độ lớn của khóa công khai nhóm γ (số bit) • Độ lớn của chữ ký trên một thông điệp (số bit) • Hiệu quả của các thủ tục Setup, Join, Sign, Verify, Open Tính ƣu việt của chữ ký nhóm chính là khả năng cho phép những nhóm ngƣời, những tổ chức giao tiếp với nhau, mà trong đó việc xác thực các thông tin gửi cho nhau thông qua các khóa công khai của mỗi nhóm. Nhờ đó các thành viên của nhóm có thể ký nặc danh đại diện cho nhóm của mình mà không thể để lộ thông tin cá nhân của mình, và chỉ có ngƣời quản trị mới có thể xác định đƣợc ngƣời ký. e). Việc đảm bảo an ninh với chữ ký nhóm: Không thể giả mạo: Chỉ có các thành viên trong nhóm mới có thể địa diện cho nhóm ký trên thông điệp của nhóm. Ngƣời ký nặc danh có thể tính toán đƣợc: Bất kỳ ai cũng có thể xác thực chữ ký một cách dễ dàng nhƣng không thể biết đƣợc ai là ngời ký (trừ ngƣời quản lý nhóm). Không thể chối bỏ: Một thành viên ký trên một thông điệp thì không thể chối bỏ chữ ký đó đƣợc. Ngƣời quản lý nhóm có thể xác định đƣợc ai đã ký vào thông điệp đó. 72
- Không thể phân tích quan hệ: Việc phân tích xem hai chữ ký của một thành viên trong nhóm khác nhau nhƣ thế nào là khó đối với các thành viên của nhóm trừ ngƣời quản lý nhóm. Ngăn chặn framing Attacks: Khi một số thành viên liên kết với nhau cũng không thể gải mạo chữ ký của thành viên khác trong nhóm. Ngăn chặn sự liên minh: Khi một số thành viên liên kết với nhau cũng không thể tạo ra một chữ ký hợp lệ mà không xác định đƣợc ngƣời ký. 3). Kỹ thuật trộn phiếu bầu Khi Bỏ phiếu từ xa, để đảm bảo bí mật, cử tri mã hóa nội dung lá phiếu. Ban KP phải giải mã mới biết đƣợc lá phiếu ghi gì. Có thể có một ngƣời hay một nhóm ngƣời trong Ban KP muốn biết nội dung cũng nhƣ tác giả của lá phiếu, điều đó có thể dẫn đến rắc rối cho cử tri sau này. Để tránh tình huống trên ngƣời ta dùng kỹ thuật trộn phiếu. Theo kỹ thuật này, danh tính của cử tri không cần phải ẩn đi. Do trộn các lá phiếu, ngƣời ta không thể biết đƣợc ai đã bỏ phiếu nào, vì liên kết giữa các cử tri và lá phiếu đã bị xáo trộn. Quy trình trộn phiếu: 1/. Có n cử tri với n lá phiếu B1, B2, , Bn. 2/. Mỗi cử tri mã hóa lá phiếu của mình, đạt đƣợc mã hóa ở mức 0 là: C10, C20, .,Cn0. 3/. Có t máy trộn S1, S2, , St. 4/. Máy trộn thứ i với đầu vào (C1(i-1), C2(i-1), ., Cn(i-1)) sẽ hoán vị ngẫu nhiên bí mật thứ tự của chúng, sau đó mã hóa thêm một bƣớc để đƣợc (C1i, C2i .,Cni ). 5/. Bƣớc mã hóa cuối cùng sẽ đạt đƣợc (C1t, C2t, ., Cnt). 6/. Kết quả của mỗi bƣớc đƣợc công bố trên bảng niêm yết công khai. 73
- Những vấn đề cần lưu ý khi sử dụng kỹ thuật trộn theo sơ đồ trên: - Việc mã hóa lá phiếu ở bƣớc 2: Cần có chứng minh không tiết lộ thông tin để chứng minh cho tính hợp lệ của lá phiếu nhằm đảm bảo rằng Ci0 quả thực là bản mã của Bi ở bƣớc 0. - Các máy trộn phải đảm bảo tính trung thực, không đƣợc tráo đổi các lá phiếu hoặc nhân đúp các lá phiếu. Để thực hiện điều này phải thiết kế các mạng trộn có thể xác minh. Có 2 kiểu mạng trộn: - Mạng trộn giải mã từng bƣớc, mỗi máy trộn sẽ tiến hành giải mã từng bậc một. Đến máy trộn cuối cùng, ta thu đƣợc bản rõ, tức nội dung lá phiếu. Mỗi máy trộn Sj có một cặp khóa bí mật, công khai (PKj, SKj) và một sơ đồ mã hóa công khai tùy chọn. Vì vậy mỗi bản mã hóa sẽ là: Ci0 = E(PK1, E(PK2, , E(PKt, Bt) )). Với E(PKt, Bt) là hàm mã hóa. Bt là lá phiếu của ngƣời thứ t. - Mạng trộn mã hóa sử dụng mã hóa Elgamal. Sơ đồ giai đoạn kiểm phiếu Trộn Ban kiểm phiếu các lá phiếu Hòm phiếu - Khôi phục khóa bí mật - Tính kết quả bầu cử - Công bố Kết quả lên bảng niêm yết công khai 74
- Chương 3. VẤN ĐỀ CHIA SẺ KHÓA BÍ MẬT Kỹ thuật Chia sẻ khóa bí mật (Secret Sharing) Sơ đồ chia sẻ bí mật không phải là một lĩnh vực mới mẻ của an toàn bảo mật thông tin, nhƣng hứa hẹn sẽ mang đến nhứng ứng dụng rộng khắp, quan trọng nhất là ứng dụng bỏ phiếu điện tử. Sơ đồ chia sẻ bí mật chính là phƣơng thức dùng đề chia một bí mật ra làm nhiều phần riêng biệt sau đó phân phối tới những ngƣời tham gia. Trong đó chỉ những ngƣời đƣợc chỉ định trƣớc mới có khả năng khôi phục bí mật bằng cách gộp những phần thông tin của họ, những ngƣời không đƣợc chỉ định sẽ không thu đƣợc bất kỳ thông tin gì về bí mật. Ý tưởng: thông tin quan trọng cần bí mật, không nên trao cho một ngƣời nắm giữ, mà phải chia thông tin đó thành nhiều mảnh và trao cho mỗi ngƣời một hay một số mảnh. Thông tin gốc chỉ có thể đƣợc xem lại, khi mọi ngƣời giữ các mảnh TT đều nhất trí. Các mảnh TT đƣợc khớp lại để đƣợc TT gốc. Yêu cầu: để thực hiện công việc trên, phải sử dụng một sơ đồ gọi là Sơ đồ chia sẻ bí mật. Khái niệm chia sẻ bí mật: Sơ đồ chia sẻ bí mật dùng để chia sẻ một thông tin cho m thành viên, sao cho chỉ những tập con hợp thức các thành viên mới có thể khôi phục lại thông tin bí mật, còn lại không ai có thể làm đƣợc điều đó. Ứng dụng: - Chia sẻ Thông tin mật thành nhiều mảnh. - Chia sẻ PassWord, Khoá mật thành nhiều mảnh. Mỗi nơi, mỗi ngƣời hay mỗi máy tính cất giấu 1 mảnh. 75
- Các thành phần của sơ đồ chia sẻ bí mật : Ngƣời phân phối bí mật (Dealer): Là ngƣời trực tiếp chia bí mật ra thành nhiều phần. Những ngƣời tham gia nhận dữ liệu từ Dealer (Participant) ký hiệu P Nhóm có khả năng khôi phục bí mật (Acess structure): Là tập con của P trong đó có các tập con có khả năng khôi phục bí mật. Các sơ đồ chia sẻ bí mật: 1/. Sơ đồ chia sẻ bí mật sơ khai Một sơ đồ chia sẻ bí mật đảm bảo tính bảo mật là sơ đồ trong đó bất kỳ ngƣời nào có ít hơn t phần dữ liệu (là số lƣợng đủ để khôi phục bí mật) không có nhiều thông tin hơn một ngƣời không có dữ liệu. Xem xét sơ đồ chia sẻ bí mật sơ khai trong đó cụm từ bí mật “password” đƣợc chia thành các phần “pa ”,”ss ”,”wo ” và ”rd ”. Một ngƣời không có một trong các phần bí mật đó chỉ biết mật khẩu có 8 chữ cái. Anh ta sẽ phải đoán mật khẩu đó từ 226 = 8 tỷ khả năng có thể xảy ra. Một ngƣời có một phần trong số 6 phần của mật khẩu đó sẽ phải đoán 6 chữ cái tƣơng đƣơng với 226 khả năng. Hệ thống này không phải là một sơ đồ chia sẻ bí mật bảo mật bởi vì một ngƣời tham gia có ít hơn t phần dữ liệu thu đƣợc một phần đáng kể thông tin về bí mật.Trong một sơ đồ bảo mật, mặc dù một ngƣời tham gia chỉ thiếu một phần dữ liệu cũng có thể sẽ đối mặt với 268 = 208 tỷ khả năng. 76
- 2/. Sơ đồ chia sẻ bí mật tầm thƣờng Có một vài sơ đồ chia sẻ bí mật trong đó yêu cầu tất cả những ngƣời tham gia phải cùng nhau khôi phục lại bí mật : Mã hóa bí mật thành một số nguyên S. Đƣa cho mỗi ngƣời tham gia i một số ngẫu nhiên ri (trừ một ngƣời). Đƣa cho ngƣời cuối cùng một số (S- r1 - r2 - - rn-1). Bí mật chính là tổng của các số của tất cả những ngƣời tham gia vào sơ đồ. Mã hóa bí mật bằng 1 byte S. Đƣa cho mỗi ngƣời tham gia i một byte bi (trừ một ngƣời), đƣa cho ngƣời cuối cùng byte (S XOR b1XOR b2 XOR bn-1) 3/. Sơ đồ chia sẻ bí mật có ngƣỡng giới hạn (Threshold secret sharing schemes) Mục tiêu của sơ đồ dạng này là chia một ít dữ liệu D ra thành nhiều phần D1, D2, ,Dn sao cho : Nếu biết k hoặc nhiều hơn các phần Di có thể dễ dàng suy ngƣợc lại D Nếu biết k-1 hoặc ít hơn các phần Di không thể suy ngƣợc lại D Sơ đồ này đƣợc gọi là sơ đồ ngƣỡng giới hạn (k,n). Nếu k = n thì tất cả mọi thành viên phải cùng nhau mới có thể suy ngƣợc lại bí mật. Dƣới đây là 2 sơ đồ bí mật dạng (k, n) 77
- Sơ đồ chia sẻ bí mật Blakley Hai đƣờng thẳng không song song nằm trong cùng một mặt phẳng cắt nhau tại một điểm duy nhất. Ba mặt phẳng không song song trong không gian cắt nhau tại một điểm duy nhất. Tổng quát hơn, bất kỳ n mặt siêu phẳng nào cũng cắt nhau tại một điểm cụ thể. Bí mật có thể đƣợc mã hóa là một đơn tọa độ của giao điểm đó. Nếu bí mật đƣợc mã hóa bằng cách sử dụng tất cả các tọa độ, mặc dù chúng là ngẫu nhiên, khi đó một ngƣời tham gia (ai đó sở hữu một hoặc nhiều các siêu mặt n chiều) thu đƣợc thông tin về bí mật do anh ta biết nó nhất định phải nằm trên mặt mà anh ta sở hữu. Nếu một ngƣời trong cuộc mà thu đƣợc nhiều thông tin hơn một ngƣời ngoài cuộc về bí mật, khi đó hệ thống này không còn bảo mật nữa. Nếu chỉ có một trong số các tọa độ đƣợc sử dụng, khi đó một ngƣời trong cuộc không biết về bí mật hơn một ngƣời ngoài cuộc (thí dụ:Bí mật phải nằm trên trục x trong hệ trục tọa đồ Decac). Mỗi ngƣời tham gia đƣợc đƣa đủ thông tin để định nghĩa một siêu mặt; bí mật đƣợc khôi phục bằng cách tính toán điểm giao nhau của các mặt và lấy một tọa độ cố định của giao điểm đó. Sơ đồ của Blakley trong hệ tọa độ không gian 3 chiều: Thông tin của mỗi ngƣời tham gia là một mặt phẳng và bí mật chính là giao điểm của 3 mặt phẳng đó. Thông tin của 2 ngƣời không đủ để chỉ ra đƣợc bí mật mặc dù chúng đã thu hẹp đƣợc phạm vi của bí mật là 1 điểm nằm trên giao tuyến của 2 mặt phẳng đã biết. Sơ đồ của Blakley có hiệu quả không gian ít hơn sơ đồ của Shamir dƣới đây; trong khi với sơ đồ của Shamir, mỗi một phần chia chỉ lớn bằng bí mật ban đầu. Các phần chia của Blakley lớn hơn t lần, với t là số ngƣời tham gia vừa đủ thu đƣợc bí mật. Sơ đồ của Blakley có thể đƣợc thu gọn bằng cách giới hạn mặt nào có thể sử dụng làm phần chia. Kết quả thu đƣợc sẽ là một sơ đồ tƣơng đƣơng với sơ đồ của Shamir. 78
- Sơ đồ ngƣỡng Shamir Ý tƣởng về sơ đồ ngƣỡng giới hạn của Shamir dựa trên tính chất: Hai điểm có thể định nghĩa một đƣờng thẳng, 3 điểm định nghĩa đƣợc 1 parabol, 4 điểm định nghĩa đƣợc một hình lập phƣơng, cứ nhƣ thế một cách tổng quát cần n+1 điểm để định nghĩa một đa thức bậc n. Sơ đồ chia sẻ ngƣỡng A(t, m) Cho t, m nguyên dƣơng, t ≤ m. Sơ đồ ngƣỡng A (t, m) là Phương pháp phân chia bí mật K cho một tập gồm m thành viên, sao cho t thành viên bất kỳ có thể tính đƣợc K, nhƣng không một nhóm gồm (t-1) thành viên nào có thể làm đƣợc điều đó. Ngƣời phân chia các mảnh khóa không đƣợc nằm trong số m thành viên trên. Ví dụ : có m = 3 thủ quỹ giữ két bạc. Hãy xây dựng hệ thống sao cho bất kì t = 2 thủ quỹ nào cũng có thể mở đƣợc két bạc, nhƣng từng ngƣời một riêng rẽ thì không thể. Đó là sơ đồ ngƣỡng A (2,3). Sơ đồ ngƣỡng Shamir 1979 : Bài toán: Chia khóa bí mật K trong Zp thành t mảnh, phân cho mỗi ngƣời giữ 1 mảnh, t ≤ m T thành viên “khớp t mảnh” sẽ nhận đƣợc K Khởi tạo: Chọn số nguyên tố p. 1. D chọn m phần tử xi khác nhau, ≠ 0 trong Zp, 1≤ i ≤ m (yêu cầu: m < p,Tl: xi khác nhau, ≠ 0 trong Zp ). D trao xi cho thành viên Pi . Giá trị xi là công khai. 79
- Phân phối mảnh khoá K Zp 2. D chọn bí mật (ngẫu nhiên,độc lập) t-1 phần tử Zp là a1, , at-1. 3. Với 1≤ i ≤ m, D tính: yi = P(xi), t -1 j P(x) = K + ∑j=1 aj x mod p 4. Với 1≤ i ≤ m, D sẽ trao mảnh yi cho Pi . Khôi phục khoá K từ t thành viên Giải hệ phương trình tuyến tính t ẩn, t phương trình Vì P(x) có bậc lớn nhất là (t-1) nên ta có thể viết: 1 2 t-1 P(x) = K + a1 x + a2 x + + at-1 x Các hệ số K, a1, ,at-1 là các phần tử chƣa biết của Zp, a0= K là khoá. Vì yij = P (xi j ), nên có thể thu đƣợc t phƣơng trình tuyến tính t ẩn a0, a1, ,at-1, Nếu các phƣơng trình độc lập tuyến tính thì sẽ có một nghiệm duy nhất và ta đƣợc giá trị khoá a0 = K. Chú ý: các phép tính số học đều thực hiện trên Zp. 80
- Ví dụ: Chia mảnh khóa K Khoá K = 13 cần chia thành 3 mảnh cho 3 ngƣời P1, P3, P5. 1. Chọn số nguyên tố p =17, chọn m = 5 phần tử xi = i trong Zp , i =1, 2, 3, 4, 5. D trao giá trị công khai xi cho Pi . 2. D chọn bí mật, ngẫu nhiên t -1 = 2 phần tử trong Zp a1 =10, a2 = 2. 3. D tính yi = P(xi), 1 ≤ i ≤ m, trong đó: t-1 j 2 P(x)=K + ∑ j=1 aj xj (mod p) = 13 + a1 x + a2 x (mod 17). 2 2 y1 = P(x1 ) = P(1) = 13 + a1.1 + a2.1 (mod 17) = 13 + 10.1 + 2 .1 (mod 17) = 8 2 2 y3 = P(x3 ) = P(3) = 13 + a1.3 + a2.3 (mod 17) = 13 + 10.3 + 2 .3 (mod 17) = 10 2 2 y5 = P(x5 ) = P(5) = 13 + a1.5 + a2.5 (mod 17) = 13 + 10.5 + 2 .5 (mod 17) = 11 4. D trao mảnh yi cho Pi . Khôi phục khoá K B ={P1, P3, P5} cần kết hợp các mảnh khóa của họ: y1 =8, y3 = 10, y5 = 11, để khôi phục lại khóa K. Theo sơ đồ khôi phục khóa K, yij = P(xij), 1≤ j ≤ t. Thay x1 = 1, x3 = 3, x5 = 5 vào 2 P(x) = a0 + a1 x + a2 x (mod 17), a0 = K. ta nhận đƣợc 3 phƣơng trình với 3 ẩn số a0 , a1, a2. 2 y1 = P(x1) = P(1) = a0 + a1.1 + a2.1 = 8(mod 17). 2 y3 = P(x3) = P(3) = a0 + a1.3 + a2.3 =10(mod 17). 2 y5 = P(x5) = P(5) = a0 + a1.5 + a2.5 =11(mod 17). Giải hệ 3 phƣơng trình tuyến tính trong Z17, nghiệm duy nhất là: a0 =13, a1=10, a2=2. Khoá đƣợc khôi phục là: K= a0 =13. 81
- Ứng dụng Trong việc giữ khóa két bạc: Không nên trao khoá két bạc cho một ngƣời duy nhất. Khoá phải đƣợc chia nhỏ thành nhiều mảnh và trao cho mỗi thành viên một mảnh. Trong bỏ phiếu điện tử: Không thể tin hoàn toàn vào tất cả các thành viên Ban kiểm phiếu. Vì vậy, lá phiếu nên chia thành nhiều mảnh và trao cho mỗi Kiểm phiếu viên một mảnh của lá phiếu. Trong lƣu trữ các khóa bí mật: Khoá bí mật và quan trọng không nên lƣu trữ tại một Server. Nó phải đƣợc chia nhỏ và lƣu trữ tại nhiều máy trạm. 82
- KẾT LUẬN: Đồ án tốt nghiệp đã thực hiện đƣợc những nội dung chính sau: 1. Tìm hiểu một số phƣơng pháp bảo vệ thông tin: - Mã hóa dữ liệu - Chữ ký số - Hạ tầng mật mã khóa công khai (PKI) 2. Tìm hiểu một số bài toán về an toàn thông tin trong giai đoạn kiểm phiếu điện tử. 3. Tìm hiểu về vấn đề "Chia sẻ bí mật". 83
- DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt. 1. GS Phan Đình Diệu, Giáo trình Lý thuyết Mật Mã & An toàn thông tin, NXB Đại học quốc gia Hà nội 2006. 2. PGS.TS Trịnh Nhật Tiến, Giáo trình An toàn dữ liệu, 2008. 3. PGS.TS Trịnh Nhật Tiến, ThS. Trƣơng thị Thu Hiền, “Mã hóa đồng cấu và ứng dụng”, ĐHQG Hà Nội, 10/2003. 4. ữ_ký_số ã_hóa Tiếng Anh. 1. Zuzana Rjaskova, Electronic Voting Schemes, 2002. 2. Adi Shamir, “How to share a secret”, Communications of the ACM, 1979. 84