Đồ án tốt nghiệp: 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ử

84 14 0
Đồ án tốt nghiệp: 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ử

Đ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

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.

Bộ giáo dục đào tạo Tr-ờng đại học dân lập hải phòng -o0o - MỘT SỐ BÀI TỐN VỀ AN TỒN THƠNG TIN TRONG GIAI ON KIM PHIU IN T đồ án tốt nghiệp đại học hệ quy Ngành công nghệ thông tin Giáo viên h-ớng dẫn: PGS TS Trnh Nht Tin Sinh viên: MÃ số sinh viên: Nguyn Vit Thnh 1013101015 Hải Phßng, 7/2012 package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } LỜI CẢM ƠN Lời đầu tiên, em xin đƣợc gửi lời cảm ơn chân thành sâu sắc tới PGS.TS Trịnh Nhật Tiến – ngƣời Thầy bảo, hƣớng dẫn nhiệt tình, giúp đỡ em suốt trình xây dựng đồ án Em xin chân thành cảm ơn Thầy, Cô giáo dạy dỗ em suốt trình học tập trƣờng Đại học Dân lập Hải Phòng Những kiến thức thầy cô truyền đạt hành trang để em vững bƣớc tƣơng lai Xin đƣợc cảm ơn tới bạn lớp CTL401 cung cấp cho tài liệu q báu để hồn thành đồ án Cảm ơn tới tất bạn bè ln sát vai, tin tƣởng giúp đỡ suốt năm học qua Cuối cùng, xin đƣợc gửi lời biết ơn sâu sắc tới Bố mẹ ngƣời thân gia đình, ngƣời ln dành cho tình u, niềm tin động viên suốt trình học tập Hải Phòng, tháng năm 2012 Sinh viên: Nguyễn Việt Thịnh package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } GIỚI THIỆU ĐỀ TÀI Đồ án tốt nghiệp trình bày số hiểu biết bỏ phiếu 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 trình kiểm phiếu, đồng thời giúp hình dung đƣợc viễn cảnh bỏ phiếu điện tử Việt Nam Đồ án trình bày kiến thức tổng qt phƣơng pháp mã hóa khóa cơng khai, phƣơng pháp đƣợc sử dụng rộng rãi việc mã hóa văn 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 giới thiệu giúp ngƣời đọc hiểu đƣợc phần cốt lõi việc đảm bảo an tồn thơng tin giai đoạn kiểm phiếu điện tử Phần đồ án nêu số tốn an tồn thơng tin giai đoạn kiểm phiếu điện tử Phần phân tích kĩ giải pháp đƣa phƣơng án sử dụng để triển khai thực tế package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 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 TỐN HỌC………………………………………… Chương 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 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 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 giới 1.2 TỔNG QUAN VỀ AN TỒN THƠNG TIN 1.2.1 Sự cần thiết bảo đảm an toàn thơng tin…………… 1.2.2 Khái niệm an tồn thơng tin 1.2.2.1 Khái niệm 1.2.2.2 Các u cầu an tồn bảo mật thơng tin 1.2.2.3 Các nội dung an tồn thơng tin 1.2.2.4 Các chiến lược bảo đảm an tồn thơng tin package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 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 mã hóa 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 chữ ký số 1/ Khả xác định nguồn gốc 2/ Tính tồn vẹn 3/ Tính khơng thể chối bỏ 4/ Thực chữ ký số khóa cơng khai 1.5.5 Tình trạng – pháp luật thực tế………………… 1.5.6 Đăng ký, sử dụng thẩm tra chữ ký số 1/ Các bƣớc mã hoá ký 2/ Các bƣớc kiểm tra 1.5.7 Một vài thuật toán dùng chữ ký số 1/ Chữ ký số RSA 2/ Chữ ký số DSA……………… 3/ Ký số Schnoor………… 4/ Chữ ký dùng lần…………………………………………… 5/ Chữ ký phủ định…………………………………… package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 1.6 HẠ TẦNG MẬT MÃ KHĨA CƠNG KHAI (PKI) 1.6.1 Tổng quan PKI 1.6.2 Các thành phần 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 chức PKI 1.6.4 Các dịch vụ PKI…………………………………………… Chương MỘT SỐ BÀI TỐN VỀ AN TỒ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 tốn thơng gian ngƣời kiểm phiếu ứng viên 2.1.2 Bài tốn thơng gian ngƣời ứng viên cử tri 2.2.CÁCH GIẢI QUYẾT 2.2.1 Bảo vệ nội dung phiếu, phòng tránh xem trộm 2.2.2 Bảo vệ nội dung 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 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 package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 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 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 package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 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 tốn xóa mù Enc Mã hóa Ek Thuật tốn mã hóa package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Chương 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 bỏ phiếu Bỏ phiếu việc ngƣời dùng phiếu để bày tỏ lựa chọn hay thái độ bầu cử biểu Một bỏ phiếu thành công phải bảo đảm tính chất: Quyền bỏ phiếu: ngƣời có quyền bầu cử đƣợc bỏ phiếu Mỗi cử tri đƣợc bỏ phiếu lần Bí mật: khơng thể biết đƣợc phiếu ai, trừ cử tri Kiểm sốt kết quả: phát đƣợc sai sót q trình bỏ phiếu Cho đến bỏ phiếu đƣợc thực theo cách truyền thống, nhiên với tốc độ phát triển ngành công nghệ thông tin, đặc biệt xu thực “Chính phủ điện tử” việc “bỏ phiếu điện tử” thay phƣơng thức truyền thống điều diễn 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ử chức vụ, chức danh hay để thăm dị dƣ luận kế hoạch, sách Hiện có loại bỏ phiếu Bỏ phiếu trực tiếp hòm phiếu phiếu in giấy Bỏ phiếu từ xa phiếu “số hóa” tạm gọi phiếu điện tử từ máy tính cá nhân mạng, điện thoại di động…Nó đƣợc gọi bỏ phiếu điện tử Bỏ phiếu điện tử bỏ phiếu 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 kỹ thuật mã hóa, để giữ bí mật phiếu điện tử trƣớc chuyển đến hòm phiếu qua kênh cơng khai Cử tri bỏ phiếu qua Internet, máy bỏ phiếu tự động package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 1.1.3 Các thành phần 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 ngƣời giám sát bầu cử: kiểm tra xem phiếu có đƣợc đếm khơng? 2/ Ban điều hành (ĐH): Quản lý hoạt động bỏ phiếu, có thiết lập danh sách cử tri hồ sơ cử tri, quy định chế định danh cử tri 3/ Ban đăng ký (ĐK): Nhận dạng cử tri cấp quyền bỏ phiếu cho cử tri, theo dõi 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 phiếu có hợp lệ khơng? (Vì phiếu mã hóa nên ban kiểm phiếu khơng biết đƣợc phiếu có hợp lệ khơng, nên cần xác minh tính hợp lệ phiếu trƣớc chuyển đến hịm phiếu) 5/ Ban kiểm phiếu (KP): Kiểm phiếu thông báo kết 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ý ban ĐK, q trình mã hóa giải mã phiếu 7/ Hệ thống ký: Giúp ban ĐK ký vào định danh cử tri package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 10 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 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 Zq * e1 = 47, e2 = 137 2/ N tính c = y e1 h e2 mod p = 306, gửi cho G 3/ G tính d ca mod q mod p = 184, gửi cho N x e1 g e2 4/ N thử điều kiện d Điều kiện không 184 (mod p) 226 47 * 137 145 mod 467 N lại tiếp tục thực bƣớc 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, gửi cho G 7/ G tính D Ca mod q mod p = 426, gửi cho N x f1 g f2 (mod p) 8/ N thử điều kiện D D = 426 x f1 g f2 (mod p) = 226 225 * 19 295 mod 467 Điều kiện đúng, nên N thực bƣớc 9: 9/ N kết luận y chữ ký giả mạo nếu: (d * e2 ) f1 (D * f2 ) e1 (mod p ) (thay g) N tính giá trị vế đồng dƣ (d* -e2 f1 D* -f2 e1 ) ) (184 * -137)225 (426 * -19)47 79 mod 467 79 mod 467 Hai giá trị Kết luận chữ ký y giả mạo package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 70 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 2) Chữ ký nhóm Chữ ký nhóm chữ ký điện tử đại diện cho nhóm ngƣời hay tổ chức Các thành viên nhóm ngƣời đƣợc phép ký thông điệp với tƣ cách ngƣời đại diện cho nhóm a) Đặc điểm chữ ký nhóm: Chỉ có thành viên nhóm ký tên vào thơng báo Ngƣời nhận thơng điệp kiểm tra xem chữ ký có nhóm hay khơng, nhƣng ngƣời nhận khơng thể biết đƣợc ngƣời nhóm ký vào thơng điệp Trong trƣờng hợp cần thiết chữ ký nhóm đƣợc “mở” (có khơng có giúp đỡ thành viên nhóm) để xác định ngƣời ký vào thông điệp b) Một sơ đồ chữ ký nhóm gồm thành phần bản: • Ngƣời quản lý nhóm • Các thành viên nhóm • Ngƣời khơng thuộc nhóm c) Một sơ đồ chữ ký nhóm thường bao gồm thủ tục: KeyGen: Là thuật tốn sinh khóa cơng khai nhóm, khóa bí mật ngƣời quản lý nhóm : KeyGen() → (pk,gmsk) pk khóa cơng khai nhóm (dùng để xác minh chữ ký nhóm), gmsk khóa bí mật nhóm Nếu số ngƣời nhóm cố định KeyGen()→ (pk,gmsk,ski) ski khóa bí mật thành viên thứ i nhóm Join : Cho phép ngƣời khơng phải thành viên nhóm gia nhập nhóm Khi gia nhập nhóm, thành viên i nhận đƣợc khóa bí mật ski, ngƣời quản lý nhóm lƣu thông tin thành viên Sig : Khi thành viên i muốn ký thông điệp m đại diện cho nhóm, sử dụng thủ tục Sig: Sig(m, ski)→ Chữ ký thông điệp m δ package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 71 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Verify : Khi muốn kiểm tra chữ ký δ có phải chữ ký đại diện cho nhóm thông điệp m sử dụng thủ tục Verify(m, δ,pk) = [False True] Open : Với chữ ký thông điệp m, ngƣời quản lý nhóm xác định đƣợc thành viên ký vào thông điệp việc sử dụng thủ tục Open(gmsk,m, δ), đầu thủ tục thông tin thành viên ký d) Hiệu chữ ký nhóm: Khi đánh giá hiệu sơ đồ chữ ký nhóm ta cần quan tâm đến thơng số sau: • Độ lớn khóa cơng khai nhóm γ (số bit) • Độ lớn chữ ký thông điệp (số bit) • Hiệu thủ tục Setup, Join, Sign, Verify, Open Tính ƣu việt chữ ký nhóm khả cho phép nhóm ngƣời, tổ chức giao tiếp với nhau, mà việc xác thực thông tin gửi cho thông qua khóa cơng khai nhóm Nhờ thành viên nhóm ký nặc danh đại diện cho nhóm mà khơng thể để lộ thơng tin cá nhân mình, có ngƣời quản trị 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ó thành viên nhóm địa diện cho nhóm ký thơng điệp nhóm Ngƣời ký nặc danh tính tốn đƣợc: Bất kỳ xác thực chữ ký cách dễ dàng nhƣng biết đƣợc ngời ký (trừ ngƣời quản lý nhóm) Khơng thể chối bỏ: Một thành viên ký thơng điệp khơng thể chối bỏ chữ ký đƣợc Ngƣời quản lý nhóm xác định đƣợc ký vào thơng điệp package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 72 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Không thể phân tích quan hệ: Việc phân tích xem hai chữ ký thành viên nhóm khác nhƣ khó thành viên nhóm trừ ngƣời quản lý nhóm Ngăn chặn framing Attacks: Khi số thành viên liên kết với gải mạo chữ ký thành viên khác nhóm Ngăn chặn liên minh: Khi số thành viên liên kết với tạo 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 phiếu Ban KP phải giải mã biết đƣợc phiếu ghi Có thể có ngƣời hay nhóm ngƣời Ban KP muốn biết nội dung nhƣ tác giả phiếu, điều dẫn đến rắc rối cho cử tri sau Để tránh tình ngƣời ta dùng kỹ thuật trộn phiếu Theo kỹ thuật này, danh tính cử tri khơng cần phải ẩn Do trộn phiếu, ngƣời ta biết đƣợc bỏ phiếu nào, liên kết cử tri phiếu bị xáo trộn Quy trình trộn phiếu: 1/ Có n cử tri với n phiếu B1, B2, …, Bn 2/ Mỗi cử tri mã hóa phiếu mình, đạt đƣợc mã hóa mức 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)) hoán vị ngẫu nhiên bí mật thứ tự chúng, sau mã hóa thêm bƣớc để đƣợc (C1i, C2i….,Cni ) 5/ Bƣớc mã hóa cuối đạt đƣợc (C1t, C2t,…., Cnt) 6/ Kết bƣớc đƣợc công bố bảng niêm yết công khai package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 73 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Những vấn đề cần lưu ý sử dụng kỹ thuật trộn theo sơ đồ trên: - Việc mã hóa 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ệ phiếu nhằm đảm bảo Ci0 thực mã Bi bƣớc - Các máy trộn phải đảm bảo tính trung thực, khơng đƣợc tráo đổi phiếu nhân đúp phiếu Để thực điều phải thiết kế mạng trộn xác minh Có kiểu mạng trộn: - Mạng trộn giải mã bƣớc, máy trộn tiến hành giải mã bậc Đến máy trộn cuối cùng, ta thu đƣợc rõ, tức nội dung phiếu Mỗi máy trộn Sj có cặp khóa bí mật, công khai (PKj, SKj) sơ đồ mã hóa cơng khai tùy chọn Vì mã hóa là: Ci0 = E(PK1, E(PK2,…, E(PKt, Bt)…)) Với E(PKt, Bt) hàm mã hóa Bt phiếu 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 Hòm phiếu Trộn phiếu Ban kiểm phiếu   - Khơi phục khóa bí mật - Tính kết bầu cử - Công bố Kết lên bảng niêm yết công khai package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 74 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Chương 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ĩnh vực mẻ an toàn bảo mật thông tin, nhƣng hứa hẹn mang đến nhứng ứng dụng rộng khắp, quan trọng ứng dụng bỏ phiếu điện tử Sơ đồ chia sẻ bí mật phƣơng thức dùng đề chia bí mật làm nhiều phần riêng biệt sau phân phối tới ngƣời tham gia Trong ngƣời đƣợc định trƣớc có khả khơi phục bí mật cách gộp phần thông tin họ, ngƣời không đƣợc định không thu đƣợc thơng tin bí mật Ý tưởng: thơng tin quan trọng cần bí mật, khơng nên trao cho ngƣời nắm giữ, mà phải chia thông tin thành nhiều mảnh trao cho ngƣời hay số mảnh Thơng tin gốc đƣợc xem lại, ngƣời giữ mảnh TT trí Các mảnh TT đƣợc khớp lại để đƣợc TT gốc Yêu cầu: để thực công việc trên, phải sử dụng sơ đồ gọi 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ẻ thông tin cho m thành viên, cho tập hợp thức thành viên khơi phục lại thơng tin bí mật, cịn lại khơng 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, ngƣời hay máy tính cất giấu mảnh package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 75 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Các thành phần 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 thành nhiều phần Những ngƣời tham gia nhận liệu từ Dealer (Participant) ký hiệu P Nhóm có khả khơi phục bí mật (Acess structure): Là tập P có tập có khả 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 sơ đồ ngƣời có t phần liệu (là số lƣợng đủ để khôi phục bí mật) khơng có nhiều thơng tin ngƣời khơng có liệu Xem xét sơ đồ chia sẻ bí mật sơ khai cụm từ bí mật “password” đƣợc chia thành phần “pa…”,”ss…”,”wo…” ”rd…” Một ngƣời khơng có phần bí mật biết mật có chữ Anh ta phải đốn mật từ 226 = tỷ khả xảy Một ngƣời có phần số phần mật phải đoán chữ tƣơng đƣơng với 226 khả Hệ thống sơ đồ chia sẻ bí mật bảo mật ngƣời tham gia có t phần liệu thu đƣợc phần đáng kể thơng tin bí mật.Trong sơ đồ bảo mật, ngƣời tham gia thiếu phần liệu đối mặt với 268 = 208 tỷ khả package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 76 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } 2/ Sơ đồ chia sẻ bí mật tầm thƣờng Có vài sơ đồ chia sẻ bí mật yêu cầu tất ngƣời tham gia phải khơi phục lại bí mật : Mã hóa bí mật thành số nguyên S Đƣa cho ngƣời tham gia i số ngẫu nhiên ri (trừ ngƣời) Đƣa cho ngƣời cuối số (S- r1 - r2 -…- rn-1) Bí mật tổng số tất ngƣời tham gia vào sơ đồ Mã hóa bí mật byte S Đƣa cho ngƣời tham gia i byte bi (trừ ngƣời), đƣa cho ngƣời cuối 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 sơ đồ dạng chia liệu D thành nhiều phần D1, D2,…,Dn cho : Nếu biết k nhiều phần Di dễ dàng suy ngƣợc lại D Nếu biết k-1 phần Di khơng thể suy ngƣợc lại D Sơ đồ đƣợc gọi sơ đồ ngƣỡng giới hạn (k,n) Nếu k = n tất thành viên phải suy ngƣợc lại bí mật Dƣới sơ đồ bí mật dạng (k, n) package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 77 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Sơ đồ chia sẻ bí mật Blakley Hai đƣờng thẳng khơng song song nằm mặt phẳng cắt điểm Ba mặt phẳng không song song không gian cắt điểm Tổng quát hơn, n mặt siêu phẳng cắt điểm cụ thể Bí mật đƣợc mã hóa đơn tọa độ giao điểm Nếu bí mật đƣợc mã hóa cách sử dụng tất tọa độ, chúng ngẫu nhiên, ngƣời tham gia (ai sở hữu nhiều siêu mặt n chiều) thu đƣợc thơng tin bí mật biết định phải nằm mặt mà sở hữu Nếu ngƣời mà thu đƣợc nhiều thông tin ngƣời ngồi bí mật, hệ thống khơng cịn bảo mật Nếu có số tọa độ đƣợc sử dụng, ngƣời khơng biết bí mật ngƣời ngồi (thí dụ:Bí mật phải nằm trục x hệ trục tọa đồ Decac) Mỗi ngƣời tham gia đƣợc đƣa đủ thông tin để định nghĩa siêu mặt; bí mật đƣợc khơi phục cách tính toán điểm giao mặt lấy tọa độ cố định giao điểm Sơ đồ Blakley hệ tọa độ không gian chiều: Thông tin ngƣời tham gia mặt phẳng bí mật giao điểm mặt phẳng Thơng tin ngƣời khơng đủ để đƣợc bí mật chúng thu hẹp đƣợc phạm vi bí mật điểm nằm giao tuyến mặt phẳng biết Sơ đồ Blakley có hiệu khơng gian sơ đồ Shamir dƣới đây; với sơ đồ Shamir, phần chia lớn bí mật ban đầu Các phần chia Blakley lớn t lần, với t số ngƣời tham gia vừa đủ thu đƣợc bí mật Sơ đồ Blakley đƣợc thu gọn cách giới hạn mặt sử dụng làm phần chia Kết thu đƣợc sơ đồ tƣơng đƣơng với sơ đồ Shamir package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 78 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Sơ đồ ngƣỡng Shamir Ý tƣởng sơ đồ ngƣỡng giới hạn Shamir dựa tính chất: Hai điểm định nghĩa đƣờng thẳng, điểm định nghĩa đƣợc parabol, điểm định nghĩa đƣợc hình lập phƣơng, nhƣ cách tổng quát cần n+1 điểm để định nghĩa đ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) Phương pháp phân chia bí mật K cho tập gồm m thành viên, cho t thành viên tính đƣợc K, nhƣng khơng nhóm gồm (t-1) thành viên làm đƣợc điều Ngƣời phân chia mảnh khóa khơng đƣợc nằm số m thành viên Ví dụ : có m = thủ quỹ giữ két bạc Hãy xây dựng hệ thống cho t = thủ quỹ mở đƣợc két bạc, nhƣng ngƣời riêng rẽ khơng thể Đó sơ đồ ngƣỡng A (2,3) Sơ đồ ngƣỡng Shamir 1979 : Bài tốn: Chia khóa bí mật K Zp thành t mảnh, phân cho ngƣời giữ mảnh, t ≤ m T thành viên “khớp t mảnh” nhận đƣợc K Khởi tạo: Chọn số nguyên tố p D chọn m phần tử xi khác nhau, ≠ Zp, 1≤ i ≤ m (yêu cầu: m < p,Tl: xi khác nhau, ≠ Zp ) D trao xi cho thành viên Pi Giá trị xi công khai package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 79 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Phân phối mảnh khoá K Zp D chọn bí mật (ngẫu nhiên,độc lập) t-1 phần tử Zp a1, …, at-1 Với 1≤ i ≤ m, D tính: yi = P(xi), P(x) = K + ∑j=1 t -1 aj xj mod p Với 1≤ i ≤ m, D trao mảnh yi cho Pi Khơi phục khố 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 (t-1) nên ta viết: P(x) = K + a1 x1 + a2 x2 +…+ at-1 xt-1 Các hệ số K, a1,…,at-1 phần tử chƣa biết Zp, a0= K khố Vì yij = P (xi j ), nên thu đƣợc t phƣơng trình tuyến tính t ẩn a0, a1,…,at-1, Nếu phƣơng trình độc lập tuyến tính có nghiệm ta đƣợc giá trị khoá a0 = K Chú ý: phép tính số học thực Zp package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 80 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Ví dụ: Chia mảnh khóa K Khố K = 13 cần chia thành mảnh cho ngƣời P1, P3, P5 Chọn số nguyên tố p =17, chọn m = phần tử xi = i Zp , i =1, 2, 3, 4, D trao giá trị công khai xi cho Pi D chọn bí mật, ngẫu nhiên t -1 = phần tử Zp a1 =10, a2 = D tính yi = P(xi), ≤ i ≤ m, đó: P(x)=K + ∑ t-1 j=1 aj xj j (mod p) = 13 + a1 x + a2 x2(mod 17) y1 = P(x1 ) = P(1) = 13 + a1.1 + a2.12(mod 17) = 13 + 10.1 + 12(mod 17) = y3 = P(x3 ) = P(3) = 13 + a1.3 + a2.32(mod 17) = 13 + 10.3 + 32(mod 17) = 10 y5 = P(x5 ) = P(5) = 13 + a1.5 + a2.52(mod 17) = 13 + 10.5 + 52(mod 17) = 11 D trao mảnh yi cho Pi Khơi phục khố K B ={P1, P3, P5} cần kết hợp mảnh khó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 = vào P(x) = a0 + a1 x + a2 x2 (mod 17), a0 = K ta nhận đƣợc phƣơng trình với ẩn số a0 , a1, a2 y1 = P(x1) = P(1) = a0 + a1.1 + a2.12 = 8(mod 17) y3 = P(x3) = P(3) = a0 + a1.3 + a2.32 =10(mod 17) y5 = P(x5) = P(5) = a0 + a1.5 + a2.52 =11(mod 17) Giải hệ phƣơng trình tuyến tính Z17, nghiệm là: a0 =13, a1=10, a2=2 Khố đƣợc khơi phục là: K= a0 =13 package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 81 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } Ứng dụng Trong việc giữ khóa két bạc: Khơng nên trao khoá két bạc cho ngƣời Khoá phải đƣợc chia nhỏ thành nhiều mảnh trao cho thành viên mảnh Trong bỏ phiếu điện tử: Không thể tin hoàn toàn vào tất thành viên Ban kiểm phiếu Vì vậy, phiếu nên chia thành nhiều mảnh trao cho Kiểm phiếu viên mảnh phiếu Trong lƣu trữ khóa bí mật: Khố bí mật quan trọng khơng nên lƣu trữ Server Nó phải đƣợc chia nhỏ lƣu trữ nhiều máy trạm package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 82 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } KẾT LUẬN: Đồ án tốt nghiệp thực đƣợc nội dung sau: Tìm hiểu số phƣơng pháp bảo vệ thơng tin: - Mã hóa liệu - Chữ ký số - Hạ tầng mật mã khóa cơng khai (PKI) Tìm hiểu số tốn an tồn thơng tin giai đoạn kiểm phiếu điện tử Tìm hiểu vấn đề "Chia sẻ bí mật" package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 83 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt GS Phan Đình Diệu, Giáo trình Lý thuyết Mật Mã & An tồn thơng tin, NXB Đại học quốc gia Hà nội 2006 PGS.TS Trịnh Nhật Tiến, Giáo trình An tồn liệu, 2008 PGS.TS Trịnh Nhật Tiến, ThS Trƣơng thị Thu Hiền, “Mã hóa đồng cấu ứng dụng”, ĐHQG Hà Nội, 10/2003 http://www.vi.wikipedia.org/wiki/Chữ_ký_số http://www.vi.wikipedia.org/wiki/Mã_hóa Tiếng Anh Zuzana Rjaskova, Electronic Voting Schemes, 2002 Adi Shamir, “How to share a secret”, Communications of the ACM, 1979 package buoi3; import java.awt.BorderLay out; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel ; import javax.swing.JRadi oButton; import javax.swing.JToggleButton; import javax.swing.border.Titled Bor der; import javax.swing.pla f.basi c BasicArrow Button; public class De moTypeButton extends JFrame{ private BasicArrow Button up = new BasicArrow Button(BasicArrow Button.N ORTH ), down = new Basi cArrowButton(Basi cArrowButton.SOUTH), right = new BasicArrow Button(BasicArrow Button.EAST), left = new Basi cArrowButton(Basi cArrowButton WEST); private JPanel lb; 84 public D emoType Button() { setLayout (new Flow Layout()); setTitle("De mo Type Button"); setSize(45 0, 350 ); setDefault Close Operation(E XIT_ON_CLOSE ); setLocationRelativeTo(null); setResiza ble(true); this.add(new JButton("Jbutton")); this.add(new JToggleButton("JToggle Button")); this.add(new JCheckBox("JCheck Box")); this.add(new JRadioButton("JRa dioButton")); lb = new JPanel(); lb.setBorder(new TitledBorder("Drie ctions")); lb.add(up); lb.add(dow n); lb.add(right); lb.add(left ); this.add(lb); } public static void main(String [] args ) { new DemoTy peButton().s etVisible(true ); } } ... Chương MỘT SỐ BÀI TỐN VỀ AN TỒ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 tốn thơng gian ngƣời kiểm phiếu ứng viên 2.1.2 Bài tốn thơng gian ngƣời... cốt lõi việc đảm bảo an tồn thơng tin giai đoạn kiểm phiếu điện tử Phần đồ án nêu số tốn an tồn thơng tin giai đoạn kiểm phiếu điện tử Phần phân tích kĩ giải pháp đƣa phƣơng án sử dụng để triển... 1.1.TỔNG QUAN VỀ BỎ PHIẾU ĐIỆN TỬ 1.1.1 Khái niệm 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 hệ thống bỏ phiếu điện tử 1.1.4 Các giai đoạn bỏ phiếu điện tử? ??…………………………

Ngày đăng: 15/08/2022, 01:02

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan