cs255 programming assignment #1. due: friday feb 10 th (11:59pm) –can use extension days can work...
Post on 19-Dec-2015
216 views
TRANSCRIPT
![Page 1: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/1.jpg)
CS255
Programming Assignment #1
![Page 2: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/2.jpg)
Programming Assignment #1
• Due: Friday Feb 10th (11:59pm)– Can use extension days
• Can work in pairs– One solution per pair
• Test and submit on Sweet Hall machines– SCPD students: get SUNet ID!
sunetid.stanford.edu
![Page 3: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/3.jpg)
Big Picture
• Provider distributes content in freely available encrypted files
• Clients obtain decryption keys from the Authority Server
• Authority Server authenticates Clients based on their username and password
![Page 4: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/4.jpg)
Execution Scenario
Provider
PasswordsContent
PasswordsContent
Client ServerAuthentication Token
Content Key
Content
![Page 5: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/5.jpg)
Security Requirements
• Attacker cannot obtain content or passwords– Encryption
• Attacker cannot modify content or passwords– MAC
• Only registered users can obtain content– Authentication
• Prevent replay attacks on the Server– Server does not respond to same token twice
![Page 6: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/6.jpg)
Components: Provider
1. Generates three key pairs:– K-temp, K-MAC-temp (from randomness K)
– K-cont, K-MAC-cont (from masterPwd)
– K-pass, K-MAC-pass (from masterPwd)
2. Protects content with K-temp– Includes K in the header protected with K-cont
3. Protects passwords with K-pass– You choose the design
![Page 7: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/7.jpg)
Protected Content
A = Enc[K-cont, K]
Mac[K- MAC-cont, A]
B = Enc[K-temp, Content]
Mac[K- MAC-temp, B]
![Page 8: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/8.jpg)
Components: Client
1. Generates key pair:– K-user, K-MAC-user (from userPwd)
2. Reads the header from the protected content file
3. Sends the authentication token to the server
4. Verifies and decrypts the content key
5. Verifies and decrypts the content
![Page 9: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/9.jpg)
Components: Authority Server
1. Generates key pairs:– K-cont, K-MAC-cont (from masterPwd)
– K-pass, K-MAC-pass (from masterPwd)
2. Verifies and decrypts the password file
3. For every client that connects1. Generates key pair from users password
2. Verifies the authentication token
3. Decrypts and sends the content key
![Page 10: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/10.jpg)
Authentication Protocol
A = Enc[K-cont, K]
Mac[K-MAC-cont, A]
C = R || username
Mac[K- MAC-user, C]
D = Enc[K-user, K]
Mac[K- MAC-user, D]
![Page 11: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/11.jpg)
Generating Keys From Passwords
• You choose the design• What NOT to do:
– Use passwords as keys directly (weak keys)– Split passwords in half (easier to guess the password)
• Goal: Finding the key should be as hard as guessing the password– Even if related keys are compromised
• Tools available:– Block cipher (PRP), PRG, MAC, Cryptographic hash
![Page 12: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/12.jpg)
Java Cryptography Extension
• Implementations of crypto primitives
Cipher Cipher
Pseudo-random Generator SecureRandom
Message Authentication Code Mac
Cryptographic Hash MessageDigest
![Page 13: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/13.jpg)
JCE: Using Ciphers
1. Select the algorithm
2. Initialize with desired mode and key
3. Encrypt/Decrypt
// Create and initialize the cipherCipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, enckey);
// Encrypt the messagebyte[] msg = "Content is here.".getBytes();byte[] enc = cipher.doFinal(msg);
![Page 14: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/14.jpg)
JCE: Generating Random Keys
1. Start the PRG (random seed set by default)
2. Initialize KeyGenerator with the PRG
3. Generate the key
// Generate a random encryption keySecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
KeyGenerator enckeygen = KeyGenerator.getInstance("AES");
enckeygen.init(prng);
SecretKey enckey = enckeygen.generateKey();
![Page 15: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/15.jpg)
Counter Mode
• Not supported in JCE, must implement it yourself
• To get a “plain” cipher use ECB mode with no padding– Warning! CBC mode used by default– Need to specify “…/ECB/NoPadding”
• You can use any available block cipher
![Page 16: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/16.jpg)
Networking
• Starter code communicates text, you need to send data
• Can use data streams
// Setup data streamstoServer = new DataOutputStream(clientSocket.getOutputStream());fromServer = new DataInputStream(clientSocket.getInputStream());
• Can use for files as well• Alternative: convert bytes to text
![Page 17: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/17.jpg)
Networking: Example
• Send username and ciphertext to the server// Send to servertoServer.writeUTF(username);toServer.writeInt(enc.length);toServer.write(enc);toServer.flush();
• Receive username and ciphertext from the client// Receive from ClientString username = fromClient.readUTF();int enclength = fromClient.readInt();byte[] enc = new byte[enclength];fromClient.readFully(enc);
![Page 18: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/18.jpg)
Implementation Issues
• Counter for CRT mode (try BigNum)
• Replay attacks (try HashMap)
• Minor issues– Message size not a multiple of cipher block size– Format of the plaintext password file– Exact format of files and network traffic
![Page 19: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/19.jpg)
Starter Code
• Four Java source files
Provider code ProviderGUI.java
Client code ClientGUI.java
Global server code AuthorityServer.java
Per-client server code AuthorityServerThread.java
![Page 20: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/20.jpg)
Submitting
• README file– Names, student IDs– Describe your design choices
• Sample plaintext content and password files
• Your sources
![Page 21: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/21.jpg)
Grading
• Security comes first– Design choices– Correctness of the implementation
• Did you implement all required parts?• We do not care about:
– Cosmetics– Coding style– Efficiency
![Page 22: CS255 Programming Assignment #1. Due: Friday Feb 10 th (11:59pm) –Can use extension days Can work in pairs –One solution per pair Test and submit on Sweet](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d395503460f94a13a07/html5/thumbnails/22.jpg)
Stuck?
• Use the newsgroup (su.class.cs255)– Best way to have your questions answered
quickly
• TAs cannot:– Debug your code– Troubleshoot your local Java installation