Nền tảng ngôn ngữ java 10

9 147 0
Nền tảng ngôn ngữ java 10

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

Thông tin tài liệu

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.

Ngày đăng: 28/04/2014, 15:41

Từ khóa liên quan

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

Tài liệu liên quan