GIÁO TRÌNH CORE JAVA 10

11 157 0
GIÁO TRÌNH CORE JAVA 10

Đ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

Định nghĩa Lập trình hướng Đối tượng (Objectoriented Programming).Nhận thức về Trừu tượng hóa Dữ liệu (Data Abstraction).Định nghĩa một Lớp (Class).Định nghĩa một Đối tượng (Object).Nhận thức được sự khác biệt giữa Lớp và Đối tượng.Nhận thức được sự cần thiết đối với phương thức Thiết lập (Construction) và Hủy (Destruction).Định nghĩa tính Bền vững (Persistence).Định nghĩa về tính đóng gói dữ liệu (Data Encapsulation)Hiểu biết về tính Thừa kế (Inheritance).Định nghĩa tính Đa hình (Polymorphism).Liệt kê những ưu điểm của phương pháp hướng Đối tượng.

Chương 10 CÀI ĐẶT BẢO MẬT Mục tiêu học:       Cuối chương bạn có thể: Mô tả công cụ JAR Tạo xem file JAR, liệt kê trích rút nội dung Sử dụng chữ ký điện tử (Digital Signatures) để nhận dạng Applets Tạo công cụ khóa bảo mật (Security key) Làm việc với chứng số (Digital Certificate) Tìm hiểu gói Java.security 10.1 Giới thiệu Trong phần này, tìm hiểu chi tiết bảo mật Java applet Chúng ta thảo luận mô hình bảo mật JDK 1.2 đáp ứng nhu cầu người dùng người phát triển phầm mềm Java ngôn ngữ lập trình gởi chương trình tương tác văn bản, ảnh thông tin tĩnh thông qua World Wide Web Các chương trình này, không giống chương trình CGI, chạy hệ thống người dùng, thay chạy máy chủ Web (Web server) Bảo mật Java Applet quan tâm người dùng nhà phát triển applet Thiếu tính bảo mật applet dẫn tới việc sửa đổi đọc liệu nhạy cảm máy người sử dung applet Mô hình bảo mật Java 2, JDK 1.2 hữu ích cho người dùng, cho nhà phát triển Nó giúp người dùng trì mức độ bảo mật cao Trong chương nay, học mô hình bảo mật JDK 1.2 10.2 Công cụ JAR Một file JAR file lưu trữ nén công cụ (jar.exe) Java tạo Nó tương tự chương trình PKZIP Nó chứa nhiều file file lưu trữ (.jar) Điều cho phép tải trình duyệt hiệu Dùng jar với applet cải thiện đáng kể hiệu thực trình duyệt Vì tấc tất file biên dịch để file nhất, trình duyệt cần thiết lập kết nối HTTP với web server Nén file giảm 50% thời gian tải file Để khởi động công cụ JAR, dùng câu lệnh sau dấu nhắc lệnh: jar [options][manifest] jar-file input-file(s) Tuỳ chọn c t x v f m o Mô tả Tạo file jar Liệt kê nội dung file jar Trích dẫn file có tên từ file jar Tạo đầu chi tiết (verbose output) dòng lỗi chuẩn Xác định tên file jar Bao hàm thông tin chứng thực từ file chứng thực xác định Chỉ lưu trữ, không nén Cài đặt bảo mật (Security Implementation) 233 M Không tạo file chứng thực cho mục (entries) Bảng 10.1 Công cụ jar Một file chứng thực chứa thông file lưu trữ File tuỳ chọn Thậm chí file không xác định JAR tự động tạo File jar dùng lưu trữ File phải có phần mở rộng ‘.jar’ xác định dòng lệnh File đầu vào (input-file) danh sách file phân cách bở dấu phẩy Netscape Navigator Internet Explorer hỗ trợ file JAR Câu lệnh sau lưu trữ tất file class file java bao gồm thư mục hành vào file jar gọi ‘pack’ jar cf pack.jar *.class *.java Lệnh jar Tạo lưu trữ Xác định lưu trữ Các file lưu trữ Tên file Hình 10.1 lệnh jar Dùng lệnh sau dấu nhắc liệt kê file file ‘pack.jar’ jar tf pack.jar Tuỳ chọn sử dụng cho bảng nội dung lưu trữ Tuỳ chọn xác định tên file lưu trữ Hình 10.2 Liệt kê file file pack.jar Để gộp file lưu trữ ‘pack.jar vào applet, mở trang HTML, thêm thuộc tính ARCHIVE=’pack.jar’ vào thẻ applet, sau: Thuộc tính cho trình duyệt nạp lưu trữ ‘pack.jar’ để tìm file ‘exr7.class’ Câu lệnh sau trích rút file nén file pack.jar: jar xvf pack.jar Mục chọn ‘x’ cho phép bạn trích rút nội dung file 10.3 Chữ ký điện tử (Digital Signature) để định danh applet Trong java, bảo mật applet web phần quan trọng Hacker viết applet nguy hiểm xuyên thủng hàng rào bảo mật Vì thế, applet hạn chế can thiệp ngôn ngữ Applet không hỗ trợ số thao tác sau: 234 Core Java  Đọc ghi file từ hệ thống nơi applet chạy  Lấy thông tin từ file hệ thống  Xoá file hệ thống Java thực tất thao tác trên, với applet cung cấp từ nhà cung cấp applet tin cậy, ký chữ ký điện tử (digitally signed) Hình sau minh họa trình mã hoá khoá Hình 10.3 Mã hoá dựa khoá Trong hình trên, khoá công khai (public keys) dùng mã hoá giải mã Cùng ý tưởng sử dụng cho chữ ký diện tử cộng thêm tính bổ sung Một chữ ký điện tử file mã hoá với chương trình để giúp nhận dạng xác nguồn gốc file Khóa bí mật tính giá trị từ file applet Người giữ khoá bí mật kiểm tra nội dung đối tượng Trong chữ ký điện tử, khóa riêng (private key) sử dụng để mã hóa, khoá công khai, dùng để giải mã Trong ký (sign) đối tượng, phía ký dùng thuật toán Message Digest (như MD5) để tính giá trin digest đối tượng Giá trị digest dùng 'dấu vân tay' đối tượng Digest sau mã hoá dùng khóa riêng, để tạo chử ký điện tử đối tượng Khoá công khai sử dụng để giải mã kiểm tra chúng Kết giải mã, giá trị digest đưa Giá trị digest đối tượng tính so sánh với giá trị digest giải mã Nếu giá trị digest đối tượng giá trị digest mã hoá khớp với nhau, chữ ký được xác nhận Tài liệu mô tả chữ ký gọi “Chứng thực” (Certificate) Thiết lập tin cậy, nhận dạng applet chứng nhận Chứng nhận thực thể khác sử dụng khóa công khai để giả mạo Nhà chứng thực (a certificate authority) dùng để thực chứng nhân Nhận được chứng thực từ CA (Certificate Authority), applet phải đệ trình tài liệu chứng thực nhận dạng Hiện công ty đưa dịch vụ xác nhận chứng thực sau:  VeriSign  Thawte Certification Bạn thiết lập mức bảo mật khác Một applet đưa uỷ thác hoàn toàn, không uỷ thác, với giúp đỡ tập lớp gọi Cài đặt bảo mật (Security Implementation) 235 permissions Nhưng nhìn chung, applet bị giới hạn tối đa, trừ nhà phát triển ký applet Điều xác định nhà phát triển tin cậy 10.4 Khoá bảo mật Java (Java Security key) Chúng ta cần tạo công cụ, tên là, ‘jar’, ‘jarsigner’, ‘keytool’, trước dùng applet ký Chúng ta cần tạo cặp khóa công public/private, làm cho trở nên sẵn sàng với công cụ jarsigner Bây giờ, sử dụng công cụ để tạo keystore  Keystore (Lưu trữ khoá) Keystore sở liệu khoá, chứa chứng thực số dùng để nhận dạng giá trị khoá công khai (public)  Keytool (Công cự khoá) Keytool công cụ khoá bảo mật java, tạo quản lý khóa công khai, khoá riêng (private), chứng thực bảo mật Nó thực hiện: o Quản lý cặp khoá công public/private o Lưu trữ khoá công khai o Dùng chứng thực để xác thực chứng thực khác o Xác thực (Authenticate) liệu nguồn Tất thông tin mà keytool quản lý lưu trữ sở liệu gọi keystore Sun có keystore mặc định dùng định dạng file gọi JKS (java key store Lưu trữ khoá java) Để kiểm tra xem hệ thống bạn có keystore định dạng hay chưa thực câu lệnh sau dấu nhắc lệnh: keytool –list Thông báo lỗi sau xuất bạn keystore bạn keytool error: keystore file does not exist: c:\windows\.keystore JDK tìm keystore thư mục C:\windows\ Đây vị trí chung cho file hệ thống quan trọng windows 95, 98 NT systems Tuỳ chọn keystore sử dụng lệnh keytool, sau: keytool –list keystore c:\java\try Câu lệnh cho JDK tìm keystore file gọi ‘try’ thư mục ‘C:\java\try’ Nếu không tìm thấy, hiển thị thông báo lỗi Lựa chọn ‘-genkey’ sử dụng với câu lệnh keytool để tạo cặp khoá công public/private Bạn dùng số tuỳ chọn khác Dạng đơn giản sau: keytool –genkey –alias “I” Bí danh (alias) dùng lưu trữ, thay xoá cặp khoá Các bí 236 Core Java danh keytool không phân biệt chữ hoa, thường Trong lệnh trên, không sử dụng tuỳ chọn keystore Nếu câu lệnh sử dụng tuỳ chọn keystore, viết lại sau: keytool –genkey –alias “I” –keystore “store” Trong lệnh trên, cặp khoá lưu trữ keystore tên ‘store’, không lưu keystore mật định hệ thống Sau nhập lệnh vào, nhấn phím enter, keytool nhắc bạn nhập vào mật (password) cho keystore, sau: Enter keystore password: Nhập vào ‘password’ mật yêu cầu Tiếp theo, keytool nhắc bạn nhập vào thông tin bổ sung như: What is your first and last name? (Tên họ) [unknown] what is the name of your organization unit? [unknown]: software Development What is the name of your organization? (Tên tổ chức) [Unknown]: ABC Consultants (tư vấn ABC) What is the name of your city or Locality? (tên thành phố địa phương bạn) [Unknown]: California What is the name of your State or Province? (tên bang tỉnh bạn) [Unknown]:United States of America What is the two-letter country code for this unit?(Mã quốc gia với ký tự) [Unknown]: US Khi bạn nhập vào thông tin, keytool hiển thị thông tin sau: Is correct? [no]: Cuối cùng, keystool nhắc bạn nhập vào mật cho khoá riêng bạn, như: Enter key password for (RETURN if same as keystore password): Thông tin sử dụng để kết hợp phân biệt tên (name) với bí danh (alias) Thông tin đưa vào trực tiếp từ mục chọn ‘dname’ Cài đặt bảo mật (Security Implementation) 237 Mật sau phần biệt với mật keystore Nó dùng truy cập khoá riêng cặp khoá Mật trực tiếp rõ cách sử dụng tuỳ chọn ‘-keypass’ Nếu mật không rõ, mật keystore dùng Tuỳ chọn ‘-keypasswd’ dùng thay đổi mật Tuỳ chọn ‘-keyalg’ rõ thuật toán tạo cặp khoá Khi bạn tạo khoá bổ sung vào keystore, bạn dùng tuỳ chọn ‘-list’ keytool để xem khoá có keystore hay không Để xoá cặp khoá từ sớ liệu, dùng lệnh sau: keytool –delete –alias aliasName ‘aliasName’ tên khoá xoá Bây giờ, tạo cặp khoá riêng/công cộng cho file JAR, ký danh Lệnh jarsigner dùng để ký danh file JAR Nhập lệnh sau vào dấu nhắc DOS: jarsigner –keystore keyStore –storepass storePassword –keypass keyPassword Bảng sau cung cấp danh sách JARFileNames bí danh: Tuỳ chọn keyStore storePassword keyPassword JARFileName Alias Mô tả Tên keystore sử dụng Mật keystore Mật khoá riêng Tên file JAR ký danh Bí danh ký danh Bảng 10.2 JARFileNames bí danh Để ký danh file JAR ‘pack.jar’, với keystore ‘store’, mật để lưu trữ khoá riêng ‘password’, dùng lệnh sau: jarsigner –keystore store –storepass password –keypass password pack.jar pk ‘pk’ nghĩa tên bí danh Nếu tuỳ chọn ‘-keystore’ không rõ, keystore mặc định dùng Để rõ chữ ký file JAR định danh, dùng tuỳ chọn ‘-verify’ jarsigner –verify pack.jar ‘pack.jar’ tên file JAR Nếu chữ ký không hợp lệ, ngoại lệ sau tạo Jarsigner:java.util.zip.ZipException:invalid entry size (expected 900 238 Core Java but got 876 bytes) Ngược lại, xuất thông báo “jar verified” (jar xác minh) Quá trình xác thực kiểm tra theo bước sau:  Có file ‘.DSA’ chứa chữ ký hợp lệ cho file chữ ký SF không  Có mục file chữ ký digest cho mục tương ứng file kê khai (manifest file) 10.5 Chữ ký điện tử (Digital Certificates) Cho đến bây giờ, học cách tạo ký file JAR Bây giờ, học cách xuất chữ ký điện tử (digital certificates), sử dụng để xác thực chữ ký file JAR Chúng ta học cách nhập chữ ký điển tử từ file khác vào Chữ ký điện tử file, đối tượng, thông báo ký quyền chứng thực (certificate authority) The CA (Certificate authority) cấp chứng nhận giá trị khoá công khai Chứng nhận X.509 tổ chức International Standards Organization dạng chứng nhận số phổ biến Keytool hổ trợ chứng nhận Keytool bước cần nhận chứng nhận (certificate) Chúng ta dùng chứng nhận tạo cặp khoá private/public Keytool nhập vào chứng nhận tạo ký Keytool tự động gắn khoá công khái với chứng nhận Cùng thực thể tạo khoá công khai ký chứng nhận Đó gọi ‘self-signed certificates’ (Chứng nhận tự ký) Các chứng nhận chứng nhận đáng tin cậy cho định danh Tuy nhiên, chúng cần để tạo yêu cầu ký danh chứng nhận (certificate-signing request) Keytool tuỳ chọn sử dụng để tạo chứng nhận Câu lệnh sau giúp tạo chứng nhận trên: keytool –keystore store –alias mykey –certreq –file mykey.txt Cặp khoá tạo ‘mykey’ Tuỳ chọn ‘-file’ tên file để lưu cerrtificatesigning Dùng tuỳ chọn ‘-export’ xuất chứng nhận sau: keytool –export –keystore store –alias pk –file mykey Câu lệnh hiển thị dấu nhắc sau: Enter keystore password Chứng nhận lưu trữ Để nhập chứng nhận khác vào keystore bạn, nhập câu lệnh sau: Cài đặt bảo mật (Security Implementation) 239 keytool -import –keytool keystore –alias alias –file filename Tên tên file chứa chứng nhận nhập vào (imported certificate) Câu lệnh sau tên bí danh ‘alice’ để nhập chứng nhận file ‘mykey’ vào keystore ‘MyStore’: keytool –import –keystore MyStore –alias alice –file mykey Câu lệnh hiển thị dấu nhắc sau: Enter keystore password: (Nhập vào mật keystore) Kết xuất hiển thị hai tuỳ chọn –Owner Issuer Nó hiển thị tên công ty, nghề nghiệp, tổ chức, địa điểm, bang tiền tệ Nó hiển thị số serial thời gian có giá trị Cuối cùng, hỏi tin cậy chứng nhận không Chứng nhận chấp thuận dựa vào tin tưởng cá nhân bạn Dùng lệnh ‘-list’ liệt kê nội dung keystore sau: keystool –list –keystore Store Câu lệnh yêu yều password keystore Dùng tuỳ chọn ‘-alias’ liệt kê mục Dùng lệnh -delete để xoá bí danh keystore, sau: keytool –delete –keystore Store –alias alias Dùng lệnh ‘-printcert’ in chứng nhận lưu trữ file, theo cách sau: keytool –printcert –file myfile Dùng lệnh ‘-help’ nhận danh sách tất tuỳ chọn mà keytool hổ trợ: keytool -help 10.6 Các gói bảo mật java (JAVA Security packages) Các gói bảo mật Java bao gồm:  java.security Đây gói API bảo mật Chứa lớp giao diện hỗ trợ mã hoá, digest chữ ký điện tử  java.security.acl Chứa giao diện dùng cài đặt sách điều khiển truy cập  java.security.cert Cung cấp hổ trợ cho chứng nhận X.509  java.security.interfaces 240 Core Java Định nghĩa giao diện truy nhập Digital Signature Algorithm  java.security.spec Cung cấp lớp độc lập phụ thuộc vào thuật toán mã hoá sử dụng khoá Tóm tắt:  Nếu khả bảo mật applet không đảm bảo, liệu nhạy cảm sữa đổi phơi bày  Mục đích JAR kết nối file mà applet sử dụng file nén Điều cho phép applet nạp vào trình duyệt cách hiệu  Một file kê khai (manifest file) chứa thông tin file lưu trữ  Chữ ký điện tử mã hoá kèm với chương trình để nhận diện xác nguồn gốc file  Keystore sở liệu khoá  Keytool công cụ khoá bảo mật java  chứng nhận điện tử file, đối tượng, thông báo ký quyền chứng nhận (certificate authority) Cài đặt bảo mật (Security Implementation) 241 Kiểm tra kiến thức: File file lưu trữ nén Tuỳ chọn _, dùng với công cụ jar, trích rút tên file từ lưu trữ (.jar) JAR tự động tạo file kê khai, chí không Đúng/Sai Thuộc tính ,khi dùng thẻ applet, cho trình duyệt nạp file jar, tìm file class applet Trong chữ ký điện tử, _được dùng cho mã hoá _được dùng cho giải mã Tất thông tin keytool quản lý, lưu trữ sở liệu gọi _ keytool bước cần thiết để nhận chứng nhận Đúng/Sai Gói _chứa giao diện dùng cài đặt sách điều khiển truy nhập 242 Core Java Bài tập Sử dụng câu lệnh java thực hành động sau: Tạo file jar ‘core-java.jar’ chứa file lớp (.class) file nguồn Liệt kê nội dung file jar Tạo file html nhúng applet CardLayoutDemo.class, file lớp chứa file jar Trích rút nội dung file jar Dùng lệnh keytool với tên bí danh keystore để tạo cặp khoá public/private Ký danh file jar tạo Xác minh chữ ký (signature) Xuất chứng nhận (certificate) Liệt kê nội dung keystore 10.In chứng nhận lưu file Cài đặt bảo mật (Security Implementation) 243 ... keytool -help 10. 6 Các gói bảo mật java (JAVA Security packages) Các gói bảo mật Java bao gồm:  java. security Đây gói API bảo mật Chứa lớp giao diện hỗ trợ mã hoá, digest chữ ký điện tử  java. security.acl... khiển truy cập  java. security.cert Cung cấp hổ trợ cho chứng nhận X.509  java. security.interfaces 240 Core Java Định nghĩa giao diện truy nhập Digital Signature Algorithm  java. security.spec... _chứa giao diện dùng cài đặt sách điều khiển truy nhập 242 Core Java Bài tập Sử dụng câu lệnh java thực hành động sau: Tạo file jar core- java. jar’ chứa file lớp (.class) file nguồn Liệt kê nội

Ngày đăng: 24/08/2017, 11:56

Từ khóa liên quan

Mục lục

  • Hình 10.1 lệnh jar

  • Hình 10.2 Liệt kê các file trong file pack.jar

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

  • Đang cập nhật ...

Tài liệu liên quan