Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Page 1
cnSecurity.fm Ser321 Class Notes
e Systems
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
Ser321 Principles of Distributed Softwar
7. Security in Java2 Platform• Section 7.a Security Background• Section 7.b Significance of the Problem• Section 7.c Signing Information• Section 7.d Controlling Java Applications• Section 7.e Cryptography• Section 7.f Secure Sockets with Java
Page 2
cnSecurity.fm Ser321 Class Notes
confident who its Digital Signature)
plications so that it (Encryption)
va code can access?
a2 local and remote Policy files.
signatures. To l and the API.
information.
ommunication
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.a Security Background7.a.1 Motivation and Objectives
• How can you electronically receive information and be from and that the information didn’t change in transit? (
• How can you electronically send information between apcan’t be read and understood by anyone else in transit?
• How can you control what system resources executing Ja
• Objectives
- To be able to control access to system resources for Javapplications. To understand define and utilize security
- To know how to generate, examine and utilize digitalmanage public and private keys with both the key too
- To use cryptography services to encrypt and decrypt
- To understand how to use secure sockets in Java for cbetween distributed components of an application.
Page 3
cnSecurity.fm Ser321 Class Notes
rity
of Java Part 2a2-138746.html
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.a.2 References for Java Security• On-Line References
- In the Java Tutorial, see the Specialized Trail on Secuhttps://docs.oracle.com/javase/tutorial/
- See the Sockets and Encryption sections of Essentialshttp://www.oracle.com/technetwork/java/basicjav
Page 4
cnSecurity.fm Ser321 Class Notes
the form it was sent n’t changed enrouterough tools
unreadable cipher
lows conversion
classesg Java program -
rties
or class files
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.a.3 Overview• Digital Signatures, Keys and Certificates
- Information transferred over the internet is received inand with assurance of who it came from and that it was
- Services available in Java2 through J2sdk API and th• Encryption and Decryption
- Information transferred is converted from clear text todata before transfer.
- Upon receipt, the receiver has key information that alback to clear text.
- Multi-supplier JCA API and use of selected user API• Controlling access to system resources in an executin
properties and policy files- Resources include local files, connections, and prope- Applications loaded through classpath- Applets downloaded (via a jar file) from the internet
dynamically loaded.
Page 5
cnSecurity.fm Ser321 Class Notes
systems:s cost up to $4
24 hours. While the estimated at $4
that contained the
se valuable rade of service: wn car to rob a
upt proactive
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.b Significance of the Problem7.b.1 Application and System Vulnerability
• Attacks ranging from server systems to small and home- Equifax data breach of SSN’s birth dates & addresse
Billion.- WannaCry spread to over 100 countries in less than
ransomware attachers only received $140,000, lossesBillion.
- Washington State University had a hard drive stolenpersonal data of over 1 million people.
- Denial of Service attacks: Usually do not compromiinformation but can be source of considerable downgThese can be characterized as: “I wouldn’t drive my obank”
• Trojan Horse virus attacks- Code Red worm from 2001 cost $2.6 billion to clean
• Defense against these attacks is reactive (anti-virus) no
Page 6
cnSecurity.fm Ser321 Class Notes
users deny you service
yours
ing lot gates
and passwords.ternet with traffic;
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.b.2 Denial of Service• Any intrusion that interrupts the service of one or more
- If I program my cell phone to repeatedly call yours, I• Distributed Denial of Service
- If I program several other people’s cell phones to call• Network Appliances
- Home appliances, thermostat, lights, door locks, Park- Printers- May have simple hard-wired access such as user-ids - Source of Denial of Service attack by flooding the in
such as: “I need to be rebooted”
Page 7
cnSecurity.fm Ser321 Class Notes
sactionsil and other financially or
their
have become much
d applicationsanisms
hinede or data)utable attachments.
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.b.3 Security Issues• E-Commerce is deeper than Network Credit Card Tran
- Rapid growth in use of social media, messaging, emadistributed groupware to exchange information that isotherwise sensitive
- Business agents are largely unaware of how insecure communications really are
- Added burden for the end-user• Application Development
- Technologies for providing security in an application less complex to use
- Slow to realize the potential for harm from distribute- Developers largely un-trained in use of security mech
• Need for a Culture Change- Certificates for all applications running on your mac- Build checks into receipt of sensitive information (co- Most organizations use a sandbox and don’t run exec
Page 8
cnSecurity.fm Ser321 Class Notes
t
rity riskbject Applications
urity mechanisms.
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.b.4 Distributed Objects and Security• RMI built on much of Java’s rich execution environmen
- Reflection- Serialization- Dynamic class loading and subsequent execution- Added flexibility goes hand-in-hand with added secu
• Current design relies on the Developer of Distributed O- Must explicitly build-in appropriate use of Java’s Sec
Page 9
cnSecurity.fm Ser321 Class Notes
e and generates a
t -- you can not e.uce the same digest sh function used to
ut the data source.
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c Signing Information7.c.1 Message Digests
• A Hash function produces a Message Digest- Hash function, takes an arbitrary length input messag
fixed length digest• Properties of a hash function
- One-way hash from data source to a fixed-size digesrecover the data source from the message digest alon
- Low probablility that different data sources will prod-- collisions are highly unlikely dependent upon the hagenerate the digest.
- Non-Revealing: Digest does not reveal anything abo
Page 10
cnSecurity.fm Ser321 Class Notes
Digital Signatures
bit (16 bytes) digest
bit (16 bytes) digest
bytes) digest
t
mation Technology
0/4/final
st collision attacks)
gainst collision)
rity, and a 384-bit put.)
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.2 Message Digest Generation Algorthms• Message Digest is the basis for generating and verifying
• Hash Functions (algorithms)
- MD2 Message Digest Version 2 (Rivest 1989) a 128
- MD4 Message Digest Version 4 (Rivest 1990) a 128
- MD5 Message Digest Version 5 (1991) a 128 bit (16
- MD5 Described: https://www.ietf.org/rfc/rfc1321.tx
• SHS (Secure Hash Standard) coordinated by NIST InforLaboratory:
- See: https://csrc.nist.gov/publications/detail/fips/18
- SHA-1 generates 160-bit digest (80 bit security again
- SHA-256 generates 256-bit digest (128 bit security a
- SHA-512 generates a 512-bit digest (256 bits of secuhash may be obtained by truncating the SHA-512 out
Page 11
cnSecurity.fm Ser321 Class Notes
A-1, SHA-224, A-512/256 - for
ta (message). When -1, SHA-224 and
A-512, SHA-512/e result is an output length from 160 to rithms are typically ital signature des, or in the
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.3 Secure Hash Standard• Explanation
- “This Standard specifies secure hash algorithms - SHSHA-256, SHA-384, SHA-512, SHA-512/224 and SHcomputing a condensed representation of electronic daa message of any length less than 2**64 bits (for SHASHA-256) or less than 2**128 bits (for SHA-384, SH224 and SHA-512/256) is input to a hash algorithm, thcalled a message digest. The message digests range in512 bits, depending on the algorithm. Secure hash algoused with other cryptographic algorithms, such as digalgorithms and keyed-hash message authentication cogeneration of random numbers (bits).”
Page 12
cnSecurity.fm Ser321 Class Notes
the project
es is 1 in 2power160
e digest algorithms
integrity
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.4 Message Digests and the Java API• Digital Signature and Digest examples can be found in
digitalSign.jar• JDK provides the SHA-1 algorithm
- produces a 20 byte (digest) signature of data- probability of the same digest from distinct data sourc
• The Java API also provides the MD2 and MD5 messagas used in generating digital signatures.
• Message Digests form the basis for authentication and• Example DigestTest.java
- javac -d classes src/DigestTest.java- java -cp classes ser321.security.DigestTest
Page 13
cnSecurity.fm Ser321 Class Notes
ital data.transit”mpered withever claims to have
lic Key
eceivereceiver
Public Key
re Verification
lgorithm
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.5 Digital Signatures• Used for authentication and integrity assurance of dig
- “Verify who it came from and that its not changed in - Integrity means the data has not been modified or ta- Authenticity means the data indeed comes from who
created and signed it.
• Sender transfers both Message and Signature.
• Receiver Verifies message matches Signature using Pub
SenderSender RR
Message
Signatu
A
Private Key
Algorithm
Signature
Message
Page 14
cnSecurity.fm Ser321 Class Notes
and encryption)ed transmissions)
ipher) and kept
e (or encrypt clear yone who will
read by private key.ionship between lgorithm used. The rivate key.
cates.y.KeyStore)
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.6 Key Management• Two types of key management
- Asymmetric (Public/Private) keys (digital signatures- Symmetric (secret) key algorithms (used for encrypt
• Asymmetric Keys are created in matching pairs- Private key - used to generate signature (or decrypt c
confidential to whoever is doing the signing. - Public key - used to verify authenticity of the messag
text to create a cipher). Distribute the public key to anreceive signed information, or encrypt messages to be
- The mechanism for generating a key set and the relatpublic and private key is dependent on the signature apublic key cannot spoof signature generation of the p
• Managing keys- Client application (browser) manages (public) keys.Jdk provides a keytool, which manages keystores and certifi- API to programmatically manage keys. (java.securit
Page 15
cnSecurity.fm Ser321 Class Notes
ty (authentication) grity).
e sent: m => H(m)the Private Key and
the message m and
rtificate); receives
ing algorithm to get
)ged and from the
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.7 Digital Signatures• Reciver wants assurance of the message sender’s identi
and that the message has not been altered in transit (inte• Signing
- Generate a digest, noted as H(m), of the message to b- Generate a signature (encryption of the digest) using
an encryption algorithm: s=EncryptionPvK(H(m))- Assuming the receiver already has the public key, send
the signature s to the receiver• Verifying
- The receiver already has the matching public key (cethe message m and digital signature s.
- Decrypt the signature using the public key and matcha digest: H(m’)=DecryptionPbK(s)
- Generate a digest of the message received: m => H(m- If H(m) = H(m’) then the message if verified unchan
private key owner; otherwise unverified.
Page 16
cnSecurity.fm Ser321 Class Notes
lic and private keys a Tutorial)
ith underlying
generating and
X9.62) Algorithm (SHA-
HS)
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.8 Digital Signature Algorithms• Encryption/Decryption Algorithms (Note, roles of pub
may be reversed in the literature as compared to the Jav- RSA (Rivest-Shamir-Adleman)- DSS (Digital Signature Standard). A signature-only w
algorithm called DSA (Digital Signature Algorithm).• There are primarily three algorithms (among many) for
verifying digital signatures:See: https://en.wikipedia.org/wiki/Digital_signature- Digital Signature Algorithm (DSA)- RSA (as specified in ANSI X9.31), and- Elliptic Curve DSA (ECDSA; as specified in ANSI - All three techniques can make use of the Secure Hash
1), which is specified in the Secure Hash Standard (S
Page 17
cnSecurity.fm Ser321 Class Notes
enerate and verify
ce of the Signature ure algorithm.
rovided by SUN algorithm can be
message digest as, for example,
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.9 Using Java API - Signature Class• A Signature object (see java.security) can be used to g
digital signatures.- The application developer requests and uses an instan
engine class to get the functionality of a digital signat• Sun provides DSA and RSA in J2SDK
- see java.security.Signature javadoc for algorithms p- The DSA algorithm using the SHA-1 message digest
specified as SHA1withDSA.- In the case of RSA, there are multiple choices for the
algorithm, so the signing algorithm could be specifiedMD2withRSA, MD5withRSA, or SHA1withRSA.
Page 18
cnSecurity.fm Ser321 Class Notes
epends exclusively c key.
rporation?
whom you want to
at a know entity istntity, saying that the .
e public key (on a
ficating agency.t to notarization.
wte, and Entrust
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.10 Certificates• Verifying digitally signed information (by the receiver) d
on the receiver’s trust in the authenticity of the publi- Is this actually the public key of Fujitsu Software Co
• Certificates- Provide a chain of trust that the public key belongs to
believe it belongs to.- A known entity certifies that a know entity certifies th
certifies that ... this public key belongs to TimLindqu- A certificate is a digitally signed statement from one e
public key of some other entity has a particular value
• The best assurance is to be handed a physical copy of thfloppy or CD, for instance) by the signer.- Next best is to accept a certificate from a trusted certi- Certificating agencies require identification equivalen
• Public Certification Authorities, include: VeriSign, Tha
Page 19
cnSecurity.fm Ser321 Class Notes
Accessible via API) with 1024bit key)
ore timStorestore nickStoren about a certificatere nickStore
ore timStore
0 -keystore tStore)
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.11 Keytool and Key Stores• keytool manages a file of private keys and certificates. (• To create a new private/public key pair (defaults to DSA
- keytool -genkey -alias tim -keypass timpwd -keyst- keytool -genkey -alias nick -keypass nickpwd -key
• To export a public key certificate and to print informatio- keytool -export -alias nick -file nickcert.cer -keysto
• To print information about a certificate file- keytool -printcert -file nickcert.cer
• To import a certificate- keytool -import -alias nick -file nickcert.cer -keyst
• To print information about aliases in a keystore- keytool -list [-alias tim] -keystore timStore
• Other commands:- keytool -genkey -alias tim -keyalg RSA -validity 12- -certreq //generates a certificate signing request (CSR- -selfcert //generates an X.509 self-signed certificate
Page 20
cnSecurity.fm Ser321 Class Notes
ystore to generate
keypass nickpwd
the private key, the r file to be signed. directory of the jar each file in the jar the .SF file and the the jar.
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.12 Jar Signer Tool• The jarsigner tool is used for two purposes:
- to digitally sign Java ARchive (JAR) files, and- to verify the digital signature of signed JAR files.
• jarsigner uses key and certificate information from a kedigital signatures for JAR files.
• Signing a Jar file- jarsigner -keystore nickStore -storepass nickpwd -
gradeapplet.jar nick- When signing a jar file, you must specify the alias for
keystore (default is .keystore in user.home) and the ja• Signing a jar produces two new files in the META-INF
- Signature file (.SF) includes the name and digest for- Signature block file (.DSA) includes the signature of
Certificate (public key) of the private key used to sign• Verifying a signed Jar file
- jarsigner -verify -certs -verbose gradeapplet.jar
Page 21
cnSecurity.fm Ser321 Class Notes
oresrtificate
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.13 Using Java API - Certificates and Keyst• See: java.security.KeyStore and java.security.cert.Ce• Loading a keystore from disk and getting a private keyKeyStore ks = KeyStore.getInstance("JKS");ks.load(new FileInputStream(storeFileName),keyPw.toCharArray());PrivateKey pk = (PrivateKey)ks.getKey(user,keyPw.toCharArray());
• Importing a certificate from a file into a keystoreFileInputStream fis = new FileInputStream(certFileName);BufferedInputStream bis = new BufferedInputStream(fis);CertificateFactory cf=CertificateFactory.getInstance("X.509");java.security.cert.Certificate cert = cf.generateCertificate(bis);ks.setCertificateEntry(alias, cert);ks.store(new FileOutputStream(storeFileName),keyPw.toCharArray());
Page 22
cnSecurity.fm Ser321 Class Notes
y an information
d digital signature
RSA");DSA", "SUN");
optional random
data stream is
am bytesatch data?
am
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.14 Using Java API - Signature Class• Three phases to using a Signature object to sign or verif
stream- Get a signature object specifying the hash function an
algorithm, for example,- Signature sig = Signature.getInstance("SHA1with- Signature dsa = Signature.getInstance("SHA1with
• Initialization- Receiver: initializes for verification with a public key- Sender: initializes for signing with a private key and
number generator• Updating
- Successive calls to update the signature object as the processed (from file, for example)
• Sign or verify a signature based on all updated data stre- public boolean verify(byte[] signature) //signature m- public byte[] sign() //generate the signature byte stre
Page 23
cnSecurity.fm Ser321 Class Notes
ple
0 -keystore tStore
t sigOfmyLet myLet
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.15 Using Java API - Signature Class Exam• Assuming Key has been generated, such as:
- keytool -genkey -alias tim -keyalg RSA -validity 12
• Generating a Digital SignaturePrivateKey pk = (PrivateKey)ks.getKey(user,keyPw.toCharArray());Signature sig = Signature.getInstance("SHA1withRSA");sig.initSign(pk);sig.update(stringToSign.getBytes());byte[] ret = sig.sign();
• Verifying a Digital SignaturePublicKey pk=ks.getCertificate(alias).getPublicKey();Signature sig = Signature.getInstance("SHA1withRSA");sig.initVerify(pk);String stringToVerify = . . .; byte[] digitalSignature = . . .;sig.update(stringToVerify.getBytes());if(sig.verify(digitalSignature)){ . . . }
• From the Digital Signature examples: digitalSign.jar- javac -d classes src/SignFile.java src/VerifyFile.java- java -cp classes ser321.security.SignFile myLet- java -cp classes ser321.security.VerifyFile pubKeyForLe
Page 24
cnSecurity.fm Ser321 Class Notes
algorithm is
algorithm is
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.c.16 Some Defaults for Jdk Security Tools• Defaults for KeyStore
- type is “JKS”- provider is “SUN”
• Defaults for Key- algorithm is DSA- key size is 1024
• Default certificate algorithm is MD5• Default signature algorithms
- if private key is of type "DSA", the default signature "SHA1withDSA"
- if private key is of type "RSA", the default signature "MD5withRSA"
Page 25
cnSecurity.fm Ser321 Class Notes
nseso resources in Java2
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d Controlling Java Applicatio7.d.1 The Java2 Model for Accessing Resourc
• From the Java tutorial: the model for controlling access t
Page 26
cnSecurity.fm Ser321 Class Notes
permissions
n.com
nom” {d, write, delete”;ead”;m”, “connect”;
ubdirectories of tmpnames in tmp.sun.com), but it
s
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.2 Domains• The portions of a program (classes) together with the
granted to those classes• The classes making up a domain are specified by
- where the code came from - codebase http://java.su- who signed the code - signedBy “Sun”
• Permissions are granted to the code making up a domai- grant signedBy “Sun”, codeBase “http://java.sun.c
permission java.io.FilePermission “/tmp/-”, “reapermission java.util.PropertyPermission “*”, “rpermission java.net.SocketPermission “*.sun.co
}- /tmp/- means all files in /tmp/ and recursively in all s- /tmp/* would apply only to the file and subdirectory - May have one * in specification of a domain name, (*
must be the leftmost character in the string• See javadoc java.security.Permission and its subclasse
Page 27
cnSecurity.fm Ser321 Class Notes
from many sources.n and who signed it.ss on the call stack ss to the resource.
dependent of who )
tion interface)ion will be able to es on the stack.tion)t already has.
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.3 How are Domains Used?• A running Java application may include classes loaded • Each class belongs to a protection domain based on origi• When access to a system resouce is attempted, every cla
must be running in a protection domain that grants acceOtherwise a security exception is thrown.
• Problem: “Some” classes must be able to do their job incalls them. (a class that plays a video clip, for example.
• Solution:- A class may be Privileged (implements PrivilegedAc- Any code within the run method of the PrivilegedAct
use its premissions regardless of permissions of classAccessController.doPrivileged(PrivilegedAction ac
- A privileged class may only assert a permission that i
Page 28
cnSecurity.fm Ser321 Class Notes
pplicationess to all of the files default policy files. ccess files above or n will be thrown ccess).
ads a keyStore and ine arguments
nts outside the
Store.java
s security exception
permitted
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.4 Example Policy Files to Control a Java A• Problem Statement. An executing java program has acc
in and below the current directory (property user.dir) byIf an application, running the security manager, tries to aoutside of the current directory then a security exceptio(unless a domain is established to explicitly allow the a
• Example, PrintKeyStore.java, is an application that reprints all aliases contained in the store. Two command l
- an absolute path to the keyStore file
- the password for the keyStore
- Consider: What happens when the path argument poicurrent directory?
• Consider the following contexts for executing PrintKey- Without the security manager, -- access is permitted- With the security manager, but no permissions, -throw
- With the security manager and permission, -- access
Page 29
cnSecurity.fm Ser321 Class Notes
ample:
ml file for comment me.txt. You must:
e has expired.debase and for the irectory.perties match your
thSecMgr and
a/timStore
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.5 Example, without Security Manager• To sign and provide an application the Signer must
- All three scenarios are provided through ant in the ex- See: policyFiles.jar
• Download, extract and build the project. Edit the build.xwith directions for localizing the example found in read- create a keystore if the keystore/key in Data/timStor- edit the policy file changing the absolute paths for co
file permission. These must match your installation d- edit build.xml so the keystore, keyword and alias pro
keystore.- Execute the three scenarios with execute, executeWi
executeWithPolicy targets
• Execute PrintKeyStore without the security manager- java -cp classes ser321.security.PrintKeyStore Dat
timword
Page 30
cnSecurity.fm Ser321 Class Notes
Policyon domain defined
eyStore
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.6 Example, with Security Manager, but no• Executing with security manager, but without a protecti
to grant access to files generates an exception- java -cp . -Djava.security.manager -jar lib/PrintK
Data/timStore timword• Note that this execution should throw an exception:
- java.security.AccessControlException- access denied java.io.FilePermission- read access to file: ...\Data\timStore- on the statement: new FileInputStream(args[0])
Page 31
cnSecurity.fm Ser321 Class Notes
licy File and places it in the
ry and contain: lib/*" {ath>/PolicyFiles/
lib directory with
policy file from the
cy=policy
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.7 Example, with Security Manager and Po• The Ant build file creates a jar file containing the classes
lib directory:• The policy file (policy) must reflect your install directo
- grant codeBase "file:<absolute_path>/PolicyFiles/permission java.io.FilePermission "<absolute_p
Data/*", "read";};
- This policy file grants all code that is loaded from thethe file permission to read files in the directory Data
• Execute PrintKeyStore specifying security manager andlib directory:- java -Djava.security.manager -Djava.security.poli
-jar lib/PrintKeyStore.jar Data/timStore timword
Page 32
cnSecurity.fm Ser321 Class Notes
esources
.io.FilePermission
st:1024-”,“listen”;
d and private
me}/-”, “read”);va virtual machinend threads
perties(), and the
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.8 Controlling Access to Runtime System R• Resources that have predefined Permissions include:
- local file system - read,write,execute,delete; see: java- sockets - listen, connect, accept, resolve- e.g. permission java.net.SocketPermission “localho- allows listening to the un-privileged ports- reflect - suppress checks to public, package, protecte- see: java.lang.reflect.ReflectPermission- security - control access to security objects- see: java.security.SecurityPermission- e.g.: perm - new java.io.FilePermission(“${user.ho- example of security object created by execution of Ja- runtime - control of classloading, security manager a- see: java.lang.RuntimePermission- property - read, write; see: java.lang.System.getPro
property permission: java.util.PropertyPermission
Page 33
cnSecurity.fm Ser321 Class Notes
rmissionsBy and keyStore
keyStorespecific (unix vs. in only slashes (/).sed, such as:
ely to subdirectoriesecified directory specified directory
policytool can have :\\ser321\\tmp).as with codeBaserData/-”, “read”;erData\\-”,“read”;
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.d.9 Specifying Policy Files and Common Pe• Policy Files may include optional codeBase and signed
- See the j2sdk javadocs information on policytool- If you specify signedBy then you must also include a- Where a file pathname is required, it must be system
windows), but where a URL is required, it must conta• When specifying codeBase in the policy file a URL is u
- grant codeBase "file:/${user.dir}/classes/-" {...}- dash at end (-) matches all class and jar files recursiv- star at end (*) matches all class and jar files in the sp- ending with / only specifies all class files (no jars) in
• java.io.FilePermission- Backslash is an escape character. Filenames entered in
single \ (backslash). In policy files must be double (c- dash (-) and star (*) at the end have same meanings - On unix: java.io.FilePermission “${user.dir}/Serve- windows: java.io.FilePermission “${user.dir}\\Serv
Page 34
cnSecurity.fm Ser321 Class Notes
itecture that allows ations.
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e Cryptography7.e.1 The Java Cryptogophy Architecture
• From the Java tutorial, the JCE includes a provider archfor multiple and interoperable cryptography implement
Page 35
cnSecurity.fm Ser321 Class Notes
ded in the java . Thus the default arate download is cy files are limited y Files
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.2 Using Crypto Services - Example• Currently, high strength crypographic services are inclu
runtime environment, but are limited by export controlspolicy files with jdk donwloads restricts strength. A sepnecessary for unlimited strength, but the associated poliby region/country. See: JCE Unlimited Strength Polic
Page 36
cnSecurity.fm Ser321 Class Notes
ce (without a
(in jdk1.1)
lity of a certificate icate revocation list
efined interfaces to s
Signature engine lgorithm to digitally
i subclass would be A-1 with DSA or
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.3 The Multiple Provider Approach• An engine class abstractly defines a cryptographic servi
concrete implementation).
- Signature, MessageDigest, and KeyPairGenerator
- CertificateFactory - This class defines the functionafactory, which is used to generate certificate and certif(CRL) objects from their encodings.
- KeyStore class (an engine class) that supplies well-daccess and modify a repository of keys and certificate
• Example of transparency to application developer
- An API client may request and use an instance of theclass to access the functionality of a digital signature asign a file.
- The actual implementation supplied in a SignatureSpfor a specific kind of signature algorithm, such as SHMD5 with RSA.
Page 37
cnSecurity.fm Ser321 Class Notes
ply
representations
m)iders. init methods
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.4 The Multiple Provider Approach• Java 2 security model allows multiple providers to sup
- Digital Signature implementation- Keystore creation and management- Algorithm parameter creation and management- Key factory support to convert between different key- Certificate factory support to manage certificates
• Security objects are not created with a constructor.- public static Signature getInstance(String algorith- getInstance handles mediation among SPI CSP prov
• After creation, security objects must be initialized using
Page 38
cnSecurity.fm Ser321 Class Notes
cryption and
xt) and a key to ut the key.y to produce the
n and decryption
r encryption, key ) algorithms.thm independence.ryption to ties:
tures. ’t be read by others
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.5 Ciphers and Related Security Properties• The Java Cryptology Architecture (JCA) supports en
decryption.• Encryption is the process of taking data (called clear te
produce cipher data that is meaningless to anyone witho• Decryption is the process of taking cipher text and a ke
corresponding clear text.• A Cipher is an object capable of carrying out encryptio
according to an encryption algorithm.• The JCA provides a framework and implementations fo
generation, and Message Authentication Code (MAC• The architecture supports multiple suppliers, and algori• Distributed Applications that use Encryption and Dec
communicate information, support three security properAuthentication, Integrity, and Confidentiality.
• The first two are defined in Section 7.c.5 Digital SignaConfidentiality means that the communicated data canin transmission.
Page 39
cnSecurity.fm Ser321 Class Notes
5Padding");
inBuf);ch is contained in
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.6 Ciphers• Constructing Cipher objects
- Cipher c1 = Cipher.getInstance("DES/EBC/PKCS- string format is: algorithm / mode / padding
• After a Cipher has been initialized, c1.init(...)- encryption or decryption is specified in call to init
• Encryption and decryption- Single-part by a single call to doFinal(inBuf);- Multi-part: several update(inBuf), and one doFinal(
• See example encryption program CipherTest.java, whithe project: cryptography.jar- javac -d classes CipherTest.java- java -cp classes ser321.security.CipherTest
Page 40
cnSecurity.fm Ser321 Class Notes
supplier.
o, provider);
o, provider);
lso used for
ey used for
ssword for
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.7 Keys• Key management varies based on usage, algorithm and • Algorithm independent keys
- KeyGenerator kg = KeyGenerator.getInstance(algkg.init(keySize, random);
• Algorithm specific keys- KeyGenerator kg = KeyGenerator.getInstance(alg
kg.init(algorithmParamSpec, random);• Symmetric keys - the same key used for encryption is a
decryption• Key pairs - Private key is used for encryption, public k
decryption• Password Based Encryption (PBE) - Use the same pa
decryption as was used for encryption.
Page 41
cnSecurity.fm Ser321 Class Notes
.ship.edu/~cdgira/oCrypto.pdf
sed on a password.assword.e project:
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.8 Password Based Encryption/Decryption• See Mohan Atreya’s e-security write-ups at:
- Introduction to Cryptography. See: https://web.cscourses/CSC434/Fall2004/docs/course_docs/IntroT
- Password Based Encryption.See: https://pdfs.semanticscholar.org/72b4/ae505f151275c07388c45cbad6bcafe6271c.pdf
• Password based encryption/decryption builds the key ba• Sender and receiver must both know and use the same p• Example PBECipherFile.java which is contained in th
cryptography.jar
Page 42
cnSecurity.fm Ser321 Class Notes
wges sent appropriate
munication
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.9 Keys: Asymmetric versus Symmetric• Both approaches have strengths and weakensses• Asymmetric = Private Key, Public Key pair
- Key exchange of Public Keys is a good approach- Computations (both encrypt and decrypt) are very slo- Anyone with the public key can understand all messa- When used with a certificate, public keys can provide
assurances for trust• Symmetric = Same key is used on both ends of the com
- Data can be encrypted and decrypted quickly- Logistics of exchanging key can be a problem
Page 43
cnSecurity.fm Ser321 Class Notes
ect can be
ith the object (so).
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.e.10 Sealed Objects• javax.crypto.SealedObject Class: Any serializable obj
encrypted/decrypted as a Sealed Object• Sealing the object// create Cipher objectbyte[] sKey; // the secret DES key (already generated)Cipher c = Cipher.getInstance("DES");c.init(Cipher.ENCRYPT_MODE, sKey);// do the sealingSealedObject so = new SealedObject("This is a secret", c);//initialize the decryption cipher with same algorithm and key ...dc.init(Cipher.DECRYPT_MODE, sKey);
• One way to unseal the object is to pass the cipher (dc) wdc transparently includes the key
try {String s = (String)so.getObject(dc);
}catch (Exception e) {// do something
};
Page 44
cnSecurity.fm Ser321 Class Notes
E)socket-based client-
ing with in communicationpt and read the
meters to use encrypting with
(+).html
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.f Secure Sockets with Java7.f.1 The Java Secure Sockets Extension (JSS
• Java Secure Sockets address three security concerns for server applications- Authentication - to be certain who I am communicat- Integrity - to be certain the information is not altered- Cryptography - to be certain no one else can interce
communications
• JSSE communication begins with an SSL handshake- Negotiate the cipher suite - which algorithm and para- Authenticates identity - establish secret key by client
server’s public key- Establish agreement on encryption mechanisms
• For further information, see the javadocs from j2sdk1.4- <java_home>/docs/technotes/guides/security/index
Page 45
cnSecurity.fm Ser321 Class Notes
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.f.2 SSL Messages
Page 46
cnSecurity.fm Ser321 Class Notes
ure Sockets)
eSockets.jar
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.f.3 Example Client-Server using JSSE (Sec• Java code for the server: see the package javax.net.ssl
- SSLSockServer.java See the example project: securSSLServerSocket sslServer;SSLSocket sslSock;
try {SSLServerSocketFactory sslServFact =
(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();sslServer = (SSLServerSocket)sslServFact.createServerSocket(8888);sslSock = (SSLSocket)sslServer.accept(); ...
}
• Java code for client- SSLSockClient.java
SSLSocket sslSock = null;try {
OutputStream out;SSLSocketFactory sslFact
=(SSLSocketFactory)SSLSocketFactory.getDefault();sslSock = (SSLSocket)sslFact.createSocket("localhost", 8888);out = sslSock.getOutputStream();
}...
Page 47
cnSecurity.fm Ser321 Class Notes
-keystore timStore -keystore
(timpwd and
to nickStorefile tim.cerre nickStore
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.f.4 Setting up Keys for JSSE• First, set up the key pair to be
- keytool -genkey -alias tim -keyalg RSA -validity 7 - keytool -genkey -alias nick -keyalg RSA -validity 7
nickStore- generate the key with the same password as the store
nickpwd in this example)• Check that the keystore includes a private key
- keytool -list -v -keystore timStore• Export a certificate (public key) for tim and import it in
- keytool -export -alias tim -keystore timStore -rfc -- keytool -import -alias timCert -file tim.cer -keysto- keytool -list -v -keystore nickStore
Page 48
cnSecurity.fm Ser321 Class Notes
ure Sockets)
ockClient.javae key entry
lic key certificatere
Principles of Distributed Software Systems © T. Lindquist 2019 April 2019
7.f.5 Example Client-Server using JSSE (Sec• See the example project: secureSockets.jar• Compile the client and server
- javac -d classes/ src/SSLSockServer.java src/SSLS• Execute the server in one window specifying the privat
- java -cp classes -Djavax.net.ssl.keyStore=timStore-Djavax.net.ssl.keyStorePassword=timpwd-Djavax.net.ssl.keyStoreType=JKSser321.security.SSLSockServer
• Execute the client in a different window specifying pub- java -cp classes -Djavax.net.ssl.trustStore=nickSto
-Djavax.net.ssl.trustStorePassword=nickpwd-Djavax.net.ssl.trustStoreType=JKSser321.security.SSLSockClient