Java ME – Java EE, Bouncy Castle csomagot használó esettanulmány Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia Tanszék egyetemi tanársegéd Dokumentum verzió: , Debrecen, dec. 18. TARIPAR 2008 (Lokális és regionális tartalomipar fejlesztése, innovatív értéknövelt szolgáltatások keretrendszerének kialakítása adatvagyonok hasznosítására című) pályázat
TARIPAR előadás Bátfai, Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék Copyright © 2009 Bátfai Norbert E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Nem változtatható szakaszok nincsenek. Címlap szövegek nincsenek. Hátlap szövegek nincsenek. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front- Cover Texts and with no Back-Cover Texts being. Felhasználási engedély A GNU Free Documentation License nem hivatalos magyar fordítása:
Az előadás vázlata Elmélet ● A példa tervezése, fejlesztése, üzemeltetése ● Felhasznált szoftverek, API programozás ● Nyílt forráskód, Licenc ● Java, MIDP, Mobil mérések ● SSL, TLS, WTLS, HTTPS, PKI, PKCS stb. Példák ● ArgoUML: használati esetek, aktivitás diagramok ● Bouncy Castle kriptográfiai csomag ● Glassfish alkalmazásszerver, Apache Tomcat ● Sun Wireless Toolkit, Java ME SDK, készülék specifikus (Nokia, Motorola, Sony Ericsson) szimulátorok ● GNU FDL, MIT X11 ● „Benchmarkok” Gyakorlat ● Az esettanulmány demózása ● Java ME telefonról httpS példa demózása
Tervezés, alkalmazás architektúra
Kliens-szerver modell A szimmetrikus kulcs szétosztása
Egy HTTP kérés-válaszban minden
Felhasznált szoftverek JDK 6 Update ● keytool NetBeans IDE ● Java ME kliens ● Java EE szerver, Servlet webalkalmazás (Maven) Bouncy Castle ● Crypto-j2me-143 a klienshez ● ccprov-jdk central Maven repo Apache Tomcat ● Sun GlassFish Enterprise Server v3 Prelude ●
Felhasznált szoftverek Java™ ME SDK ● Java ME kliens Sun Java™ Wireless Toolkit for CLDC 2.5.2_01 ● HttpS-es Java ME kliens Sony Ericsson SDK for the Java™ ME Platform Motorola Java ME SDK 6.4 (regisztrált fejlesztők) Series 40 Nokia 6212 NFC SDK (regisztrált fejlesztők) ● Java ME kliens Továbbiak: ArgoUML, Maven, Wireshark, Subversion (SVN).
Fejlesztés - felhasznált szoftverek NetBeans ● Java ME kliens ● Java EE szerver, Servlet webalkalmazás (Maven) Bouncy Castle ● Crypto-j2me-143 a klienshez ● ccprov-jdk central Maven repo Eredmény ● TariparMobilKliens.jad, TariparMobilKliens.jar ● TariparSzerver.war
● 495 fejlesztő vett részt eddig a projektben: ● MIT X11-hez hasonló licenc (az GPL-kompatibilis), fejlesztés Ausztráliához köthető ● Szimmetrikus blokk titkosítók: AES, Blowfish, Blowfish, Camellia, CAST5, DED, DESede, GOST28147, IDEA, Noekeon, RC2, RC532, RC564, RC6, Rijndael, SEEDWrap, Serpent, Skipjack, TEA, Twofish, XTEA; stream titkosítók: RC4, HC128, HC256, Salsa20, ISAAC, VMPC, Grainv1, Grainv128 (lásd még köv. fóliákat) ● Asszimetrikus titkosítók: RSA, ElGama ● Lenyomat készítés: MD2, MD4, MD5, RipeMD128, RipeMD160, RipeMD256, RipeMD320, SHA1, SHA224, SHA256, SHA384, SHA512, Tiger, GOST, GOST3411, Whirlpool (lásd még köv. fólia) ● ASN.1 támogatás ● X.509 (PEM, DER), PKI (lásd még köv. fólia) ● S/MIME, OpenPGP (lásd még köv. fólia) ● Több, mint fél mega, Jávás mobilra obfuszkálni kell! Felhasznált szoftverek, Bouncy Castle Camellia CAST5 GOST RC2 SEED
Felhasznált szoftverek, API programozás
API programozás - SSL, TLS, WTLS, HTTPS, PKI, PKCS stb. ● RSA, PKCS #1: RFC 2437, 2. Notation (n, e) RSA public key c ciphertext representative, an integer between 0 and n-1 C ciphertext, an octet string d private exponent... e public exponent … n modulus p,q prime factors of the modulus...
API programozás - SSL, TLS, WTLS, HTTPS, PKI, PKCS stb. ● RSA, PKCS #1: RFC 2437, 2. Notation (n, e) RSA public key c ciphertext representative, an integer between 0 and n-1 C ciphertext, an octet string d private exponent... e public exponent … n modulus p,q prime factors of the modulus...
Java platform Forrás: Bátfai Norbert: Nehogy már a mobilod nyomkodjon Téged! DEENK Linux PC Windows PC Solaris szerver Nokia mobil Motorola mobil JVM LEGO robot Java nyelv Java SE Java ME Java EE leJOS Se rvl et A pp let MI Dl et november, a Sun megnyitja a Java-t Nincs Java csapda, GNU GPL v2 ● Java ME – phoneME (Mobile & Embedded) ● Java SE – OpenJDK ● Java EE – GlassFish
MIDP programozás - SSL, TLS, WTLS, HTTPS, PKI, PKCS stb. ● CLDC ● MIDP javax.microedition.pki (MIDP 2.0) javax.microedition.pki.Certificate javax.microedition.pki.CertificateException java.io java.lang java.util javax.microedition.io javax.microedition.lcdui javax.microedition.lcdui.game javax.microedition.media javax.microedition.media.control javax.microedition.midlet javax.microedition.pki javax.microedition.rms javax.microedition.io.SecurityInfo javax.microedition.io.HttpsConnection.getSecurityInfo() throws IOException javax.microedition.pki.Certificate javax.microedition.io.SecurityInfo.getServerCert ificate()
Tesztelés Kliens oldal ● Sony Ericsson SDK for the Java™ ME Platform ● Motorola Java ME SDK ● Series 40 Nokia 6212 NFC SDK Szerver oldal ● Sun GlassFish Enterprise Server v3 Prelude ● Apache Tomcat
Kliens oldal ● Sony Ericsson SDK for the Java™ ME Platform ● Motorola Java ME SDK ● Series 40 Nokia 6212 NFC SDK Szerver oldal ● Sun GlassFish Enterprise Server v3 Prelude ● Apache Tomcat Tesztelés
Kliens oldal ● Webes kliens: csak diagnosztika Firefox 3.5.3,
Demó
A táblázat színkódjai: ● sárga – másodperces nagyságrend, ● zöld – perces nagyságrend, ● piros – órás nagyságrend. ● Valódi telefonos adatok a táblázatban! Kriptográfiai mérések mobiltelefonon
Demó
A szerver küldte tiszta szöveg a klienstől kapott szöveg minden betűjének megduplázása.
#| T12:21: |INFO|glassfish|null|_ThreadID=15;_ThreadName=Thread- 4;|Kapott üzenet:Ś9?آ‚šßcď“Ę\J|#] [#| T12:21: |INFO|glassfish|null|_ThreadID=15;_ThreadName=Thread- 4;|Kapott tiszta:Helló, Világ! |#] [#| T12:21: |INFO|glassfish|null|_ThreadID=15;_ThreadName=Thread- 4;|Kliensnek vissza tiszta: HHeellllóó,, VViilláágg!! |#] [#| T12:21: |INFO|glassfish|null|_ThreadID=15;_ThreadName=Thread- 4;|Kliensnek vissza titkos: á!v“5SÜó>K?M/rż¬şĂYÎmÇíÉĘć˛ĆÄ^¸´ŰÔ˛v׫‡?q.|#] Demó
Wireshark
SSL, TLS, WTLS, HTTPS, PKI, PKCS stb. ● RSA, PKCS #1: RFC 2437, ● PKI tanúsítvány formátum, X.509: RFC 2459, ● SSL, TLS, WTLS, HTTPS: RFC 2246, ● HTTP Over TLS: RFC 2818, ● ● SSL v3 ● WTLS (Wireless Transport Layer Security), a.pdf a.pdf
Egy példa SSL fölötti HTTP kommunikációra HTTPS Java ME mobilról Saját magunk által aláírt a teszteléshez.
HTTPS Java ME mobilról
Client Hello
Server Hello
Client Key Exchange Előzetes főkulcs: a kliens generál egy 48 bájtos véletlen blokkot, amit a szerver nyilvános RSA kulcsával titkosítva elküld a szerverre.
Client Key Exchange
Főkulcs
Change Cipher Spec
Wireshark
SSL, WTLS WWW Szerve r Rádiós alhálózat Átjáró
HTTPS Java ME mobilról
HTTPS Java ME mobilról
Irodalomjegyzék - Bátfai Norbert: Kriptográfiai mérések mobiltelefonon (a közös munkaterületen elérhető) - MOTOVDEV: USING CRYPTO APIS FOR SECURE COMMUNICATIONS - How to setup SSL Connection in Motorola Linux phones - Ray Rischpater: Beginning Java™ ME Platform, Apress; 1 edition (October 23, 2008) - David Hook: Beginning Cryptography with Java, Wrox (August 19, 2005) - Carol Hamer: Creating Mobile Games: Using Java ME Platform to Put the Fun into Your Mobile Device and Cell Phone, Apress (August 13, 2007)
Kérdés Az olyan példákban, dokumentumokban, amikben nem áramlik ki információ a pályázat felől, lehet-e nyílt a licenc, például GNU FDL, hogy a hallgatókat be tudjam kapcsolni a mérésekbe? (Lásd még ugyanezt a kérdést a közös munkaterületen a Bátfai Norbert: Kriptográfiai mérések mobiltelefonon dokumkentum kapcsán.) Válasz A projekt vezetése az előadás során megadta a választ: igen, lehet. Ennek megfelelően jelen dokumentum itt elérhető:
További tervek ● További mérések megvalósítása valódi telefonokon. ● Hálózati tesztelés és mérések valódi telefonokkal.
Köszönöm a figyelmet Skype: batfai.norbert MSN: Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia Tanszék egyetemi tanársegéd