53
Tóth Gergely, 2003. május 5. ELTE JAVA Speci JAVA Security Tóth Gergely [email protected] Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

JAVA Security

  • Upload
    vinny

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

JAVA Security. Tóth Gergely [email protected] Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Tartalom. JAVA security alapkövek Buffer overflow JAVA security architektúra Bytecode security JAVA cryptography Applikáció authentikáció Appletek - PowerPoint PPT Presentation

Citation preview

Page 1: JAVA Security

Tóth Gergely, 2003. május 5.ELTE JAVA Speci

JAVA Security

Tóth [email protected]

Budapesti Műszaki és Gazdaságtudományi Egyetem

Méréstechnika és Információs Rendszerek Tanszék

Page 2: JAVA Security

Tóth Gergely, 2003. május 5. (2)ELTE JAVA Speci

Tartalom

• JAVA security alapkövek• Buffer overflow• JAVA security architektúra• Bytecode security• JAVA cryptography• Applikáció authentikáció• Appletek• J2ME• Saját projektem

Page 3: JAVA Security

Tóth Gergely, 2003. május 5. (3)ELTE JAVA Speci

JAVA security alapkövek

• nyelvi szintennyelvi szinten• buffer overflow elleni védelem

• osztályok szintjénosztályok szintjén• security architektúra• beépített kriptográfiai csomagok (JCE)

• SDK szintenSDK szinten– applikáció authentikációs utilityk

• kulcskészítés• biztonságos kulcstárolás• applikáció aláírás • aláírás ellenőrzés

Page 4: JAVA Security

Tóth Gergely, 2003. május 5. (4)ELTE JAVA Speci

Buffer overflow – az elmélet

• buffer overflow: magasan a leggyakoribb kihasznált biztonsági lyukleggyakoribb kihasznált biztonsági lyuk

elõzõ függvényekstack területe

visszatérésicím (4 byte)

buffer (lokálisváltozó, 4 byte)

stack pointer

Elmélet

elõzõ függvényekstack területe

visszatérésicím(0xFFFFF0E2)

buffer("foo")

stack pointer(0x00404FB6)

Normálisfutás

0xFF0xFF0xF00xE2

\0oof

BufferOverflow

elõzõ függvényekstack területe

visszatérési cím(0x00404F6B, a stackterületre mutat)

buffer (@@@@00404F6B)

felülírt visszatérési cím

bejuttatott rosszindulatú kód

0x000x400x4F0x6B

@@@@

Page 5: JAVA Security

Tóth Gergely, 2003. május 5. (5)ELTE JAVA Speci

Buffer overflow – például C-ben

#define BUF_SIZE 16

void ExploitableFunction(char* param) {// do something ...char localBufferOnStack[BUF_SIZE];strcpy(localBufferOnStack, param);

// do something ...printf("%s", localBufferOnStack);

}

void ExploiterFunction() {// nothing seriousExploitableFunction("1234567890");

// what will happen?ExploitableFunction("123456789012345678901234567890");

}

Page 6: JAVA Security

Tóth Gergely, 2003. május 5. (6)ELTE JAVA Speci

Buffer overflow – JAVA-ban

• VM szinten valószinűtlenVM szinten valószinűtlen– nagyon kemény buffer-overflow elleni

projekt a SUN-on belül

• nyelvi szinten lehetetlennyelvi szinten lehetetlen– nincs pointer művelet– tömböt nem lehet túlcímezni

• a tömb tudja a hosszát (length mező)

• összességében: JAVA-ban elhanyagolható a valószínűségeelhanyagolható a valószínűsége

Page 7: JAVA Security

Tóth Gergely, 2003. május 5. (7)ELTE JAVA Speci

JAVA security architektúra I.

• beépített security funkciók– standard osztályok szintjénstandard osztályok szintjén

• jogosultságok (Permission)• jogosultság hozzárendelések (Policy)• jogosultsági csoportok (ProtectionDomain)

– kezelésekezelése• egyszerű• integrált• a legtöbbe esetben mind a felhasználó, mint a

programozó számára transzparens

Page 8: JAVA Security

Tóth Gergely, 2003. május 5. (8)ELTE JAVA Speci

JAVA security architektúra II.

• java.security.PermissionPermission– jogosultságok leírására – FilePermission

•FilePermission(„/tmp/*”, „read”)

– SocketPermission•SocketPermission(„localhost:1024-”, „listen”)

– RuntimePermission– AWTPermission– ...

Page 9: JAVA Security

Tóth Gergely, 2003. május 5. (9)ELTE JAVA Speci

JAVA security architektúra III.

• java.security.ProtectionDomainProtectionDomain• osztályok halmazához rendel

jogosultságokat

• minden osztály pontosan egy domainhez tartozik

• minden új objektum példány az osztálya domainjének jogosultságait kapja

Page 10: JAVA Security

Tóth Gergely, 2003. május 5. (10)ELTE JAVA Speci

JAVA security architektúra IV.

• java.security.PolicyPolicy• leképezés: a futó kód bizonyos

jellemzőihez (CodeSource) jogosultságok halmazát rendeli– jelenleg a futó kódot jellemzi:

•.CLASS fájljának URL-je ÉS • a hozzá tartozó certificate-ek

• bár több Policy objektum is létezhet, egyszerre csak egy lehet aktív

Page 11: JAVA Security

Tóth Gergely, 2003. május 5. (11)ELTE JAVA Speci

JAVA security architektúra V.

• Policy beállításaPolicy beállítása– van rá JDK tool (policytool)– policy fájl

grant { permission java.lang.RuntimePermission "stopThread"; permission java.net.SocketPermission "localhost:1024-", "listen"; permission java.util.PropertyPermission "java.version", "read"; ...};

Page 12: JAVA Security

Tóth Gergely, 2003. május 5. (12)ELTE JAVA Speci

JAVA security architektúra VI.

• amellett, hogy melyik osztály objektuma hajtja végre az utasítást, azt is figyelembe kell venni, hogy melyik szálon ki hívta meg őt– user domainbeli objektum ki akar írni

valamit, meghívja a system domainbeli objektum metódusát (privilege gainprivilege gain)

– a system domain frissíti a képernyőt és meghívja egy user domainbeli objektum paint metódusát (privilege lossprivilege loss)

Page 13: JAVA Security

Tóth Gergely, 2003. május 5. (13)ELTE JAVA Speci

JAVA security architektúra VII.

• az aktuális szál jogosultsága: az általa bejárt összes domain által biztosított jogosultságok metszetejogosultságok metszete

• java.security.AccessController– annak eldöntésére, hogy van-e jogunk valamire

•AccessController.checkPermission(Permission permission)

– privilegizált művelet végrehajtására (a hívó domainjének összes jogosultságával)•AccessController.doPrivileged(PrivilegedAction action)

Page 14: JAVA Security

Tóth Gergely, 2003. május 5. (14)ELTE JAVA Speci

JAVA security architektúra – példa

cursor = (Cursor) java.security.AccessController.doPrivileged(

new java.security.PrivilegedExceptionAction() {public Object run() throws Exception {

Toolkit toolkit = Toolkit.getDefaultToolkit();Image image = toolkit.getImage(Image image = toolkit.getImage(

systemCustomCursorDirPrefix + fileName);systemCustomCursorDirPrefix + fileName);return toolkit.createCustomCursor(

image, new Point(fx,fy), flocalized);}

});

• java.awt.Cursor– getSystemCustomCursor: @return the

system specific custom Cursor named

Page 15: JAVA Security

Tóth Gergely, 2003. május 5. (15)ELTE JAVA Speci

Bytecode security I.

• a JAVA virtuális gép az alkalmazás futtatása közben dinamikusan tölti befuttatása közben dinamikusan tölti be az osztályokat (bytecode-ot)– fájlból– hálózaton keresztül– elképzelhető run-time generált bytecode

betöltése is

• ezeket a bytecode-okat a betöltés során a betöltés során ellenőrizni kellellenőrizni kell

Page 16: JAVA Security

Tóth Gergely, 2003. május 5. (16)ELTE JAVA Speci

Bytecode security II.

Page 17: JAVA Security

Tóth Gergely, 2003. május 5. (17)ELTE JAVA Speci

Bytecode security III.

• Ellenőrzésre kerülnek:– a bytecode szintakszisaszintakszisa legális-e;– nincs-e paraméter stack over/underflowparaméter stack over/underflow;– minden bytecode parancs minden paramétere minden paramétere

megfelelő típusú-emegfelelő típusú-e;– konstruktor, metódus és mező hozzáférések hozzáférések

jogosultságaijogosultságai megfelelőek-e (private, public, protected);

– objektumokat annak használ-e amikobjektumokat annak használ-e amik (InputStream-et nem OutputStream-nek).

Page 18: JAVA Security

Tóth Gergely, 2003. május 5. (18)ELTE JAVA Speci

JAVA cryptography

• javax.crypto és java.security csomagok– interface-ek kriptográfiai algoritmusoknakinterface-ek kriptográfiai algoritmusoknak

• továbbfejlesztési és kiegészítési lehetőség

– beépített kriptográfiai algoritmus beépített kriptográfiai algoritmus implementációkimplementációk• szabványoknak megfelel (RFC, IETF, PKCS)• garantáltan biztonságos• maximális teljesítmény

Page 19: JAVA Security

Tóth Gergely, 2003. május 5. (19)ELTE JAVA Speci

Titkosítás

• titkosító algoritmusok– szimmetrikus kulcsúszimmetrikus kulcsú algoritmusok

• blokk-kódolók (pl. DES, 3DES, Blowfish, AES)• folyam-kódolók (pl. RC4)• működési módok (ECB, CBC, OFB, CFB)

– aszimmetrikus kulcsúaszimmetrikus kulcsú algoritmusok (pl. RSA, ECC)

• nyilvános kulcs• titkos kulcs

Page 20: JAVA Security

Tóth Gergely, 2003. május 5. (20)ELTE JAVA Speci

Titkosítás II.

• szimmetrikus kulcsúszimmetrikus kulcsú– kódolásnál és dekódolásnál ugyanaz a kulcs

• nem letagadhatatlan

• aszimmetrikus kulcsúaszimmetrikus kulcsú– A a B-nek küldött üzenetet B nyilvános

kulcsával kódolja– kézbesítéskor B titkos kulcsával dekódolja– mivel csak B ismeri titkos kulcsát, csak ő tudja

a nyilvános kulcsával kódolt üzenetet dekódolni• ha küldéskor B nyilvános, A titkos kulcsával

kódolunk, akkor letagadhatatlan is

Page 21: JAVA Security

Tóth Gergely, 2003. május 5. (21)ELTE JAVA Speci

Kriptográfiai példa I. – titkosítás

import java.security.*;import javax.crypto.*;import javax.crypto.spec.*;

public class BlowfishKey {

public static void main(String[] args) throws Exception {

KeyGenerator kgen = KeyGenerator.getInstance("Blowfish"); SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); System.out.println(new String( cipher.doFinal("This is just an example".getBytes())); }}

Page 22: JAVA Security

Tóth Gergely, 2003. május 5. (22)ELTE JAVA Speci

Kriptográfiai hash generálás

• hashelés (pl. SHA1 vagy MD5)– tetszőleges sztringhez konstans hosszú tetszőleges sztringhez konstans hosszú

egyértelmű hash sztringet rendelegyértelmű hash sztringet rendel• sztringből hashet generálni egyszerű• adott hashből eredeti sztringet visszaállítani

elméletileg lehetetlen• adott hashhez olyan sztringet generálni,

aminek az adott hash a hash sztringje, gyakorlatilag lehetetlen

– önmagában ritkán használják

Page 23: JAVA Security

Tóth Gergely, 2003. május 5. (23)ELTE JAVA Speci

Kriptográfiai példa II. – hash generálás

• SHA-1 hash érték kiszámolása:

• futtatás:> java sha1 abc

A9993E364706816ABA3E25717850C26C9CD0D89D

MessageDigest sha = MessageDigest.

getInstance("SHA-1");

sha.update(toHash);

byte[] hash=sha.digest();

System.out.println(toHex(hash));

Page 24: JAVA Security

Tóth Gergely, 2003. május 5. (24)ELTE JAVA Speci

MAC generálás

• MAC (Message Authentication Code)– „rejtjel kulccsal elvégzett hash műveletrejtjel kulccsal elvégzett hash művelet”– csak a rejtjelkulccsal rendelkező entitások

képesek a MAC generálására– integritásvédelemre– pl. HMAC

• HMAC-SHA1• HMAC-MD5

Page 25: JAVA Security

Tóth Gergely, 2003. május 5. (25)ELTE JAVA Speci

Kriptográfiai példa III. – MAC

import java.security.*; import javax.crypto.*; public class initMac {

public static void main(String[] args) throws Exception {

// Generate secret key for HMAC-MD5 KeyGenerator kg = KeyGenerator.getInstance("HmacMD5"); SecretKey sk = kg.generateKey();

// Get instance of Mac object and // initialize it with the above secret key Mac mac = Mac.getInstance("HmacMD5"); mac.init(sk); System.out.println(new String(mac.doFinal( "Hi There".getBytes())); }}

Page 26: JAVA Security

Tóth Gergely, 2003. május 5. (26)ELTE JAVA Speci

Digitális aláírás I.

• célja annak biztosítása, az aláírt dokumentumot a titkos kulcs birtokosa titkos kulcs birtokosa írta aláírta alá– direkt aláíró algoritmus (pl. DSA)– hash érték titkos kulccsal történő

aszimmetrikus titkosítása (pl. SHA1withRSA)

Page 27: JAVA Security

Tóth Gergely, 2003. május 5. (27)ELTE JAVA Speci

Digitális aláírás II. – generálás

Page 28: JAVA Security

Tóth Gergely, 2003. május 5. (28)ELTE JAVA Speci

Digitális aláírás III. – ellenőrzés

Page 29: JAVA Security

Tóth Gergely, 2003. május 5. (29)ELTE JAVA Speci

Kriptográfiai példa IV. – digitális aláírás

byte[] toSign="Text to sign...".getBytes();

SecureRandom ran = new SecureRandom();KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");

keyGen.initialize(1024, ran);KeyPair pair = keyGen.generateKeyPair(); // sign// signSignature sig = Signature.getInstance("SHA1withRSA"); sig.initSign(pair.getPrivate());sig.update(toSign);byte[] signature=sig.sign(); // verify// verifySignature ver = Signature.getInstance("SHA1withRSA"); ver.initVerify(pair.getPublic());ver.update(toSign);

System.out.println("Verification: "+ver.verify(signature));

Page 30: JAVA Security

Tóth Gergely, 2003. május 5. (30)ELTE JAVA Speci

Egyéb kriptográfiai osztályok

• biztonságos véletlen szám generálásbiztonságos véletlen szám generálás– kulcsgenerálás biztonságosságának

növelésére

• kulcsgeneráláskulcsgenerálás

• kulcstároláskulcstárolás (keystore)– jelszóval védett, titkosított fájl

• certificate kezeléscertificate kezelés (X.509)– nyilvános kulcs tárolására

Page 31: JAVA Security

Tóth Gergely, 2003. május 5. (31)ELTE JAVA Speci

Applikáció authentikáció I.

• aszimmetrikus kulcsokaszimmetrikus kulcsok (RSA)– generálása (keytool)– biztonságos tárolása (keystore-ban)

• szoftverfejlesztőnélszoftverfejlesztőnél: .JAR fájl aláírása (jarsigner)– aszimmetrikus kulcsú digitális aláírás

(pl. SHA1withRSA)

• szoftver felhasználónálszoftver felhasználónál: .JAR fájl aláírásának ellenőrzése (jarsigner)

Page 32: JAVA Security

Tóth Gergely, 2003. május 5. (32)ELTE JAVA Speci

Applikáció authentikáció II.

• a program gyártója aláírja a futtatható a program gyártója aláírja a futtatható kódotkódot– igazolja, hogy ő írta a programot– de tulajdonképpen mit is csinál a program?

• ez már csak így fog maradni :(

• a tendencia– nem a program jogosultságait állítják be– hanem megbízol a gyártójában :(

Page 33: JAVA Security

Tóth Gergely, 2003. május 5. (33)ELTE JAVA Speci

Keystore

• KulcsfájlKulcsfájl– egy keystore-ban több kulcspár is tárolható

(azonosításuk aliasszal)– titkos kulcsok tárolására

• fájlszinten kódolt• jelszóval védett (fájlszinten és aliasokként is)

– nyilvános kulcsok tárolására• certificate-ek formájában

Page 34: JAVA Security

Tóth Gergely, 2003. május 5. (34)ELTE JAVA Speci

JAR aláírás (jarsigner) I.

• normálisnormális .JAR fájl– .CLASS fájlok– manifest

• aláírtaláírt .JAR fájl– .CLASS fájlok– módosított manifest– ALIAS.SF (pl. TG.SF)– ALIAS.DSA (pl. TG.DSA)

Page 35: JAVA Security

Tóth Gergely, 2003. május 5. (35)ELTE JAVA Speci

JAR aláírás (jarsigner) II.

• ALIASALIAS.SF.SF– minden aláírt fájlra

• hash (pl. SHA-1) BASE-64-ben kódolva

Name: com/monica/javacom/streams/MJCWriteableIsAIS.class

SHA1-Digest: lcNRm/q+QZnxygf9Ubf3PJWgND8=

• ALIASALIAS.DSA.DSA– aláírók nyilvános kulcsa (certificate-ek)– aláírások

Page 36: JAVA Security

Tóth Gergely, 2003. május 5. (36)ELTE JAVA Speci

Applikáció authentikáció – példa I.

• kulcsgeneráláskulcsgenerálás>keytool -genkey -alias tgm -keystore keystore.jksEnter keystore password: passwordWhat is your first and last name? [Unknown]: Gergely TothWhat is the name of your organizational unit? [Unknown]: MISWhat is the name of your organization? [Unknown]: BUTEWhat is the name of your City or Locality? [Unknown]: BudapestWhat is the name of your State or Province? [Unknown]: BudapestWhat is the two-letter country code for this unit? [Unknown]: HUIs CN=Gergely Toth, OU=MIS, O=BUTE, L=Budapest, ST=Budapest, C=HU correct? [no]: yes

Page 37: JAVA Security

Tóth Gergely, 2003. május 5. (37)ELTE JAVA Speci

Applikáció authentikáció – példa II.

• applikáció készítésapplikáció készítés

• applikáció aláírásapplikáció aláírás>jarsigner -keystore keystore.jks sha1.jar tgmEnter Passphrase for keystore: passwordEnter key password for tgm: tgmpassword

>jar cvf sha1.jar sha1.class

Page 38: JAVA Security

Tóth Gergely, 2003. május 5. (38)ELTE JAVA Speci

Applikáció authentikáció – példa III.

• applikáció ellenőrzés – OKapplikáció ellenőrzés – OK>jarsigner -verify -verbose -certs sha1.jar

134 Thu Mar 27 18:21:00 CET 2003 META-INF/MANIFEST.MF 187 Thu Mar 27 18:21:02 CET 2003 META-INF/TGM.SF 1026 Thu Mar 27 18:21:02 CET 2003 META-INF/TGM.DSA 0 Thu Mar 27 18:20:12 CET 2003 META-INF/sm 1009 Thu Mar 27 18:06:06 CET 2003 sha1.class

X.509, CN=Gergely Toth, OU=MIS, O=BUTE, L=Budapest, ST=Budapest, C=HU

s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore i = at least one certificate was found in identity scope

jar verified.

Page 39: JAVA Security

Tóth Gergely, 2003. május 5. (39)ELTE JAVA Speci

Applikáció authentikáció – példa IV.

• applikáció ellenőrzés – HIBAapplikáció ellenőrzés – HIBA– ha módosul a tartalom anélkül, hogy az

aláírásokat újragenerálnánk

>jarsigner -verify -verbose -certs sha1.jarjarsigner: java.lang.SecurityException: SHA1 digest error for sha1.class

Page 40: JAVA Security

Tóth Gergely, 2003. május 5. (40)ELTE JAVA Speci

Appletek I.

• Applet– alapvetően browserben futó JAVA program– ha az Applet nincs aláírva:

• nincs fájlrendszer-hozzáférésnincs fájlrendszer-hozzáférés• csak ahhoz a hosthoz tud socketet nyitni, csak ahhoz a hosthoz tud socketet nyitni,

ahonnan le lett töltveahonnan le lett töltve• nincs natív hívás• nem indíthat más programot• nem tölthet be libraryt

đ nehézkes

Page 41: JAVA Security

Tóth Gergely, 2003. május 5. (41)ELTE JAVA Speci

Appletek II.

• aláírt Applet: – „trusted” ha megfelelő az aláírás

• ismert certificatehez tartozó titkos kulccsal írták alá

• az aláírás érvényes

– ugyanúgy tud futni, mintha nem is Applet lenne

đ kényelmesebb

Page 42: JAVA Security

Tóth Gergely, 2003. május 5. (42)ELTE JAVA Speci

Aláírt Applet példa I. – készítés

• KulcskészítésKulcskészítés– keytool -genkey ...

• Certificate exportálásCertificate exportálás– keytool -export ...

• JAR fájl készítés és aláírásJAR fájl készítés és aláírás– jar cvf ...– jarsigner ...

Page 43: JAVA Security

Tóth Gergely, 2003. május 5. (43)ELTE JAVA Speci

Aláírt Applet példa II. – használat

• Certificate importCertificate import– JAVA plug-in control panelből

Page 44: JAVA Security

Tóth Gergely, 2003. május 5. (44)ELTE JAVA Speci

J2ME - JAVA 2 Micro Edition

• limitált kapacitásúlimitált kapacitású (memória, CPU) eszközökreeszközökre– mobiltelefonok– kézi számítógépek

• lecsupaszított nyelvi környezetlecsupaszított nyelvi környezet– kevesebb standard osztály– bizonyos nyelvi tulajdonságok is

hiányoznak (pl. nincs float)

Page 45: JAVA Security

Tóth Gergely, 2003. május 5. (45)ELTE JAVA Speci

MIDP 1.0

• jelenlegi állapot

• „homokozóhomokozó” elv– nincs fájlrendszer-hozzáférés– limitált erőforrások (~100k memória, ~100k

bytecode) és kevés beépített osztály– kommunikációs csatorna absztrakció

(Connection osztály)

• nincs applikáció authentikáció!– az aláírást figyelmen kívül hagyja

Page 46: JAVA Security

Tóth Gergely, 2003. május 5. (46)ELTE JAVA Speci

MIDP 2.0

• hamarosan megjelenik (~idén nyáron)• security++

– permissions• bizonyos funkciók letiltása/engedélyezése

– protection domains• Permission templates (untrusted, trusted, ...)

– applikáció authentikáció• aláírás ellenőrzése

– crypto csomagok (pl. SSL, HTTPS, WTLS)

• push architecturepush architecture: security?

Page 47: JAVA Security

Tóth Gergely, 2003. május 5. (47)ELTE JAVA Speci

JAVA rákfenék

• natív hívásnatív hívás– JAVA kiegészítése: a VM-et futtató

környezetre írt gépi kódú library is használható

– nem platform-független– nem biztosítja a JAVA által nyújtott biztonsági

megoldásokat és megbízhatóságot

• MIDP 1.0MIDP 1.0– nincs applikáció authentikáció

Page 48: JAVA Security

Tóth Gergely, 2003. május 5. (48)ELTE JAVA Speci

Saját magamról – MONICA projekt I.

• JAVA alapú open-source SSH2– http://monica.sourceforge.nethttp://monica.sourceforge.net

Page 49: JAVA Security

Tóth Gergely, 2003. május 5. (49)ELTE JAVA Speci

Saját magamról – MONICA projekt II.

• JAVA alapú SCP2 (fejlesztés alatt)

Page 50: JAVA Security

Tóth Gergely, 2003. május 5. (50)ELTE JAVA Speci

Kriptográfiai műveletek az SSH2-ben

• digitális aláírásdigitális aláírás és certificatecertificate kezelés a kulcscseréhez

• szimmetrikus kulcsú titkosításszimmetrikus kulcsú titkosítás a csatorna bizalmasságának védelmére

• MACMAC a csatorna integritásának biztosításához

Page 51: JAVA Security

Tóth Gergely, 2003. május 5. (51)ELTE JAVA Speci

SSH2 csomag képzése

Page 52: JAVA Security

Tóth Gergely, 2003. május 5. (52)ELTE JAVA Speci

SSH2 csomag képzése – MONICApayload=compressionAlg.compress(payload);

len_without_mac=16; padding_len=len_without_mac-5-payload.length();if (padding_len<4) padding_len=4;len_without_mac=padding_len+payload.length()+5;while ((len_without_mac%minLen)!=0) len_without_mac++;padding_len=len_without_mac-5-payload.length();

result=io.wUint32(len_without_mac-4);result=result.concat(io.wByte(padding_len));result=result.concat(payload);

padding=new char[padding_len];for (int i=0; i<padding_len; i++) padding[i]=(char)(Math.random()*255.0);

result=result.concat(new String(padding));mac=macAlg.createMAC(io.wUint32(seqNo)).concat(result),IK); result=cipherAlg.encode(result); result=result.concat(mac);

Page 53: JAVA Security

Tóth Gergely, 2003. május 5. (53)ELTE JAVA Speci

Kérdések

??