Xây dựng demo chứng thực điện tử

22 2.6K 17
Xây dựng demo chứng thực đ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

MỤC LỤC DANH MỤC HÌNH VẼ LỜI MỞ ĐẦU Ngày giới công nghệ thông tin trở nên phổ biến lĩnh vực có góp mặt cơng nghệ Bên cạnh thơng tin có giá trị thơng thường cịn có thơng tin quan trọng, địi hỏi tính bảo vệ cao Chính thế, chứng thư số lựa chọn phù hợp cho việc bảo vệ xác thực tính tin cậy thơng tin Để tìm hiểu vấn đề bảo mật cho tài liệu sử dụng chứng thư số, nhóm chúng em tìm hiểu đề tài “ Nghiên cứu xây dựng ứng dụng mã hóa, giải mã tài liệu sử dụng chứng thư số” Trong tập lớn chúng em xin trình bày khái quát chứng thư số số cách thức hoạt động xây dựng ứng dụng sử dụng chứng thư số Báo cáo gồm chương : CHƯƠNG I: TỔNG QUAN VỀ CHỨNG THƯ SỐ : Tìm hiểu tổng quan chứng thư số, cách thức hoạt động, nhiệm vụ nhà cung cấp chứng thư số CHƯƠNG II: SỬ DỤNG CHỮ KÝ SỐ KÝ LÊN TÀI LIỆU : Tìm hiểu cách thức đăng kí chứng thư số mơ hình chữ kí số khóa cơng khai CHƯƠNG III: XÂY DỰNG ỨNG DỤNG MÃ HĨA GIẢI MÃ TÀI LIỆU BẤT KÌ SỬ DỤNG CHỨNG THƯ SỐ: Xây dựng ứng dụng sử dụng hệ mật RSA, DES để mã hóa chuỗi mật giải mã file Trong trình tìm hiểu, kiến thức hạn chế, kiến thức thực tế chưa có nhiều, nên chúng em khơng tránh khỏi thiếu sót sai lầm Rất mong góp ý thầy cô bạn Chúng em xin cám ơn Nguyễn Thị Hồng Hà nhiệt tình hướng dẫn chúng em hoàn thành báo cáo Chúng em xin chân thành cám ơn! CHƯƠNG 1: TỔNG QUAN VỀ CHỨNG THƯ SỐ 1.1 Chứng thư số Chứng thư số tệp tin điện tử sử dụng để nhận diện cá nhân, máy chủ, công ty, vài đối tượng khác gắn danh đối tượng với khố công khai (public key) Giống lái xe, hộ chiếu, chứng minh thư hay giấy tờ nhận diện cá nhân thông thường khác, Chứng thư số cung cấp chứng cho nhận diện đối tượng Hệ mã khố cơng khai sử dụng Chứng thư số để giải vấn đề mạo danh Để lấy lái xe, bạn cần phải đăng ký với Phòng cảnh sát giao thông Họ cấp cho bạn lái xe sau xác định thông tin bạn như: có khả lái xe, họ tên, địa chỉ, thông tin cần thiết khác Để lấy Chứng thư số bạn cần phải thực công việc đăng ký tương tự Nơi chứng nhận thơng tin bạn xác gọi Nhà cấp Chứng thư số (Certificate Authority viết tắt CA), tổ chức có thẩm quyền xác nhận danh cấp Chứng thư số Họ thành phần thứ ba đứng độc lập tổ chức tự vận hành phần mềm cấp Chứng thư số Các phương pháp để xác định danh phụ thuộc vào sách mà CA đặt Chính sách lập phải đảm bảo việc cấp Chứng thư số phải đắn, cấp mục đích dùng vào việc Thơng thường, trước cấp Chứng thư số, CA công bố thủ tục cần phải thực cho loại Chứng thư số Trong Chứng thư số chứa khố cơng khai gắn với tên đối tượng (như tên nhân viên server) Chứng thư số giúp ngăn chặn việc sử dụng khố cơng khai cho việc giả mạo Chỉ có khố cơng khai chứng thực Chứng thư số làm việc với khoá riêng (private key) tương ứng sở hữu đối tượng mà có danh chứng thực nằm Chứng thư số Ngồi khố cơng khai, Chứng thư số chứa thêm tên đối tượng mà nhận diện, hạn dùng, tên CA cấp Chứng thư số đó, mã số thứ tự, thông tin khác Điều quan trọng Chứng thư số luôn chứa chữ ký số CA cấp Chứng thư số Nó cho phép Chứng thư số đóng dấu người sử dụng biết tin cậy vào CA Chứng thư số tệp tin điện tử sử dụng để nhận diện cá nhân, máy chủ, công ty, vài đối tượng khác gắn danh đối tượng với khố cơng khai (public key) Thành phần gồm có: - Serial Number -> Mã số cấp CA - Thơng tin người sở hữu - Khóa công khai - Thời hạn sử dụng - Chữ ký CA - Các thơng tin mở rộng khác Hình 1: Một văn kí số 1.2 Vì phải sử dụng chứng thư số? Việc kết nối qua mạng Internet chủ yếu sử dụng giao thức TCP/IP TCP/IP cho phép thông tin gửi từ máy tính tới máy tính khác thông qua loạt máy trung gian mạng riêng biệt trước tới đích Tuy nhiên, tính linh hoạt giao thức TCP/IP tạo hội cho "bên thứ ba" thực hành động bất hợp pháp, cụ thể là: - Nghe trộm (Eavesdropping) Thông tin khơng bị thay đổi, bí mật khơng cịn Ví dụ, biết số thẻ tín dụng, thông tin cần bảo mật bạn - Giả mạo (Tampering) Các thông tin truyền bị thay đổi thay trước đến người nhận Ví dụ, sửa đổi đơn đặt hàng thay đổi lý lịch cá nhân - Mạo danh (Impersonation) Thông tin gửi tới cá nhân mạo nhận người nhận hợp pháp Có hai hình thức mạo danh sau: + Bắt chước (Spoofing) Một cá nhân giả vờ người khác Ví dụ, dùng địa mail người khác giả mạo tên miền trang web + Xuyên tạc (Misrepresentation) Một cá nhân hay tổ chức đưa thơng tin khơng thật họ Ví dụ, có trang web mạo nhận chuyên kinh doanh trang thiết bị nội thất, thực tế trang chun ăn cắp mã thẻ tín dụng khơng gửi hàng cho khách Bình thường, người sử dụng mạng Internet để liên lạc với nhau, thông tin phải qua loạt máy trung gian Trong số có số người cần bảo mật thông tin cá nhân kinh doanh họ May mắn thay, có vài chuẩn chung biết hệ mã khố cơng khai (public key cryptography) giải vấn đề Hệ mã khố cơng khai với Chứng thư số cơng nghệ liên quan thực nhiệm vụ sau: - Mã hoá giải mã: cho phép hai đối tác giao thiệp với che giấu thơng tin mà họ gửi cho Người gửi mã hố thơng tin trước gửi chúng đi, người nhận giải mã trước đọc Trong truyền, thông tin không bị lộ - Chống lại giả mạo: cho phép người nhận kiểm tra thơng tin có bị thay đổi hay không Bất kỳ thay đổi hay thay nội dụng thông điệp gốc bị phát - Xác thực: cho phép người nhận xác định danh người gửi - Không thể chối cãi nguồn gốc: ngăn chặn người gửi chối cãi nguồn gốc tài liệu gửi 1.3 Chứng thư số làm việc nào? Một Chứng thư số gắn public key với cá nhân hay tổ chức, kết hợp tính xác thực đảm bảo nhà cung cấp Chứng thư số Chứng thư số dựa thuật tốn mã khố cơng khai mà mơ hình việc dùng cặp khố public key private key Private key sở hữu riêng người có Chứng thư số dùng để tạo nên chữ ký điện tử Khố ln ln phải giữ bí mật thuộc người sở hữu Chứng thư số Public key cơng khai, dùng để chứng thực chữ ký điện tử Sự chứng thực chữ ký điện tử tức bạn muốn biết đích danh ký vào thơng tin mà bạn nhận Cặp khố public key private key vốn không gắn với danh nào, đơn giản cặp khố mà giá trị số Chứng thư số kết hợp public key với danh Căn vào Chứng thư số bạn hệ thống kiểm tra xem bạn có đủ thẩm quyền truy cập vào hệ thống hay không, tránh khỏi mạo danh bạn để truy cập hệ thống trao đổi thơng tin Với việc mã hố Chứng thư số cung cấp cho bạn giải pháp thực đảm bảo giúp bạn hoàn toàn yên tâm tham gia trao đổi thông tin giao dịch Internet 1.4 Nhiệm vụ quan chứng thực Nhiệm vụ quan chứng thực (Certification Authority - CA) bảo đảm tính tồn vẹn chữ ký số tổ chức hợp pháp cấp Trong suốt tiến trình đăng ký CTS, CA tập hợp thông tin nhà xuất ứng dụng di động để kiểm tra tính xác thực Tiến trình xác thực vài hay vài ngày phụ thuộc vào thông tin cung cấp tùy vào mức độ kiểm tra thơng tin mức khó hay dễ Các hãng thứ cịn gọi CA, có nhiệm vụ cấp phép chứng thực số CA kiểm tra tính xác thực tất chứng thực Chứng thực không hợp lệ CA không chứng nhận hợp lệ Để có chứng thực số, người dùng phải tạo cặp khóa cơng khai/riêng tư, sau khóa cơng khai đệ trình lên CA với thơng điệp Một chứng thực tạo sau CA kiểm tra tất chi tiết trả kết nguyên vẹn Tiếp theo, người dùng cài đặt chứng thực máy tính Để nhận biết chữ ký số thật, số tùy chọn để kiểm tra tính xác thực thơng qua trình duyệt web, email, máy chủ web hay ứng dụng khác Một số CA phổ biến Verisign, CommerceNet, COMODO, GlobalSign… Trong trường hợp, nhà phát triển muốn gửi ứng dụng di động đến Windows Marketplace, lúc phần mềm phải thơng qua tiến trình chứng thư số Các nhà phát triển buộc ký số nội dung cập nhật trước ứng dụng có mặt danh mục kho ứng dụng Sau đó, Microsoft giám sát ứng dụng gỡ chứng thực số liên kết với malware phát vấn đề lúc dị Hình 2: mơ hình CA VNPT-CA CHƯƠNG 2: SỬ DỤNG CHỮ KÝ SỐ KÝ LÊN TÀI LIỆU 2.1 Đăng ký chứng thư số Để kí lên văn chữ ký hợp lệ ta cần phải có chữ kí số Hầu hết ta khơng thể tự sinh chữ kí cho nên phải có quan tin tưởng chịu trách nhiệm cấp cho ta chữ kí số Các bước để xin CA cấp chứng thư số đơn giản (1) User gửi thông tin thân RA (Registration Authority) để đăng ký (2) RA gửi thông tin user ký yêu cầu chấp thuận đến trung tâm CA (3) CA tạo chứng thư khóa cơng khai, ký khóa bí mật CA cập nhật chứng thư thư mục LDAP (4) CA gửi chứng thư trở lại RA (5) RA cấp chứng thư cho người sử dụng Hình 3: Thủ tục cấp chứng thư số 10 2.2 Mô hình chữ kí số khóa cơng khai Chữ ký số khóa cơng khai dựa tảng mật mã hóa khóa cơng khai Để trao đổi thơng tin mơi trường này, người sử dụng có cặp khóa: cơng khai bí mật Khóa cơng khai cơng bố rộng rãi cịn khóa bí mật phải giữ kín khơng thể tìm khóa bí mật biết khóa cơng khai Hình 4: Sơ đồ tạo kiểm tra chữ ký số sử dụng khóa cơng khai Tồn q trình gồm thuật tốn: - Thuật tốn tạo khóa - Thuật toán tạo chữ ký số - Thuật toán kiểm tra chữ ký số Xét ví dụ sau: Bob muốn gửi thông tin cho Alice muốn Alice biết thông tin thực Bob gửi Bob gửi cho Alice tin kèm với chữ ký số Chữ ký tạo với khóa bí mật Bob Khi nhận tin, Alice kiểm tra thống tin chữ ký thuật toán kiểm tra sử dụng 11 khóa cơng cộng Bob Bản chất thuật toán tạo chữ ký đảm bảo cho trước tin, khó (gần không thể) tạo chữ ký Bob khơng biết khóa bí mật Bob Nếu phép thử cho kết Alice tin tưởng tin thực Bob gửi Thông thường, Bob khơng mật mã hóa tồn tin với khóa bí mật mà thực với giá trị băm tin Điều khiến việc ký trở nên đơn giản chữ ký ngắn Tuy nhiên làm nảy sinh vấn đề tin khác lại cho giá trị băm Đây điều xảy xác suất thấp 12 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG MÃ HÓA GIẢI MÃ TÀI LIỆU BẤT KÌ SỬ DỤNG CHỨNG THƯ SỐ 3.1 Mơ hình tổng quan Hình 5: Kết hợp khóa cơng khai khóa bí mật mã hóa file Chương trình sử dụng hệ mã hóa cơng khai RSA để mã hóa khóa bí mật – có tác dụng bảo mật khóa cho q trình mã hóa file (sử dụng mã hóa đối xứng) Q trình mã hóa với khóa đối xứng dùng hệ mã hóa DES 2, Giới thiệu module ứng dụng Ứng dụng sử dụng ngôn ngữ Java 3.2 Sử dụng hệ mã hóa RSA để mã hóa chuỗi mật lưu file Text - Chương trình tự động tạo cặp khóa cơng khai khóa bí mật, lưu trữ vào file: private.key public.key - Mã hóa file matkhau.txt khóa cơng khai, tạo file mã hóa matkhau.enc - Giải mã khóa bí mật tạo file matkhau2.txt với nội dung trùng với file gốc 13 Tạo file main class với tên: EncryptionUtil.java có nội dung sau: package javaapplication5; import import import import import import import import import import import java.io.File; java.io.FileInputStream; java.io.FileOutputStream; java.io.ObjectInputStream; java.io.ObjectOutputStream; java.security.KeyPair; java.security.KeyPairGenerator; java.security.PrivateKey; java.security.PublicKey; javax.crypto.Cipher; javax.crypto.CipherOutputStream; /** * @author JavaDigest * */ public class EncryptionUtil { public static final String ALGORITHM = "RSA"; public static final String PRIVATE_KEY_FILE = "C:/keys/private.key"; public static final String PUBLIC_KEY_FILE = "C:/keys/public.key"; public static void main(String[] args) { try { // Check if the pair of keys are present else generate those if (!areKeysPresent()) { // Method generates a pair of keys using the RSA algorithm and stores it // in their respective files generateKey(); } //final String originalText = "fgdfg tretrfgg"; ObjectInputStream inputStream = null; 14 // Encrypt the string using the public key inputStream = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE)); final PublicKey publicKey = (PublicKey) inputStream.readObject(); //final byte[] cipherText = encrypt(originalText, publicKey); encryptFile("E:\\tuong.txt", "E:\\tuong.enc", publicKey); // Decrypt the cipher text using the private key inputStream = new ObjectInputStream(new FileInputStream(PRIVATE_KEY_FILE)); final PrivateKey privateKey = (PrivateKey) inputStream.readObject(); decryptFile("E:\\tuong.enc", "E:\\tuong2.txt", privateKey); // Printing the Original, Encrypted and Decrypted Text // System.out.println("Original Text: " + originalText); // System.out.println("Encrypted Text: " + cipherText.toString()); // System.out.println("Decrypted Text: " + plainText); } catch (Exception e) { e.printStackTrace(); } } //Encrypt and save file //Phuong thuc ma hoa file txt dung khoa cong khai public static void encryptFile(String patchSrc, String patchDes, PublicKey key) { try { File fileIn = new File(patchSrc); 15 FileInputStream input = new FileInputStream(fileIn); File fileOut = new File(patchDes); FileOutputStream output = new FileOutputStream(fileOut); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, key); CipherOutputStream cos = new CipherOutputStream(output, cipher); byte[] block = new byte[1]; int i; while ((i = input.read(block)) != -1) { cos.write(block, 0, i); } cos.close(); } catch (Exception ex) { System.out.println("" + ex); } } //Phuong thuc giai ma file dung khoa bi mat public static void decryptFile(String patchSrc, String patchDes, PrivateKey key) { try { File fileIn = new File(patchSrc); FileInputStream input = new FileInputStream(fileIn); File fileOut = new File(patchDes); FileOutputStream output = new FileOutputStream(fileOut); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, key); CipherOutputStream cos = new CipherOutputStream(output, cipher); byte[] block = new byte[1]; int i; 16 while ((i = input.read(block)) != -1) { cos.write(block, 0, i); } cos.close(); } catch (Exception ex) { System.out.println("" + ex); } } //Phuong thuc tao khoa cong khai va khoa bi mat public static void generateKey() { try { final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM); keyGen.initialize(1024); final KeyPair key = keyGen.generateKeyPair(); File privateKeyFile = new File(PRIVATE_KEY_FILE); File publicKeyFile = new File(PUBLIC_KEY_FILE); // Create files to store public and private key if (privateKeyFile.getParentFile() != null) { privateKeyFile.getParentFile().mkdirs(); } privateKeyFile.createNewFile(); if (publicKeyFile.getParentFile() != null) { publicKeyFile.getParentFile().mkdirs(); } publicKeyFile.createNewFile(); // Saving the Public key in a file 17 ObjectOutputStream publicKeyOS = new ObjectOutputStream( new FileOutputStream(publicKeyFile)); publicKeyOS.writeObject(key.getPublic()); publicKeyOS.close(); // Saving the Private key in a file ObjectOutputStream privateKeyOS = new ObjectOutputStream( new FileOutputStream(privateKeyFile)); privateKeyOS.writeObject(key.getPrivate()); privateKeyOS.close(); } catch (Exception e) { e.printStackTrace(); } } //Kiem tra khoa co ton tai hay chua? public static boolean areKeysPresent() { File privateKey = new File(PRIVATE_KEY_FILE); File publicKey = new File(PUBLIC_KEY_FILE); if (privateKey.exists() && publicKey.exists()) { return true; } return false; } } 3.3 Sử dụng hệ mã hóa đối xứng DES để mã hóa file 18 (Chương trình có nội dung code lớn, giải thích chi tiết project netbeans – mềm kèm tài liệu) Giao diện chương trình: Hình 6: Giao diện chương trình mã hóa đối xứng Chương trình có tính mã hóa file sử sụng hệ mã hóa DES Ngồi cịn bổ sung nhiều tính khác liên quan bảo mật file liệu 19 KẾT LUẬN Qua q trình tìm hiểu, nhóm tìm hiểu cấu tạo chế hoạt động chứng thư số, xây dựng chương trình mơ thuật toán ký số lên tệp tin Trong thời gian tới, nhóm tập trung tìm hiểu phương thức mã hóa, giải mã Trong q trình tìm hiểu, kiến thức hạn chế, nguồn tài liệu chưa nhiều, nên nhóm khơng tránh khỏi thiếu sót sai lầm Rất mong nhận đóng góp thầy bạn 20 TÀI LIỆU THAM KHẢO [1] http://vnpt-ca.vn/Content/Attachments/Document/CP.pdf [2] http://vi.wikipedia.org/wiki/Ch%E1%BB%AF_k%C3%BD_s%E1%BB%91 [3]http://vi.wikipedia.org/wiki/Ch%E1%BB%AF_k%C3%BD_%C4%91i%E1%BB %87n_t%E1%BB%AD [4] http://forum.esc.vn/showthread.php?t=1406 21 ... dùng để tạo nên chữ ký điện tử Khố ln ln phải giữ bí mật thuộc người sở hữu Chứng thư số Public key cơng khai, dùng để chứng thực chữ ký điện tử Sự chứng thực chữ ký điện tử tức bạn muốn biết đích... có nhiệm vụ cấp phép chứng thực số CA kiểm tra tính xác thực tất chứng thực Chứng thực không hợp lệ CA khơng chứng nhận hợp lệ Để có chứng thực số, người dùng phải tạo cặp khóa cơng khai/riêng... dụng chứng thư số” Trong tập lớn chúng em xin trình bày khái quát chứng thư số số cách thức hoạt động xây dựng ứng dụng sử dụng chứng thư số Báo cáo gồm chương : CHƯƠNG I: TỔNG QUAN VỀ CHỨNG

Ngày đăng: 15/08/2014, 23:09

Mục lục

    DANH MỤC HÌNH VẼ

    CHƯƠNG 1: TỔNG QUAN VỀ CHỨNG THƯ SỐ

    1.2. Vì sao phải sử dụng chứng thư số?

    1.3. Chứng thư số làm việc như thế nào?

    1.4. Nhiệm vụ của các cơ quan chứng thực

    CHƯƠNG 2: SỬ DỤNG CHỮ KÝ SỐ KÝ LÊN TÀI LIỆU

    2.1. Đăng ký chứng thư số

    2.2. Mô hình chữ kí số khóa công khai

    CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG MÃ HÓA GIẢI MÃ TÀI LIỆU BẤT KÌ SỬ DỤNG CHỨNG THƯ SỐ

    3.2. Sử dụng hệ mã hóa RSA để mã hóa chuỗi mật khẩu lưu trong file Text