Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 88 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
88
Dung lượng
2,1 MB
Nội dung
i ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN HẢI NINH HỆ MÃ CÔNG KHAI RSA VÀ ỨNG DỤNG BẢO MẬT TRONG TRAO ĐỔI TÀI LIỆU LÂM SÀNG CDA LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUN - 2016 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn ii LỜI CẢM ƠN Trên thực tế khơng có thành cơng mà không gắn liền với hỗ trợ, giúp đỡ dù hay nhiều người khác Trong suốt thời gian từ bắt đầu học tập trường đến nay, em nhận nhiều quan tâm, giúp đỡ q Thầy Cơ, gia đình bạn bè Với lòng biết ơn sâu sắc nhất, em xin gửi lời cảm ơn chân thành tri ân đến quý Thầy Cô - Trường Đại Học Công Nghệ Thông Tin Truyền Thông Thái Nguyên Em xin gửi lời cảm ơn tới TS Nguyễn Văn Tảo, thầy dạy cho em kiến thức quý báu bảo mật, hệ mã công khai hệ mã RSA mà em sử dụng luận văn Em xin gửi lời cảm ơn tới TS Nguyễn Hải Minh – Khoa Công Nghệ Thông Tin - Trường Đại Học Công Nghệ Thông Tin Truyền Thơng Thái tận tình hướng dẫn em thời gian thực đề tài Tôi xin gửi lời cảm ơn đến anh chị em lớp CK13C Quảng Ninh, cảm ơn gia đình, bạn bè đồng nghiệp trường THPT Hồng Hoa Thám nơi tơi cơng tác ln ủng hộ động viên tạo điều kiện cho suốt thời gian học tập Do thời gian có hạn nên phần trình bày luận văn khơng tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp quý báu quý Thầy Cô bạn đọc Em xin chân thành cảm ơn! Thái Nguyên, ngày 10 tháng 05 năm 2016 Học viên thực Nguyễn Hải Ninh Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn iii LỜI CAM ĐOAN Tôi tên là: Nguyễn Hải Ninh Sinh ngày: 24/03/1985 Là học viên lớp Cao học K13C – Trường Công Nghệ Thông Tin & Truyền Thông – Đại Học Thái Nguyên, cơng tác trường THPT Hồng Hoa Thám – Đông Triều – Quảng Ninh Trong thời gian làm luận văn tốt nghiệp nghiên cứu triển khai đề tài: “Hệ mã công khai RSA ứng dụng bảo mật trao đổi tài liệu lâm sàng CDA”, hướng dẫn khoa học TS Nguyễn Hải Minh Tơi xin cam đoan, nội dung trình bày luận văn tơi tìm hiểu, nghiên cứu trình bày Các nội dung tham khảo có trích dẫn đầy đủ quy định Tơi xin chịu hoàn toàn trách nhiệm trước lời cam đoan Thái Nguyên, ngày 10 tháng 05 năm 2016 Học viên thực Nguyễn Hải Ninh Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn iv MỤC LỤC Trang LỜI CẢM ƠN i LỜI CAM ĐOAN iii MỤC LỤC iv DANH MỤC CÁC BẢNG vi DANH MỤC CÁC HÌNH ẢNH .vii MỞ ĐẦU CHƯƠNG CHUẨN TÀI LIỆU LÂM SÀNG CLINICAL DOCUMENT ARCHITECTURE 1.1 Giới thiệu chung 1.1.1 Mục đích thiết kế chuẩn tài liệu CDA [3] .2 1.1.2 Các tính chất tài liệu CDA .3 1.2 Cấu trúcchuẩn tài liệu CDA 1.2.1 Cấu trúc Header tài liệu CDA 1.2.2 Cấu trúc Body tài liệu CDA 1.2.3 Cấu trúc Entry 14 1.3 Mơ hình tham chiếu liệu - HL7 Reference Information Model(RIM) 19 1.3.1 Một số khái niệm quan trọng mơ hình 19 1.3.2 HL7 V3 Data Types .20 1.3.3 Nhóm từ vựng – HL7 Vocbulary Domains .20 1.4 Mơ hình để sinh tài liệu CDA 21 1.5 Một số Entry sử dụng việc gắn ảnh vào tài liệu 22 1.6 Ví dụ tài liệu CDA duyệt trình duyệt IE 26 CHƯƠNG CÁC KIẾN THỨC CƠ BẢN VỀ HỆ MÀ CÔNG KHAI 27 2.1 Giới thiệu chung 27 2.1.1 Khái niệm hệ mật mã 27 2.1.2 Hệ mật mã khóa cơng khai [2] .29 2.2 Hệ mã RSA 30 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn v 2.2.1 Cơ sở xây dựng RSA 30 2.2.2 Q trình xây dựng tạo khóa cho hệ mật RSA .31 2.2.3 Một số ý quan trọng RSA .37 2.2.4 Ưu nhược điểm hệ mật mã khố cơng khai 39 CHƯƠNG KẾT QUẢ CÀI ĐẶT CÁC THUẬT TOÁN 41 3.1 Các tài liệu lâm sàng sử dụng bệnh viện 41 3.1.1 Nội dung hồ sơ bệnh án áp dụng .41 3.1.2 Các thơng tin có tờ bệnh án 45 3.2 Mơ hình ứng dụng Hệ mã RSA tốn mã hóa tài liệu lâm sàng CDA 53 3.2.1 Ứng dụng thuật tốn mã hóa RSA cho tài liệu lâm sàng CDA 53 3.2.2 Mơ hình ứng dụng Hệ mã RSA tốn mã hóa tài liệu lâm sàng CDA .54 3.3 Module Mã hóa tài liệu CDA 56 3.3.1 Dữ liệu vào 56 3.3.2 Quy trình mã hóa 57 3.3.3 Tài liệu CDA dạng XML sau mã hóa .58 3.3.4 Module giải mã tài liệu 59 3.3.5 Giao diện chương trình 60 3.4 Module mã hóa thơng tin phần Header Body 61 3.4.1 Thuật tốn mã hóa thơng tin phần Header Body 61 3.4.2 Thuật tốn giải mã thơng tin phần Header Body 62 3.4.3 Demo module mã hóa Header Body 63 3.5 Một số Modules cốt lõi chương trình 63 3.5.1 Module RSA 63 3.5.2 Module ReadDOM 63 3.5.3 Một số vấn đề quản lý khóa RSA 64 KẾT LUẬN VÀ KIẾN NGHỊ 65 TÀI LIỆU THAM KHẢO 66 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn vi DANH MỤC CÁC BẢNG Bảng 1.1: Các thuộc tính Header Bảng 1.2: Quan hệ lớp Header Bảng 1.3: Cấu trúc Body tài liệu CDA Bảng 1.4: Các thuộc tính Section Bảng 1.5: Các đối tượng Section Bảng 1.6: Các quan hệ Section Bảng 1.7: Các thuộc tính hỗ trợ cho định dạng .13 Bảng 1.8: Các đối tượng tham gia Entry 15 Bảng 1.9: Quan hệ Entry 17 Bảng 1.10: Quan hệ entry-Entry Relationships 18 Bảng 1.11: Ví dụ đoạn mã Entry .22 Bảng 1.12: Diễn giải đoạn mã Entry 24 Bảng 2.1: Tóm tắt bước tạo khố, mã hoá, giải mã Hệ RSA .34 Bảng 3.1: Cấu trúc thông tin tờ bệnh án 47 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn vii DANH MỤC CÁC HÌNH ẢNH Hình 1.1: Cấu trúc tài liệu CDA [3] Hình 1.2: Sơ đồ sinh tài liệu CDA 21 Hình 1.3: Quan hệ module tài liệu CDA 22 Hình 2.1: Quá trình mã hoá giải mã .28 Hình 2.2: Mã hố thơng điệp sử dụng khố cơng khai P 29 Hình 2.3: Giải mã thơng điệp sử dụng khố riêng người nhận 30 Hình 2.4: Mã hố thơng điệp sử dụng khố bí mật S để mã thơng điệp khố cơng khai P để mã khố bí mật S 39 Hình 2.5: Giải mã thơng điệp sử dụng khố bí mật S để giải mã thơng điệp khố riêng P để giải mã khố bí mật S .39 Hình 3.1: Sơ đồ thuật toán RSA .54 Hình 3.2: Sơ đồ mã hóa tài liệu CDA .55 Hình 3.3: Tài liệu CDA dạng XML 56 Hình 3.4: Sơ đồ quy trình mã hóa tồn tài liệu CDA 57 Hình 3.5: Tài liệu CDA sau mã hóa 58 Hình 3.6: Sơ đồ quy trình giải mã tồn tài liệu CDA 59 Hình 3.7: Giao diện chương trình 60 Hình 3.8: Sơ đồ quy trình mã hóaphần Header Body 61 Hình 3.9: Sơ đồ quy trình giải mã phần Header Body .62 Hình 3.10: Demo mã hóa vàgiải mã Header Body tài liệu CDA 63 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỞ ĐẦU Khi mà ứng dụng CNTT ngày phổ biến rộng rãi ảnh hưởng lớn đến diện mạo đời sống xã hội, kinh tế Mọi cơng việc thực từ xa với hỗ trợ máy tính mạng Internet Tất thơng tin liên quan máy tính quản lý truyền hệ thống mạng Trong y tế, việc ứng dụng công nghệ thông tin để nâng cao chất lượng chăm sóc sức khỏe cho người dân trú trọng, nhiều chương trình ứng dụng máy tính xây dựng để hỗ trợ việc quản lý thơng tin bệnh nhân, quản lý viện phí, toán bảo hiểm khám chữa bệnh từ xa hệ thống hỗ trợ quản lý trao đổi thông tin tài liệu lâm sàng xây dựng phát triển Do đó, vấn đề bảo mật thông tin cá nhân tài liệu lâm sàng việc cần thiết bảo đảm tính riêng tư cho bệnh nhân Trong phạm vi nghiên cứu đề tài, tập chung nghiên cứu cấu trúc chuẩn tài liệu lâm sàng HL7 Clinical Document Architecture (CDA), hệ mã công khai RSA ứng dụng việc mã hóa phần thơng tin riên tư bệnh nhận lưu trong tài liệu CDA hai mức: Phần Header tài liệu mức section nằm component thuộc phần Body Kết nghiên cứu sở khoa học để hướng tới việckhi gửi thông tin khám chữa bệnh đến người nhận thìđúng người nhận xem tra cứu thông tin tài liệu Hơn nữa, kết đầu tài liệu sau mã hóa phải đảm bảo tích chất tài liệu lâm sàng quy định tổ chức chuẩn quốc tế Health Level Bên cạnh chúng tơi đề xuất mơ hình giải pháp sử dụng hệ mã vào q trình mã hóa dùng trao đổi thông tin sở y tế bác sỹ, bác sỹ với bác sỹ thông qua mơi trường Internet Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn CHƯƠNG CHUẨN TÀI LIỆU LÂM SÀNG CLINICAL DOCUMENT ARCHITECTURE 1.1 Giới thiệu chung Chuẩn tài liệu lâm sàng – HL7 Clinical Document Architecture (CDA) chuẩn tài liệu có cấu trúc Thơng qua chuẩn tài liệu này, rõ cho quan quản lý, sở y tế, nhà thiết kế phầm mềm, phần cứng cấu trúc “Stucture” tính ngữ nghĩa “Semantic” tài liệu lâm sàng Với mục đích hỗ trợ việc trao đổi thơng tin sở y tế, tổ chức quan liên quan thuận tiện xác mơi trường truyền thông đa dạng phong phú Phiên CDA Release hay gọi ( ANSI/HL7 CDA R1.0), thông qua công nhận chuẩn Quốc tế vào tháng 11 năm 2000 Phiên CDA Release (CDA R2) thông qua tháng năm 2005 American National Standards Institute/ Health Level Seven International (ANSI/HL7) Với tân tiến thiết kế phiên CDA R2, với việc cập nhật liệu (Data type), loại bỏ, bổ sung số thuộc tính (Header Attribute Section Attribute), gắn kết chặt chẽ với mơ hình HL7 Referece Information Model (RIM) trình phát sinh hình thành tài liệu, cho phép tham chiếu sử dụng máy tương thích với chuẩn HL7 (như: chuẩn LOINC, chuẩn SMOMED-CT ICD 10), thay đổi từ vựng nhóm CNE (Code No Extended) việc bổ sung nhóm từ vựng CNE từ nhóm CWE (Code With Extended) làm cho CDA R2 có tính mạnh hơn nhiều so với với phiên trước đồng thời tính ngữ nghĩa tài liệu lâm sàng thể cách rõ nét 1.1.1 Mục đích thiết kế chuẩn tài liệu CDA [3] Đưa quy định việc trao đổi thông tin chăm sóc sức khỏe Mang lại hiệu việc triển khai hệ thống mang tính liên thơng, có trao đổi chia sẻ thơng tin hệ thống khác phạm vi lớn Việc mở hiển thị nội dung tài liệu CDA không bị giới hạn khác công nghệ phần mềm sử dụng nơi gửi nơi nhận Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Các thông tin mã hóa theo chuẩn CDA tồn vẹn, an toàn dễ dàng lưu trữ lâu dài theo thời gian Cho phép trao đổi thông tin qua hệ thống trao đổi thông tin điện tử hệ thống thư tín điện tử Tương thích với chuẩn tài liệu tạo chương trình ứng dụng khác Việc trao đổi thông tin không phụ thuộc vào sở hạ tầng hệ thống lưu trữ Cung cấp thiết kế hợp lý cho ứng dụng Cho phép ghi lại thông tin nhằm đáp ứng nhu cầu quy định việc giám sát quản lý thông tin tài liệu 1.1.2 Các tính chất tài liệu CDA Một tài liệu lâm sàng thiết kế dựa chuẩn tài liệu CDA có tính chất sau: Tính bền - Persistence: Một tài liệu CDA tiếp tục lưu trữ bảo tồn trạng thái nguyên vẹn cấu trúc ngữ nghĩa, khoảng thời gian đáp ứng yêu cầu truy vốn thơng tin từ phía người sử dụng khai thác tài liệu Tính quản lý - Stewardship: Một tài liệu lâm sàng cần phải trì, cập nhật, bảo đảm tính an tồn, an ninh tồn vẹn tổ chức quan có thẩm quyền Tính xác thực - Potential for authentication: Một tài liệu lâm sàng tập hợp thông tin mà dùng để chứng thực tính pháp lý Tính bối cảnh - Context: Một tài liệu lâm sàng cần phải chứng minh bối cảnh với nội dung Tính đủ- Wholeness: Tính tồn vẹn đầy đủ tài liệu áp dụng cho tồn tài liệu CDA, khơng phải áp dụng cho riêng phần tài liệu Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn PHỤ LỤC Các chương trình nguồn Java public class myDOM { public static String fileSourceInput = "books.xml"; public static ArrayList listRootValue, listNode1Value, listNode2Value, listNode3Value, listNode4Value, listNode5Value, listNode6Value, listNode7Value, listNode8Value; public static ArrayList listRoot, listNode1, listNode2, listNode3, listNode4, listNode5, listNode6, listNode7, listNode8; public static Element root; public static Document document; public static String fileSourceOut="docSave.xml"; // tạo jdom document public static org.jdom.Document openFileSource(String fileName) { try { // Create a builder factory SAXBuilder builder = new SAXBuilder(); //jdomDoc = builder.build(new FileInputStream(xmlFile)); org.jdom.Document jdomDoc; jdomDoc = builder.build(new FileInputStream(fileName)); return jdomDoc; } catch (Exception e) { e.printStackTrace(); System.out.print(e); return null; } } Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn // lưu file CDA public static void saveMyCDA(String desFileName, org.jdom.Document CDABuffer) { try { XMLOutputter outputter = new XMLOutputter(); outputter.output(CDABuffer, new FileOutputStream(desFileName)); System.out.println("Done !!!"); } catch (Exception e) { e.printStackTrace(); System.out.println("Fail !!!"); JOptionPane.showConfirmDialog(null, e.getMessage()); } return; } // thay giá trị thuộc tính element public static void replaceTheAttribute(Element currentElement, String attributeName, String newValue) { currentElement.setAttribute(attributeName, newValue); } // thay giá trị element public static void replaceTheContext(Element currentNode, String newValue) { try { currentNode.setText(newValue); } catch (Exception e) { JOptionPane.showMessageDialog(null, "not write !!!"); Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn } } public RSA() { private_key = new Key(); public_key = new Key(); } public byte IndexInBase64(char c) { byte i; for(i = 0; i < 64; i++) if(base64.charAt(i) == c) break; return i; } public void CreateKey(int p, int q) { if(p == q) return; long n = p * q; long phi = (p - 1) * (q - 1); //calculate number e long e = phi / 2; long d = 0; Euclid ecl = new Euclid(); while(e > 3) { Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn if(ecl.GCD(e, phi) == 1) { d = ecl.ModReserve(e, phi); if(d > && e != d && d < phi) break; } e ; } if(e < 4) { e = phi / - 1; while(e < phi) { if(ecl.GCD(e, phi) == 1) { d = ecl.ModReserve(e, phi); if(d > && e != d && d < phi) break; } e++; } if(e >= phi) { e = 0; d = 0; n = 0; } } public_key.setM(e); public_key.setN(n); Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn private_key.setM(d); private_key.setN(n); } public String Encrypt(String plain_text, Key public_key) { lengthkey =plain_text.length(); if(plain_text == null) return null; if(plain_text.equals("")) return ""; int size, length; int i, j; short p; Euclid ecl = new Euclid(); long c; length = plain_text.length(); byte[] cipher_byte = new byte[(int)length * 4]; j = 0; for(i = 0; i < length; i++) { p = (short)plain_text.charAt(i); c = ecl.ModOf(p, public_key.getM(), public_key.getN()); cipher_byte[j] = (byte)((c >> 24) & 0xff); j++; cipher_byte[j] = (byte)((c >> 16) & 0xff); j++; cipher_byte[j] = (byte)((c >> 8) & 0xff); j++; Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn cipher_byte[j] = (byte)(c & 0xff); j++; } //base64 length = cipher_byte.length; size = length / * 3; byte k, temp; String cipher_text = ""; for(i = 0; i < size;) { k = (byte)((cipher_byte[i] & 0xfc) >> 2); cipher_text += base64.charAt(k); k = (byte)((cipher_byte[i] & 0x03) > 4); k = (byte)(k | temp); cipher_text += base64.charAt(k); k = (byte)((cipher_byte[i] & 0x0f) > 6); k = (byte)(k | temp); cipher_text += base64.charAt(k); k = (byte)((cipher_byte[i] & 0x3f)); cipher_text += base64.charAt(k); i++; } Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn if(i < length) { k = (byte)((cipher_byte[i] & 0xf3) >> 2); cipher_text += base64.charAt(k); k = (byte)((cipher_byte[i] & 0x03) > 4); k = (byte)(k | temp); cipher_text += base64.charAt(k); k = (byte)((cipher_byte[i] & 0x0f) 2) size = 2; length_byte += size; cipher_byte = new byte[(int)length_byte]; j = 0; size = length_text / * 4; for(i = 0; i < size;) { k = IndexInBase64(cipher_text.charAt(i)); cipher_byte[j] = (byte)(k > 4); cipher_byte[j] = (byte)(cipher_byte[j] | temp); j++; cipher_byte[j] = (byte)((k & 0x0f) > 2); cipher_byte[j] = (byte)(cipher_byte[j] | temp); j++; cipher_byte[j] = (byte)((k & 0x03) 4); cipher_byte[j] = (byte)(cipher_byte[j] | temp); j++; cipher_byte[j] = (byte)(k & 0x0f > 2); cipher_byte[j] = (byte)(cipher_byte[j] | temp); j++; Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn cipher_byte[j] = (byte)(k & 0x03