Chương 10
CÀI ĐẶT BO MT
Mc tiêu bài hc:
Cui chương này bn có th:
Mô t v công c JAR
To và xem mt file JAR, lit kê và trích rút ni dung ca nó.
S dng ch ký đin t (Digital Signatures) để nhn dng Applets
To b công c khóa bo mt (Security key)
Làm vic vi chng ch s (Digital Certificate)
Tìm hiu v gói Java.security
10.1 Gii thiu
Trong phn này, chúng ta s tìm hiu chi tiết v bo mt Java applet. Chúng ta cũng tho
lun v mô hình bo mt JDK 1.2 đáp ng nhu cu người dùng và người phát trin phm
mm.
Java là mt ngôn ng lp trình đầu tiên gi các chương trình tương tác như văn bn, nh
và các thông tin tĩnh thông qua World Wide Web. Các chương trình này, không ging như
chương trình CGI, nó được chy trên h thng ca người dùng, thay vì chy trên máy ch
Web (Web server). Bo mt Java Applet là s quan tâm chính gia người dùng và nhà
phát trin applet. Thiếu tính bo mt trong applet có th dn ti vic sa đổi hoc đọc các
d liu nhy cm trên máy người s dung applet. Mô hình bo mt ca Java 2, hoc JDK
1.2 rt hu ích cho người dùng, cũng như cho nhà phát trin. Nó giúp người dùng duy trì
mc độ bo mt cao. Trong chương nay, chúng ta s hc mô hình bo mt JDK 1.2.
10.2 Công c JAR
Mt file JAR là mt file lưu tr được nén do công c (jar.exe) ca Java to ra. Nó tương t
như chương trình PKZIP. Nó cha nhiu file trong mt file lưu tr (.jar). Điu này cho phép
ti v trình duyt hiu qu. Dùng mt jar vi applet ci thin đáng k hiu năng thc hin
ca trình duyt. Vì tc c các tt c các file được biên dch và để trong mt file duy nht,
trình duyt ch cn thiết lp kết ni HTTP vi web server. Nén file gim 50% thi gian ti
file.
Để khi động công c JAR, dùng câu lnh sau ti du nhc lnh:
jar [options][manifest] jar-file input-file(s)
Cài đ t b o m t (Security Implementation) 233
Tu chn Mô t
c To ra mt file jar mi
t Lit kê ni dung ca file jar
x Trích dn file có tên t file jar
v To đầu ra chi tiết (verbose output) trên dòng li chun
f Xác định tên file jar
m Bao hàm thông tin chng thc t các file chng thc xác định.
o Ch lưu tr, không nén
M Không to các file chng thc cho các mc (entries).
Bng 10.1 Công c jar
Mt file chng thc cha thông v các file lưu tr. File này là mt tu chn. Thm chí file
không xác định thì JAR cũng t động to ra. File jar được dùng như các lưu tr. File này
phi có phn m rng là ‘.jar được xác định ti dòng lnh. File đầu vào (input-file) là danh
sách file phân cách b du phy. Netscape Navigator và Internet Explorer h tr file JAR.
Câu lnh sau lưu tr tt c các file class và file java bao gm trong mt thư mc hin hành
vào mt file jar gi làpack’
jar cf pack.jar *.class *.java
Hình 10.1 lnh jar
Dùng lnh sau ti du nhc lit kê các file trong file ‘pack.jar’
jar tf pack.jar
Hình 10.2 Lit kê các file trong file pack.jar
Để gp file lưu tr ‘pack.jar vào trong mt applet, m trang HTML, và thêm thuc tính
ARCHIVE=’pack.jar vào th applet, như sau:
234 Core Java
To mt lưu tr mi
Lnh jar
Xác đ nh l u tr ư
Tên file
Các file được lưu tr
Tuỳ ch n này đ c s d ng cho b ng n i dung l u tr ượ ư
Tu chn xác định tên file lưu tr
<applet code=”exr7.class” ARRCHIVE=”pack.jar” height=125
width=350></applet>
Thuc tính s ch cho trình duyt np lưu tr ‘pack.jar’ để tìm file ‘exr7.class
Câu lnh sau trích rút các file được nén trong file pack.jar:
jar xvf pack.jar
Mc chn ‘x’ cho phép bn trích rút ni dung ca file.
10.3 Ch ký đin t (Digital Signature) để định danh các applet
Trong java, bo mt applet trên web là phn rt quan trng. Hacker có th viết các applet
nguy him xuyên thng hàng rào bo mt. Vì thế, applet hn chế s can thip ca các
ngôn ng. Applet không h tr mt s thao tác sau:
Đọc và ghi file t h thng nơi applet đang chy.
Ly thông tin t file ca h thng
Xoá file ca h thng.
Java 2 có th thc hin tt c các thao tác trên, vi các applet cung cp t mt nhà cung
cp applet tin cy, và được ký ch ký đin t (digitally signed).
Hình sau minh ha quá trình mã hoá khoá
Hình 10.3. Mã hoá da trên các khoá
Trong hình trên, khoá công khai (public keys) được dùng mã hoá và gii mã. Cùng ý tưởng
được s dng cho ch ký din t cng thêm các tính năng b sung.
Cài đ t b o m t (Security Implementation) 235
Mt ch ký đin t là mt file mã hoá đi cùng vi chương trình để giúp nhn dng chính
xác ngun gc ca file. Khóa bí mt tính giá tr t file applet. Người gi khoá bí mt kim
tra ni dung ca đối tượng.
Trong ch ký đin t, mt khóa riêng (private key) được s dng để mã hóa, và khoá công
khai, được dùng để gii mã. Trong khi ký (sign) trên mt đối tượng, phía ký dùng thut
toán Message Digest (như MD5) để tính giá trin digest ca đối tượng. Giá tr digest được
dùng như là 'du vân tay' ca đối tượng. Digest sau đó được mã hoá dùng khóa riêng, để
to ra ch ký đin t ca đối tượng. Khoá công khai được s dng để gii mã và kim tra
chúng. Kết qu ca s gii mã, giá tr digest được đưa ra. Giá tr digest ca đối tượng
được tính và so sánh vi giá tr digest được gii mã. Nếu giá tr digest ca đối tượng và giá
tr digest được mã hoá khp vi nhau, ch ký được được xác nhn. Tài liu mô t ch ký
được gi là “Chng thc” (Certificate)
Thiết lp s tin cy, nhn dng applet được chng nhn. Chng nhn các thc th khác
s dng khóa công khai để gi mo. Nhà chng thc (a certificate authority) được dùng để
thc hin chng nhân. Nhn được được chng thc t mt CA (Certificate Authority),
applet phi đệ trình tài liu chng thc s nhn dng ca nó.
Hin gi các công ty đưa ra các dch v xác nhn chng thc sau:
VeriSign
Thawte Certification
Bn có th thiết lp các mc bo mt khác nhau. Mt applet có th đưa ra s u thác
hoàn toàn, hoc không u thác, vi s giúp đỡ ca tp các lp gi là permissions. Nhưng
nhìn chung, các applet b gii hn mt các ti đa, tr khi nhà phát trin ký trên applet.
Điu này xác định nhà phát trin là tin cy.
10.4 Khoá bo mt Java (Java Security key).
Chúng ta cn to 3 công c, tên là, ‘jar’, ‘jarsigner’, và ‘keytool’, trước khi dùng các applet
được ký. Chúng ta cn to cp khóa công public/private, và làm cho nó tr nên sn sàng
vi công c jarsigner.
Bây gi, chúng ta s s dng các công c để to keystore.
Keystore (Lưu tr khoá)
Keystore là mt cơ s d liu khoá, cha các chng thc s dùng để nhn dng các
giá tr khoá công khai (public).
Keytool (Công c khoá)
Keytool là công c khoá bo mt ca java, to và qun lý khóa công khai, khoá riêng
(private), và các chng thc bo mt. Nó cũng có th thc hin:
oQun lý cp khoá công public/private
236 Core Java
oLưu tr các khoá công khai
oDùng các chng thc để xác thc chng thc khác.
oXác thc (Authenticate) d liu ngun.
Tt c thông tin mà keytool qun lý được lưu tr trong cơ s d liu gi là keystore. Sun có
mt keystore mc định dùng định dng file mi gi là JKS (java key store Lưu tr khoá
java). Để kim tra xem h thng bn có mt keystore dưới định dng này hay chưa hãy
thc hin câu lnh sau ti du nhc lnh:
keytool –list
Thông báo li sau xut hin nếu bn không có gì trong keystore ca bn.
keytool error: keystore file does not exist: c:\windows\.keystore
JDK tìm keystore chính trong thư mc C:\windows\. Đây là mt v trí chung cho các file h
thng quan trng trên windows 95, 98 và NT systems.
Tu chn keystore cũng có th được s dng trong lnh keytool, như sau:
keytool –list keystore c:\java\try
Câu lnh này ch cho JDK tìm keystore trong file được gi là ‘try’ trong thư mc
‘C:\java\try’. Nếu không tìm thy, s hin th thông báo li như trên.
La chn ‘-genkey’ có th được s dng cùng vi câu lnh keytool để to cp khoá công
public/private. Bn cũng có th dùng mt s các tu chn khác. Dng đơn gin nht như
sau:
keytool –genkey –alias “I”
Bí danh (alias) có th được dùng lưu tr, thay thế hoc xoá cp khoá. Các bí danh keytool
không phân bit ch hoa, thường. Trong lnh trên, chúng ta không s dng tu chn
keystore. Nếu cùng câu lnh s dng tu chn keystore, s được viết li như sau:
keytool –genkey –alias “I” –keystore “store”
Trong lnh trên, cp khoá s được lưu tr trong keystore tên là ‘store’, và không lưu trong
keystore mt định ca h thng.
Cài đ t b o m t (Security Implementation) 237