1. Trang chủ
  2. » Công Nghệ Thông Tin

lap trinh java chuong 10

9 279 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 205,81 KB

Nội dung

tong hop lap trinh java chi tiet, ro, de hieu cho nhung nguoi dang muon hoc lap trinh java, do minh tim tren internet

85 THC THI BO MT Mc tiêu bài hc: Cui chng này bn có th  Mô t v công c JAR  To và xem mt file JAR, và lit kê và trích rút ni dung ca file.  S dng ch ký đin t (Digital Signatures) đ nhn dng Applets  To b công c khóa bo mt (Security key)  Làm vic vi chng ch s (Digital Certificate)  Tìm hiu v gói Java.security 10.1 Gii thiu: Trong phn này, chúng ta s tìm hiu chi tit v bo mt Java applet. Chúng ta cng tho lun v mô hình bo mt JDK 1.2 đáp ng nhu cu ngi dùng và nhà phát trin. Java là mt ngôn ng lp trình đu tiên gi các chng trình không tng tác nh các file vn bn, file 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 ging nh chng trình CGI, đc chy trên h thng ca ngi dùng, hn là chy trên máy ch Web (Web server). Bo mt Java Applet là s quan tâm chính gia ngi dùng và nhà phát trin applet. Thit tính bo mt trong applet có th dn ti sa đi hoc phi bày các d liu nhy cm. Mô hình bo mt ca Java 2, hoc JDK 1.2 rt hu ích cho ngi dùng, cng nh cho nhà phát trin. Nó giúp ngi dùng duy trì mc đ bo mt cao. Trong chng nay, chúng ta s hc mô hình bo mt JDK 1.2. 10.2 Công c JAR: Mt file JAR là mt file lu tr đc nén do công c lu tr Java to ra. File này tng t nh chng trình PKZIP. Nó cha nhiu file trong mt file lu tr. iu này cho phép ti trong trình duyt hiu qu. Dùng mt jar vi mt applet ci tin đáng k kh nng thc hin ca trình duyt. Vì tc c các tt c các file đc biên dch trong mt file đn, trình duyt ch 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 ti du nhc lnh: jar [options][manifest] jar-file input-file(s) Tu chn Mô t c To ra mt lu tr mi t Ghi vào bng ni dung cho lu tr x Trích dn file có tên t lu tr v To ngun xut đa dòng (verbose output) trên mt li chun f Xác đnh tên file lu tr m Bao hàm thông tin chng thc t các file chng thc xác đnh o Lu tr ch ‘use no zip’ nén M Không to các file chng thc cho các mc (entries). Bng 0.1. công c jar Mt file chng thc cha thông v các file lu tr. File này là mt tu chn. Thm chí file không xác đnh thì JAR cng t đng to ra. File jar đc dùng nh các lu tr. File này phi có phn m rng là ‘.jar’ đc xác đnh ti dòng lnh. File đu vào (input-file) là danh sách phân cách các file đc đt trong lu tr. Netscape Navigator và Internet Explorer h tr file JAR. Câu lnh sau lu tr tt c các file class và file java bao gm trong mt th mc xác đnh vào mt file jar gi là ‘pack’ 86 jar cf pack.jar *.class *.java Hình 10.1 lnh jar Dùng lnh sau ti du nhc lit kê các file trong file ‘pack.jar’ jar tf pack.jar Hình 10.2 Lit kê các file trong file pack.jar  gp file lu tr ‘pack.jar vào trong mt applet, m trang HTML, và thêm thuc tính ARCHIVE=’pack.jar’ vào th applet, nh sau: <applet code=”exr7.class” ARRCHIVE=”pack.jar” height=125 width=350></applet> Thuc tính s ch 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 các file đc nén trong file pack.jar: jar xvf pack.jar Mc chn ‘x’ cho phép bn trích rút ni dung ca file. 10.3 Ch ký đin t (Digital Signature) cho đnh danh các applet: Trong java, bo mt applet trên web là phn rt quan trng. Hacker có th vit các applet nguy him xuyên thng hàng rào bo mt. Vì th, applet hn ch s can thit ca các ngôn ng. Applet không h tr mt s nét đt trng sau:  c và ghi file t h thng ni applet đang chy.  Ly thông tin v mt file t h thng  Xoá mt file t h thng. Java 2 có th thc hin tt c các đc đim trên, vi các applet cung cp t mt nhà cung cp applet tin cy, và đc ký danh s (digitally signed). Hình sau minh ha quá trình mã hoá khoá T  o m  t lu tr mi Tên câu l  nh Xác đ  nh lu tr Tên file Các file đ  c lu tr Tu  ch  n nà y đ  c s d  n g cho bn g n  i dun g lu tr Tu  chn xác đnh tên file lu t r  87 Hình 10.3. Mã hoá da trên các khoá Trong hình trên, khoá công cng (public keys) đc dùng mã hoá và gii mã. Cùng ý tng đc s dng cho ch ký s, thêm các tính nng b sung. Mt ch ký s là mt file mã hoá cung cp chng trình nhn dng chính xác ngun gc ca 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 ca đi tng. Trong đnh danh s, mt khóa riêng (private key) đc s dng đ mã hóa, và khoá công cng, đc dùng gii mã. Trong khi ký danh (sign) mt đi tng, ngi ký danh dùng thut toán tóm lc thông báo nh MD5 đ tính bng tóm lc ca đi tng. Bng tóm lc đc dùng nh là du tay cho đi tng. bng tóm lc ln lt đc mã hoá dùng khóa riêng, đa ra ch ký đin t ca đi tng. Khoá công cng ca b ký duyt dùng đ mã hoá ch ký và kim tra chúng. Kt qu ca s gii mã, giá tr tóm lc đc đa ra. Giá tr tóm lc ca đi tng đc tính và so sánh vi giá tr tóm lc đc gii mã. Nu giá tr tóm lc (digest) ca đi tng và giá tr tóm lc đc mã hoá khp vi nhau, ch ký đc đc xác nhn. Tài liu mô t ch ký đc gi là “Chng thc” (Certificate) Thit lp s u thác (trust), nhn dng applet đc chng nhn. Chng nhn các thc th các s dng khóa công cng đt bit. Quyn chng thc (a certificate authority) đc dùng thc hin chng nhân. Nhn đc đc chng thc t mt CA (Certificate Authority), applet phi đ trình tài liu chng thc s nhn dng ca nó. Hin gi các công ty đa ra các dch v xác nhn chng thc sau:  VeriSign  Chng thc Thawte Bn có th thit lp các mc bo mt khác nhau. Mt applet có th đa ra s u thác hoàn toàn, hoc không u thác, vi s giúp đ ca tp các lp gi là “Quyn” (Permissions). Nhng nhìn chung, mi applet đc gii hn mt cách đy đ, tr khi nhà phát trin ký danh applet. iu này thit lp cho nhà phát trin đáng tin cy. 10.4 Khoá bo mt Java (Java Security key). Chúng ta cn to 3 công c, tên là, ‘jar’, ‘jarsigner’, và ‘keytool’, trc khi dùng các applet ký danh. Chúng ta cn to cp khóa công cng/riêng, và làm cho nó tr nên sn sàng vi công c jarsigner. Bây gi, chúng ta s to các công dng ca keystore.  Keystore (Lu tr khoá) Keystore là mt 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 cng.  Keytool (Công c khoá) 88 Keytool là công c khoá bo mt ca java, to và qun lý khóa công cng, khoá riêng, và các chng thc bo mt. Nó cng có th thc hin: o Qun lý cp khoá công cng/riêng o Lu tr các khoá công cng o Dùng các chng thc đ xác thc chng thc khác. o Xác thc (Authenticate) d liu ngun. Tt c thông tin mà keytool qun lý đc lu tr trong c s d liu gi là keystore. Sun có mt keystore mt đnh dùng mt đnh dng file mi gi là JKS (java key store Lu tr khoá java).  kim nu h thng bn có mt keystore di đnh dng này, thc hin câu lnh sau ti du nhc lnh: Keytool –list Thông báo li sau xut hin nu bn không có gì trong keystore ca bn. Keytool error: keystore file does not exist: c:\windows\.keystore JDK tìm keystore chính trong th mc C:\windows\. ây là mt v trí chung cho các file h thng quan trng trên windows 95, 98 và NT systems. Tu chn keystore cng có th đc s dng trong lnh keytool, nh sau: keytool –list keystore c:\java\try Câu lnh này ch cho JDK tìm keystore trong file đc gi là ‘try’ trong th mc ‘C:\java\try’. Nu không tìm thy, s hin th thông báo li nh trên. Mc ‘-genkey’ có th đc s dng cùng vi câu lnh keytool đ to cp khoá công cng/riêng. Bn cng có th dùng mt s các tu chn khác. Dng đn gin nht nh sau: keytool –genkey –alias “I” Bí danh (alias) có th đc dùng lu tr, thay th hoc xoá cp khoá. Các bí danh keytool không phân bit ch hoa. Trong lnh trên, chúng ta không s dng tu chn keystore. Nu cùng câu lnh s dng tu chn keystore, s đc vit li nh sau: keytool –genkey –alias “I” –keystore “store” Trong lnh trên, cp khoá s đc lu tr trong keystore ‘store’, và không lu trong keystore mt đnh ca h thng. Sau khi nhp lnh trên vào, và nhn phím enter, keytool nhc bn nhp vào mt khu (password) cho keystore, nh sau: Enter keystore password Nhp vào ‘password’ nh yêu cu. Tip theo, keytool nhc bn nhp vào các thông tin b sung nh: What is your first and last name? (Tên và h) [unknown] what is the name of your organization unit? 89 [unknown]: software Development. What is the name of your organization? (Tên ca t chc) [Unknown]: ABC Consultants (t vn ABC) What is the name of your city or Locality? (tên thành ph hoc đa phng ca bn) [Unknown]: California What is the name of your State or Province? (tên bang hoc tnh ca bn) [Unknown]:United States of America What is the two-letter country code for this unit?(Mã quc gia vi 2 ký t) [Unknown]: US Khi bn đã nhp vào các thông tin, keytool hin th thông tin sau: Is <CN=Bob Fernandes, OU=Software Development, O=ABC Consultants, L=California, ST=United States of America, C=US>correct? [no]: Cui cùng, keystool nhc bn nhp vào mt khu cho khoá riêng ca bn, nh: Enter key password for <I> (RETURN if same as keystore password) Thông tin trên đc s dng đ kt hp s phân bit tên (name) X500 vi bí danh (alias). Thông tin trên cng có th đc đa vào trc tip t mc chn ‘-dname’ Mt khu sau cùng phn bit vi mt khu keystore. Nó đc dùng truy cp khoá riêng ca cp khoá công cng. Mt khu có th trc tip ch rõ bng cách s dng tu chn ‘-keypass’. Nu mt khu không ch rõ, mt khu keystore đc s đc dùng. Tu chn ‘-keypasswd’ dùng thay đi mt khu. Tu chn ‘-keyalg’ ch rõ thut toán to cp khoá. Khi bn to mt khoá và b sung nó vào trong keystore, bn có th dùng tu chn ‘-list’ ca keytool đ xem khoá có trong keystore hay không.  xoá cp khoá t c s liu, dùng lnh sau: keytool –delete –alias aliasName ‘aliasName’ ch tên ca khoá đc xoá. Bây gi, chúng ta to cp khoá riêng/công cng cho file JAR, chúng ta hãy ký danh nó. Lnh jarsigner dùng đ ký danh mt 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 ca JARFileNames và bí danh: 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 90 Bng 10.2 JARFileNames và bí danh  ký danh file JAR ‘pack.jar’, vi keystore ‘store’, và mt khu đ lu tr và các khoá riêng là ‘password’, dùng lnh sau: jarsigner –keystore store –storepass password –keypass password pack.jar pk ‘pk’ ngha là tên bí danh. Nu tu chn ‘-keystore’ không ch rõ, thì keystore mt đnh đc dùng.  ch rõ ch ký ca file JAR đc đnh danh, dùng tu chn ‘-verify’. jarsigner –verify pack.jar ‘pack.jar’ ch tên file JAR. Nu ch ký không hp l, thì ngoi l sau đc ném ra (thrown). Jarsigner:java.util.zip.ZipException:invalid entry size (expected 900 but got 876 bytes) Ngc li, xut hin thông báo “jar verified” (jar đc xác minh) Quá trình xác thc kim tra theo các bc sau:  Có file ‘.DSA’ cha ch ký hp l cho file ch ký .SF không.  Có các mc trong file ch ký là các tóm lc hp l cho mi mc tng ng file kê khai (manifest file) 10.5 Ch ký đin t (digital Certificates) Cho đn bây gi, chúng ta đã hc cách to và ký danh mt file JAR. Bây gi, chúng ta s hc cách xut các ch ký đin t(digital certificates), s s dng đ xác thc ch ký ca các file JAR. Chúng ta cng s hc các nhp ch ký đin t t các file các. Ch ký đin t là mt file, mt đi tng, hoc mt thông báo đc ký danh bi quyn chng thc (certificate authority). The CA (Certificate authority) cp chng nhn giá tr các khoá công cng. Chng nhn X.509 ca t chc International Standards Organization là mt dng chng nhn s ph bin. Keytool h tr nhng chng nhn này. Keytool  bc đu tiên cn nhn đc mt chng nhn (certificate). Chúng ta dùng chng nhn đó to cp khoá ‘công cng/riêng’ (private/public). Keytool nhp vào các chng nhn đã đc to và đc ký danh. Keytool t đng gn (bundle) khoá công cng mi vi mt chng nhn mi. Cùng thc th đã to khoá công cng ký danh chng nhn này. ó đc gi là ‘self-signed certificates’ (Chng nhn t ký danh).Các chng nhn này không phi là chng nhn đáng tin cy cho đnh danh. Tuy nhiên, chúng cn đ to các yêu cu ký danh chng nhn (certificate-signing request). Keytool và tu chn đc s dng đ to các chng nhn trên. Câu lnh sau giúp to các chng nhn trên: keytool –keystore store –alias mykey –certreq –file mykey.txt Cp khoá đc to là ‘mykey’. Tu chn ‘-file’ ch tên file, mà yêu cu ký danh chng nhn dùng đ lu. 91 Dùng lnh ‘-export’ xut các chng nhn này nh sau: keytool –export –keystore store –alias pk –file mykey Câu lnh trên hin th du nhc sau: Enter keystore password Chng nhn đã lu tr trong <mykey>  nhp các chng nhn khác vào keystore ca bn, nhp câu lnh sau: keytool import –keytool keystore –alias alias –file filename Tên đc ch nh là tên file cha chng nhn đc nhp vào (imported certificate). 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âu lnh trên hin th du nhc sau: Enter keystore password (Nhp vào mt khu keystore) Kt qu xut ra hin th hai tu chn –Owner và Issuer. Nó hin th tên công ty, ngh nghip, t chc, đa đim, bang và tin t. Nó cng hin th s serial và thi gian có giá tr. Cui cùng, nó hi có là chng nhn u thác không. Chng nhn đc chp thun cho s u thác ca riêng bn. Dùng lnh ‘-list’ lit kê ni dung ca keystore nh sau: keystool –list –keystore Store Câu lnh trên yêu yu password keystore Dùng tu chn ‘-alias’ lit kê mt mc. Dùng lnh -delete đ xoá bí danh trong keystore, nh sau: keytool –delete –keystore Store –alias alias Dùng lnh ‘-printcert’ in chng nhn đc lu tr trong file, theo cách sau: keytool –printcert –file myfile Dùng lnh ‘-help’ nhn v danh sách tt c các lnh 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: 92  java.security ây là gói API nhân bo mt (the core security API package). Cha các lp và giao din (interface) h tr mã hoá (encryption), tính bng tóm lc tài liu 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 ki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 thut toán ch ký đin t (the digital signature algorithm)  java.security.spec Cung cp các lp đc lp và phc thuc vào thut toán cho các khoá. Tóm tt:  Nu kh nng bo mt trong applet không đm bo, các d liu nhy cm có th đc sa đi hoc phi bày.  Mc đích chính ca JAR là kt ni các file mà applet s dng trong mt file nén đn. iu này cho phép các applet np vào trình duyt mt cách hiu qu.  Mt file kê khai (manifest file) cha thông tin v các file lu tr.  Ch ký đin t là mt mã hoá kèm vi chng trình đ nhn din chính xác ni ngun gc ca file.  Keystore là mt c s d liu ca các khoá.  Keytool là công c khoá bo mt ca java.  chng nhn đin t là mt file, hoc mt đi tng, hoc mt thông báo đc ký danh bi quyn chng nhn (certificate authority) Kim tra kin thc: 1. File ________là file lu tr đc nén. 2. Tu chn _____, khi dùng vi công c jar, trích rút tên file t mt lu tr (file) 3. JAR t đng to file kê khai, thm chí nó không đc ch ra true/false 4. Thuc tính______,khi dùng trong th applet, ch cho trình duyt np file jar lu tr c th, và tìm file class đc nhp vào. 5. Trong ch ký đin t, _______đc dùng cho mã hoá và _________đc dùng cho gii mã. 6. Tt c các thông tin keytool qun lý, đc lu tr trong mt c s d liu gi là _______ 7. keytool  bc đu tiên cn nhn đc mt chng nhn true/false 8. Gói _______cha giao din (interfaces) dùng cài đt các chính sách điu kin truy cp. Bài tp: To các câu lnh java thc hin các hành đng sau: 1. To mt file jar ‘core-java.jar’ cha các file lp (class file) và các file ngun. 2. Lit kê ni dung ca file jar. 3. To file html cho file CardLayoutDemo.class,file lp đc cha trong file jar. 4. trích rút (extract) file jar 5. Dùng lnh keytool vi tên bí danh và keystore đ to ra cp khoá công cng/riêng mi 6. Ký danh file jar mi đc to 7. Xác minh ch ký (signature). 8. Xut các chng nhn (certificate) 93 9. Lit kê ni dung ca keystore 10. In các chng nhn đc lu trong file. . 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: 92  java. security ây là gói API. class và file java bao gm trong mt th mc xác đnh vào mt file jar gi là ‘pack’ 86 jar cf pack.jar *.class * .java Hình 10. 1 lnh

Ngày đăng: 13/02/2014, 13:06

HÌNH ẢNH LIÊN QUAN

Hình 10.2 Lit kê các file trong file pack.jar - lap trinh java chuong 10
Hình 10.2 Lit kê các file trong file pack.jar (Trang 2)
Hình 10.1 l nh jar - lap trinh java chuong 10
Hình 10.1 l nh jar (Trang 2)
Hình 10.3. Mã hố da trên các khoá - lap trinh java chuong 10
Hình 10.3. Mã hố da trên các khoá (Trang 3)

TỪ KHÓA LIÊN QUAN

w