Tải bản đầy đủ (.ppt) (20 trang)

Bài giảng - giáo án: Bài giảng Java Chương 5 bảo mật trong java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (361.25 KB, 20 trang )

LẬP TRÌNH JAVA NÂNG CAO
Chương 05: Bảo mật trong Java
Bộ môn: Lập trình máy tính
Nội dung chương 05

Tổng quan về bảo mật trong Java

Cơ cấu bảo mật của Java

Cấu trúc mã hóa

Chữ ký điện tử và dấu chứng nhận

Case Study
Tổng quan về bảo mật trong Java

Java là ngôn ngữ lập trình đầu tiên gửi các
chương trình tương tác thông qua World
Wide Web

Các chương trình này được chạy trên hệ
thống của người dùng, thay vì chạy trên máy
chủ Web (Web server)

Thiếu tính bảo mật trong Applet có thể dẫn
tới việc sửa đổi hoặc đọc các dữ liệu nhạy
cảm trên máy người sử dụng Applet.
Công cụ JAR

Công dụng: Tạo file lưu trữ .jar, chứa nhiều file trong một file
lưu trữ (.jar), cho phép tải về trình duyệt một cách hiệu quả



Cú pháp: jar [options][manifest] jar-file input-file(s)
Tuỳ chọn Mô tả
c Tạo ra một file jar mới
t Liệt kê nội dung của file jar
x Trích dẫn file có tên từ file jar
v Tạo đầu ra chi tiết (verbose output) trên dòng lỗi chuẩn
f Xác định tên file jar
m Bao hàm thông tin chứng thực từ các file chứng thực xác định.
o Chỉ lưu trữ, không nén
M Không tạo các file chứng thực cho các mục (entries).
Gộp file lưu trữ vào Applet

Mở trang HTML

Thêm thuộc tính ARCHIVE
=’tenfileluutru.jar’ vào thẻ applet, như sau:
<applet code=”tenApplet.class”
ARRCHIVE=”tenfileluutru.jar” height=125
width=350></applet>

Thuộc tính sẽ chỉ cho trình duyệt nạp lưu trữ
‘tenfileluutru.jar’ để tìm file
‘tenApplet.class’
Bảo mật Applet

Applet hạn chế sự can thiệp của các ngôn
ngữ, không hỗ trợ một số thao tác sau:

Đọc và ghi file từ hệ thống, nơi applet đang

chạy.

Lấy thông tin từ file của hệ thống

Xoá file của hệ thống

Java 2 có thể thực hiện tất cả các thao tác
trên, với các Applet được cung cấp từ nhà
cung cấp applet tin cậy, và có ký chữ ký điện
tử (digitally signed)
Mã hoá sử dụng khoá công khai
Chữ ký điện tử

Là một file, một đối tượng, hoặc một thông báo được
mã hoá đi cùng với chương trình

Giúp nhận dạng chính xác nguồn gốc của file

Một khóa riêng (private key) được sử dụng để mã
hóa, khoá công khai (public keys) được sử dụng để
giải mã.

Người ký dùng thuật toán Message Digest (như MD5) để
tính giá trị digest của đối tượng.

Digest sau đó được mã hoá dùng khóa riêng, để tạo ra chử
ký điện tử của đối tượng.

Khoá công khai được sử dụng để giải mã và kiểm tra.


Tài liệu mô tả chữ ký được gọi là “Chứng thực”
(Certificate)
Khoá bảo mật Java

Tạo 3 công cụ là ‘jar’, ‘jarsigner’, và
‘keytool’, trước khi dùng các applet được ký.

Keystore (Lưu trữ khoá): là cơ sở dữ liệu
khoá, chứa các chứng thực số dùng để nhận
dạng các giá trị khoá công khai.

Keytool là công cụ khoá bảo mật của java
Keytool

Keytool là công cụ khoá bảo mật của java.

Tạo và quản lý khóa công khai, khoá riêng, và
các chứng thực bảo mật.

Thông tin keytool quản lý được lưu trữ trong
keystore.

Keytool cũng có thể thực hiện:

Quản lý cặp khoá public/private.

Lưu trữ các khoá công khai

Dùng các chứng thực để xác thực chứng thực khác


Xác thực (Authenticate) dữ liệu nguồn
Keytool (tt)

Để kiểm tra hệ thống có một keystore hay
chưa, thực hiện câu lệnh sau:
keytool –list

Có thể sử dụng tuỳ chọn keystore để chỉ cho
JDK tìm keystore trong file ‘try’ của thư mục
‘try’:
keytool –list keystore c:\java\try

Tùy chọn ‘-genkey’ được sử dụng để tạo cặp
khoá public/private:
keytool –genkey –alias “I”
Keytool (tt)

Nhập mật khẩu (password) cho keystore:
Enter keystore password:

Nhập các thông tin bổ sung:
What is your first and last name? [unknown]
what is the name of your organization unit? [unknown]
What is the name of your organization? [Unknown]
What is the name of your city or Locality? [Unknown]
What is the name of your State or Province? [Unknown]
What is the two-letter country code for this unit?
[Unknown]
Keytool (tt)


Nhập mật khẩu cho khoá riêng:
Enter key password for <I>
(RETURN if same as keystore password):

Mật khẩu sau cùng phần biệt với mật khẩu keystore,
được dùng để truy cập khoá riêng của cặp khoá.

Chỉ rõ bằng cách sử dụng tuỳ chọn ‘-keypass’, nếu
không, mật khẩu keystore sẽ được sử dụng.

Tuỳ chọn ‘-keypasswd’ được dùng để thay đổi mật khẩu

Tuỳ chọn ‘-keyalg’ chỉ rõ thuật toán tạo cặp khoá

Xoá cặp khoá từ cơ sớ liệu, dùng lệnh sau:
keytool –delete –alias aliasName
jarsigner

Được sử dụng để ký một file JAR

Cú pháp:
jarsigner –keystore keyStore –storepass storePassword –
keypass keyPassword JARFileNames Alias
Tuỳ chọn Mô tả
keyStore Tên keystore sử dụng
storePassword Mật khẩu keystore
keyPassword Mật khẩu khoá riêng
JARFileName Tên của file JAR được ký danh
Alias Bí danh của bộ ký danh

Xuất chữ ký điện tử

CA (Certificate authority) cấp chứng nhận giá
trị các khoá công khai. Ví dụ chứng nhận
X.509 của tổ chức International Standards
Organization, được hỗ trợ bởi keytool.

Ví dụ tạo chứng nhận trên:
keytool –keystore store –alias mykey –certreq –
file mykey.txt

Tuỳ chọn ‘-export’ để xuất các chứng nhận:
keytool –export –keystore store –alias pk –file
mykey
Nhập chữ ký điện tử

Để nhập các chứng nhận khác vào keystore, sử
dụng câu lệnh sau:
keytool -import –keytool keystore –alias alias –
file filename

Ví dụ, câu lệnh sau chỉ tên bí danh là ‘alice’ để
nhập chứng nhận trong file ‘mykey’ vào
keystore ‘MyStore’:
keytool –import –keystore MyStore –alias alice –
file mykey
Các gói bảo mật của Java

java.security: Là gói API bảo mật chính, chứa các
lớp và giao diện hỗ trợ mã hoá, digest và chữ ký

điện tử.

java.security.acl: Chứa các giao diện dùng để cài
đặt các chính sách điều khiển truy cập

java.security.cert: Cung cấp sự hổ trợ cho chứng
nhận X.509

java.security.interfaces: Định nghĩa các giao diện
truy cập Digital Signature Algorithm

java.security.spec: Cung cấp các lớp độc lập và
phụ thuộc vào thuật toán mã hoá sử dụng khoá.
Các gói bảo mật của Java (tiếp)

Các website hiện nay không chỉ đơn thuần
hiển thị dữ liệu tĩnh, mà nhu cầu kết nối và
thao tác với cơ sở dữ liệu ngày càng cao.
Một trong những cách dùng để tổ chức cấu
trúc website thường sử dụng nhất là mô
hình MVC, và Zend là một framework hỗ
trợ mạnh cho mô hình này
Bài tập

Tìm hiểu về HTML (HyperText Markup
Language)

Tìm hiểu về CSS3 so sánh với Java

×