SlideShare une entreprise Scribd logo
1  sur  190
@matthewmccull
©MatthewMcCullough,AmbientIdeas,LLC
ENCRYPTION
BOOT CAMP
Security is the mission
@matthewmccull
©MatthewMcCullough,AmbientIdeas,LLC
©MatthewMcCullough,AmbientIdeas,LLC
ENCRYPTING?
statistics say 76% are not
DATA BREACHED
at 85% of companies in just
the last 12 Months
ANCIENT HISTORY
Everything old is new again
ANCIENT HISTORY
Everything old is new again
44 B.C.
That’s 2,054 years ago...
Sensitive
Data
Plain
Sight
Sensitive
Data
Plain
Sight
Recipientor
Storage
Sensitive
Data
Plain
Sight
Recipientor
Storage
Sensitive
Data
C
ontents
O
bscured
Julius Caesar
Caesar Cipher
A B C D E F G
A B C D E F G
a.k.a.
ROT(2)
Shift Cipher
Caesar Cipher
A B C D E F G
A B C D E F G
a.k.a.
ROT(2)
Shift Cipher
Caesar Cipher
A B C D E F G
A B C D E F G
a.k.a.
ROT(2)
Shift Cipher
Caesar Cipher
a.k.a.
ROT(2)
Shift Cipher
200 lines for a
complete implementation
of Caesar Cipher
Leave the ciphers
to the career
cryptographers
BROKEN
Perfectly safe data is a myth
BROKEN
Perfectly safe data is a myth
Compromised
Compromised
★ Every algorithm is vulnerable
Compromised
★ Every algorithm is vulnerable
★ Crack by real-time brute force
Compromised
★ Every algorithm is vulnerable
★ Crack by real-time brute force
★ Crack by pre-computed tables
Compromised
★ Every algorithm is vulnerable
★ Crack by real-time brute force
★ Crack by pre-computed tables
★ Function of
time + money + hardware
and yet open algorithms are
still the best
delicious.com/matthew.mccullough/encryption
JCE PRIMER
The world of Java crypto
JCE PRIMER
The world of Java crypto
JavaCryptographyExtension
★ Known as JCE
★ Included in all JREs Since Java 1.2
★ Pluggable provider architecture
★ JCE extends Java Cryptography
Architecture (JCA)
JCE Providers
Default Sun JRE Providers
★ SUN
★ SunJCE
★ SunJSSE
★ SunRsaSign
RegisteringaProvider
Static
★ <java-home>/lib/security/java.security
★ security.provider.n=masterClassName
RegisteringaProvider
Dynamic★ java.security.Security class
★ addProvider()
★ insertProviderAt()
★ Not persistent across VM instances
Encryption Law
& the JCE
country borders stop bits
JCE Strength
★ Jurisdiction Policy Files
★ Two variants
★ Algorithm strength differences
Strong
Strong
Unlimited
Unlimited
JCE Strength
JCE Strength
★ Strongstrength included in all JREs
JCE Strength
★ Strongstrength included in all JREs
★ Unlimitedstrength is a separate download
available based on US export rules
Strong Policy
// File: default_local.policy
// Some countries have import limits on crypto strength.
// This policy file is worldwide importable.
grant {
permission javax.crypto.CryptoPermission "DES", 64;
permission javax.crypto.CryptoPermission "DESede", *;
permission javax.crypto.CryptoPermission "RC2", 128,
"javax.crypto.spec.RC2ParameterSpec", 128;
permission javax.crypto.CryptoPermission "RC4", 128;
permission javax.crypto.CryptoPermission "RC5", 128,
"javax.crypto.spec.RC5ParameterSpec", *, 12, *;
permission javax.crypto.CryptoPermission "RSA", 2048;
permission javax.crypto.CryptoPermission *, 128;
};
“Strong” Key Limits
Algorithm Max Key Size
DES 64
DESede
3des
168
RC2 128
RC4 128
RC5 128
RSA 2048
Others 128
“Unlimited” Key Limits
Algorithm Max Key Size
DES ∞
DESede
3des
∞
RC2 ∞
RC4 ∞
RC5 ∞
RSA ∞
Others ∞
Digests &
Hashes
One way functions
What is a Hash?
★ Small set of bytes representing a large
message
★ Small change in message = large change in
digest
★ Digests also known as hashes
★ Same algorithms, different purposes
What is a Digest?
★ Integrity check (MIC) for chunk of data
or
★ Password storage mechanism
MessageDigest
MessageDigest
★ java.security.MessageDigest
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
★ MD2
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
★ MD2
★ MD5 (128 bit)
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
★ MD2
★ MD5 (128 bit)
★ SHA-1(160 bit)
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
★ MD2
★ MD5 (128 bit)
★ SHA-1(160 bit)
★ SHA-256
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
★ MD2
★ MD5 (128 bit)
★ SHA-1(160 bit)
★ SHA-256
★ SHA-384
MessageDigest
★ java.security.MessageDigest
★ Many algorithms available
★ MD2
★ MD5 (128 bit)
★ SHA-1(160 bit)
★ SHA-256
★ SHA-384
★ SHA-512
MessageDigest
MessageDigest
MessageDigest
U. S. Department of Homeland
Security said MD5is
"considered cryptographically broken
and unsuitable for further use"
download.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html
System.out.println("Message1 SHA1 digest: "
+ shaAndBase64Encode(message1));
System.out.println("Message2 SHA1 digest: "
+ shaAndBase64Encode(message2));
}
/**
* Helper function to both SHA-1 hash and
* base64 encode the resulting bytes to a String
*/
public static String shaAndBase64Encode(String message)
throws NoSuchAlgorithmException {
MessageDigest sha = MessageDigest.getInstance("SHA-1");
//Salt could be applied here
//Integer salt = <some random number generator>
//sha.update(salt.getBytes());
byte[] digest = sha.digest(message.getBytes());
return new sun.misc.BASE64Encoder().encode(digest);
}
}
*
* Demonstrate that very similar messages
* have radically different hashes.
*/
public class MessageDigestSHA
{
public static void main( String[] args )
throws NoSuchAlgorithmException
{
//Set up the message to be encoded
String message1 = "Four score and seven years ago";
String message2 = "Four score and seven tears ago";
System.out.println("Message1 SHA1 digest: "
+ shaAndBase64Encode(message1));
System.out.println("Message2 SHA1 digest: "
+ shaAndBase64Encode(message2));
}
/**
* Helper function to both SHA-1 hash and
* base64 encode the resulting bytes to a String
*/
public static String shaAndBase64Encode(String message)
throws NoSuchAlgorithmException {
*
* Demonstrate that very similar messages
* have radically different hashes.
*/
public class MessageDigestSHA
{
public static void main( String[] args )
throws NoSuchAlgorithmException
{
//Set up the message to be encoded
String message1 = "Four score and seven years ago";
String message2 = "Four score and seven tears ago";
System.out.println("Message1 SHA1 digest: "
+ shaAndBase64Encode(message1));
System.out.println("Message2 SHA1 digest: "
+ shaAndBase64Encode(message2));
}
/**
* Helper function to both SHA-1 hash and
* base64 encode the resulting bytes to a String
*/
public static String shaAndBase64Encode(String message)
throws NoSuchAlgorithmException {
Input
Message1 SHA1 digest: DmCJIg4Bq/xpGIxVXxo3IB0vo38=
Message2 SHA1 digest: oaLHt8tr31ttngCDjyYuWowF5Mc=
String message1 = "Four score and seven years ago";
String message2 = "Four score and seven tears ago";
Result
SYMMETRIC
My key is your key
SYMMETRIC
My key is your key
Why Symmetric?
Why Symmetric?
★ Fast
Why Symmetric?
★ Fast
★ Well suited for bulk data
Using Symmetric
Using Symmetric
★ Secure network for passing keys
or
Using Symmetric
★ Secure network for passing keys
or
★ Never decrypted at remote end
Symmetric
A B
Symmetric
Message/FileA B
Symmetric
A’s
256 bit
symmetric
key
Message/FileA B
Encrypted with
256 bit symmetric key
Symmetric
A’s
256 bit
symmetric
key
Message/FileA B
Encrypted with
256 bit symmetric key
Symmetric
A’s
256 bit
symmetric
key
Message/FileA B
Symmetric
A’s
256 bit
symmetric
key
Message/FileA B
Symmetric
A’s
256 bit
symmetric
key
Message/FileA B
How do we securely get
the key from Alice to Bob?
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import sun.misc.BASE64Encoder;
/**
* Use the SecureRandom java security class to generate
* a more expensive, but cryptographically secure random number.
*/
public class SymmetricEncrypt
{
public static void main( String[] args )
throws NoSuchAlgorithmException, NoSuchProviderException,
NoSuchPaddingException, InvalidKeyException,
IllegalBlockSizeException, BadPaddingException
{
import sun.misc.BASE64Encoder;
/**
* Use the SecureRandom java security class to generate
* a more expensive, but cryptographically secure random number.
*/
public class SymmetricEncrypt
{
public static void main( String[] args )
throws NoSuchAlgorithmException, NoSuchProviderException,
NoSuchPaddingException, InvalidKeyException,
IllegalBlockSizeException, BadPaddingException
{
final String message1 = "Four score and seven years ago";
//Build a new encryption key
final KeyGenerator keyGen = KeyGenerator.getInstance("DESede");
keyGen.init(168);
final SecretKey desKey = keyGen.generateKey();
//Set up the cipher
final Cipher desCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
//////////////////////////////////////
//Put the cipher in encryption mode
desCipher.init(Cipher.ENCRYPT_MODE, desKey);
//Encrypt and output the base64 data
byte[] clearText = message1.getBytes();
byte[] encryptedBytes = desCipher.doFinal(clearText);
final String message1 = "Four score and seven years ago";
//Build a new encryption key
final KeyGenerator keyGen = KeyGenerator.getInstance("DESede");
keyGen.init(168);
final SecretKey desKey = keyGen.generateKey();
//Set up the cipher
final Cipher desCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
//////////////////////////////////////
//Put the cipher in encryption mode
desCipher.init(Cipher.ENCRYPT_MODE, desKey);
//Encrypt and output the base64 data
byte[] clearText = message1.getBytes();
byte[] encryptedBytes = desCipher.doFinal(clearText);
BASE64Encoder b64e = new sun.misc.BASE64Encoder();
String base64Encrypted = b64e.encode(encryptedBytes);
System.out.println("Encrypted text: " + base64Encrypted);
//////////////////////////////////////
//Put the cipher in decryption mode
desCipher.init(Cipher.DECRYPT_MODE, desKey);
//Decrypt and output the original string
byte[] decryptedBytes = desCipher.doFinal(encryptedBytes);
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted text: " + decryptedText);
}
//Set up the cipher
final Cipher desCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
//////////////////////////////////////
//Put the cipher in encryption mode
desCipher.init(Cipher.ENCRYPT_MODE, desKey);
//Encrypt and output the base64 data
byte[] clearText = message1.getBytes();
byte[] encryptedBytes = desCipher.doFinal(clearText);
BASE64Encoder b64e = new sun.misc.BASE64Encoder();
String base64Encrypted = b64e.encode(encryptedBytes);
System.out.println("Encrypted text: " + base64Encrypted);
//////////////////////////////////////
//Put the cipher in decryption mode
desCipher.init(Cipher.DECRYPT_MODE, desKey);
//Decrypt and output the original string
byte[] decryptedBytes = desCipher.doFinal(encryptedBytes);
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted text: " + decryptedText);
}
}
Input
Encrypted text: P0FT6N3XXrohtsz7OLh3FGYY0wErkPIur1DP6Csbj4g=
Decrypted text: Four score and seven years ago
String message1 = "Four score and seven years ago";
Result
SYMMETRIC
Identical keys for encryption and decryption
Block
Block
Predefined content length
Block
Predefined content length
★ Well-known end to the content
Block
Predefined content length
★ Well-known end to the content
★ Files on disk
Block
Predefined content length
★ Well-known end to the content
★ Files on disk
★ Inefficient when padding
DES
Data Encryption Standard
★ Block cipher
★ Banking industry
★ DES is known to be broken
3DES
Triple Data Encryption Standard
★ Block cipher
★ a.k.a DESede
★ Basically three passes of DES
★ Reasonably strong
Blowfish
★ Block cipher
★ Unpatented (intentionally)
★ Secure replacement for DES
★ Faster than DES
★ 32 to 448 bit keys
★ Overshadowed by AES
AES
Advanced Encryption Standard
★ Block cipher
★ Government standard
★
Rijndael algorithm
(Joan Daemen, Vincent Rijmen)
★
4 years of evaluation
★
Final in December 2000
★ Very Secure
ENCRYPTED = SAFE,
RIGHT?
information leakage from encrypted data
ENCRYPTED = SAFE,
RIGHT?
information leakage from encrypted data
Encryptedisn’tenough?
http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
Use anything instead of
ECB!
CBC, PCBC, CFB, OFB, GCM
SECURE KEY EXCHANGE
securely swapping symmetric keys
SECURE KEY EXCHANGE
securely swapping symmetric keys
Diffie-Hellman
Diffie-Hellman
Key Agreement Protocol
Diffie-Hellman
Key Agreement Protocol
★ Alice & Bob independently generate the shared
(session) key
Diffie-Hellman
Key Agreement Protocol
★ Alice & Bob independently generate the shared
(session) key
★ Published 1976, but invented earlier
DH Diagrammed
A B
DH Diagrammed
A B
predetermined and openly shared
DH Diagrammed
A B
predetermined and openly shared
g = random
g = 11
DH Diagrammed
A B
predetermined and openly shared
g = random
g = 11
p = prime
p = 23
DH Diagrammed
A
picks a = 6 picks b = 4
B
predetermined and openly shared
g = random
g = 11
p = prime
p = 23
DH Diagrammed
A
picks a = 6
A= ga mod p
picks b = 4
B B= gb mod p
predetermined and openly shared
g = random
g = 11
p = prime
p = 23
DH Diagrammed
A
picks a = 6
A= ga mod p
9=116 mod 23
picks b = 4
B B= gb mod p
13=114 mod 23
predetermined and openly shared
g = random
g = 11
p = prime
p = 23
DH Diagrammed
A
picks a = 6
A= ga mod p
9=116 mod 23
picks b = 4
B B= gb mod p
13=114 mod 23
predetermined and openly shared
g = random
g = 11
A=9B=13
p = prime
p = 23
DH Diagrammed
A
picks a = 6
A= ga mod p
9=116 mod 23
picks b = 4
B B= gb mod p
13=114 mod 23
K= Ba mod p K= Ab mod p
predetermined and openly shared
g = random
g = 11
A=9B=13
p = prime
p = 23
DH Diagrammed
A
picks a = 6
A= ga mod p
9=116 mod 23
picks b = 4
B B= gb mod p
13=114 mod 23
K= Ba mod p
6= 136 mod 23
K= Ab mod p
6= 94 mod 23
predetermined and openly shared
g = random
g = 11
A=9B=13
p = prime
p = 23
DH Diagrammed
A
picks a = 6
A= ga mod p
9=116 mod 23
picks b = 4
B B= gb mod p
13=114 mod 23
K= Ba mod p
6= 136 mod 23
K= Ab mod p
6= 94 mod 23
predetermined and openly shared
g = random
g = 11
A=9B=13
p = prime
p = 23
Encryption can begin
What’s wrong
with this?
RANDOM NUMBERS
Seed the machine
RANDOM NUMBERS
Seed the machine
SecureRandom
★ java.security.SecureRandom
★ Cryptographically strong pseudo-random
number generator (PRNG)
★ “Unable to distinguish from a true random
source”
★ Used in combination with many ciphers
package com.ambientideas;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
/**
* Use the SecureRandom java security class to generate
* a more expensive, but cryptographically secure random number.
*/
public class SecureRandomNumber
{
public static void main( String[] args ) throws
NoSuchAlgorithmException
{
//Do the expensive one time setup of the
import java.security.SecureRandom;
/**
* Use the SecureRandom java security class to generate
* a more expensive, but cryptographically secure random number.
*/
public class SecureRandomNumber
{
public static void main( String[] args ) throws
NoSuchAlgorithmException
{
//Do the expensive one time setup of the
// random number generator instance
SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
//Get the next random number
String randomNum = new Integer( prng.nextInt() ).toString();
System.out.println("Random number: " + randomNum);
}
}
* a more expensive, but cryptographically secure random number.
*/
public class SecureRandomNumber
{
public static void main( String[] args ) throws
NoSuchAlgorithmException
{
//Do the expensive one time setup of the
// random number generator instance
SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
//Get the next random number
String randomNum = new Integer( prng.nextInt() ).toString();
System.out.println("Random number: " + randomNum);
}
}
Result
Random number: 1633471380
ASYMMETRIC
Throwing away keys
faster than an intern locksmith
ASYMMETRIC
Throwing away keys
faster than an intern locksmith
RSA
★ Ron Rivest, Adi Shamir, Leonard Adleman
★ Published in 1978
★ M.I.T. Patented in 1983
★ Patent Expired in 2000
RSA
A B
RSA
Message/FileA B
RSA
B’s
2048 bit
public key
Message/FileA B
Encrypted with
2048 bit RSA key
RSA
Message/FileA B
Encrypted with
2048 bit RSA key
RSA
B’s
2048 bit
private key
Message/FileA B
RSA
Message/FileA B
RSA
Message/FileA B
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import sun.misc.BASE64Encoder;
/**
* Use the SecureRandom java security class to generate
* a more expensive, but cryptographically secure random
public static void main( String[] args ) throws
NoSuchAlgorithmException, NoSuchProviderException,
IOException, NoSuchPaddingException, InvalidKeyException,
IllegalBlockSizeException, BadPaddingException
{
final String message1 = "Four score and seven years ago";
// Generate the Key Pair
final KeyPairGenerator keyGen =
KeyPairGenerator.getInstance("RSA");
final SecureRandom random =
SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
KeyPair pair = keyGen.generateKeyPair();
final PrivateKey privKey = pair.getPrivate();
final PublicKey pubKey = pair.getPublic();
//Encrypt using the private key
Cipher rsa = Cipher.getInstance("RSA/OFB/PKCS1Padding");
rsa.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] encryptedBytes = rsa.doFinal(message1.getBytes());
BASE64Encoder b64e = new sun.misc.BASE64Encoder();
KeyPair pair = keyGen.generateKeyPair();
final PrivateKey privKey = pair.getPrivate();
final PublicKey pubKey = pair.getPublic();
//Encrypt using the private key
Cipher rsa = Cipher.getInstance("RSA/OFB/PKCS1Padding");
rsa.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] encryptedBytes = rsa.doFinal(message1.getBytes());
BASE64Encoder b64e = new sun.misc.BASE64Encoder();
String base64Encrypted = b64e.encode(encryptedBytes);
System.out.println("Encrypted text: " + base64Encrypted);
//Decrypt using the private key
rsa.init(Cipher.DECRYPT_MODE, privKey);
byte[] decryptedBytes = rsa.doFinal(encryptedBytes);
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted text: " + decryptedText);
}
}
final PublicKey pubKey = pair.getPublic();
//Encrypt using the private key
Cipher rsa = Cipher.getInstance("RSA/OFB/PKCS1Padding");
rsa.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] encryptedBytes = rsa.doFinal(message1.getBytes());
BASE64Encoder b64e = new sun.misc.BASE64Encoder();
String base64Encrypted = b64e.encode(encryptedBytes);
System.out.println("Encrypted text: " + base64Encrypted);
//Decrypt using the private key
rsa.init(Cipher.DECRYPT_MODE, privKey);
byte[] decryptedBytes = rsa.doFinal(encryptedBytes);
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted text: " + decryptedText);
}
}
Input
Encrypted text: A8Is+4r7sDn28fD6IQvZiR5JxPs/vh7UnXrF38acJt6R/
ARisj/zLtC7Xn6iJgNQPhc16wkVZhCF
em7oNoim+ooTUDDZQ+E3qP6y/
DZJGkLBoZuZVLeLAW1LUtHSzduRUOg1uMynJz14wxzwfV8wfRwf
atpySkOhGqWS63bPNRs=
Decrypted text: Four score and seven years ago
String message1 = "Four score and seven years ago";
Result
Encryption Speed
asymmetric can be 1000x slower
than symmetric
Key Size & Security
Key Size & Security
Symmetric
KeySize
160bitDES
Key Size & Security
Symmetric
KeySize
Asymmetric
KeySize
1024bitRSA
160bitDES
Key Size & Security
Symmetric
KeySize
Asymmetric
KeySize
Security
1024bitRSA
112bits
160bitDES
Key Size & Security
Symmetric
KeySize
Asymmetric
KeySize
Security Security
1024bitRSA
112bits
160bitDES
128bits
What do we do about that?
BLENDED
symmetric with a twist of asymmetric
BLENDED
symmetric with a twist of asymmetric
PGP
A B
PGP
Message/File
A B
PGP
Random generated
256 bit symmetric key
Message/File
A B
Encrypted with
256 bit symmetric key
PGP
Random generated
256 bit symmetric key
Message/File
A B
Encrypted with
256 bit symmetric key
PGP
Random generated
256 bit symmetric key
B’s
2048 bit
public key
Message/File
A B
Encrypted with
256 bit symmetric key
Encrypted with
2048 bit RSA key
PGP
Random generated
256 bit symmetric key
Message/File
A B
Encrypted with
256 bit symmetric key
Encrypted with
2048 bit RSA key
PGP
Random generated
256 bit symmetric key
Message/File
A B
Encrypted with
256 bit symmetric key
Encrypted with
2048 bit RSA key
PGP
Random generated
256 bit symmetric key
B’s
2048 bit
private key
Message/File
A B
Encrypted with
256 bit symmetric key
PGP
Random generated
256 bit symmetric key
Message/File
A B
PGP
Message/File
A B
PGP
Message/File
A B
Don’t forget
the humans
http://xkcd.com/538/
http://xkcd.com/538/
ENCRYPTION BOOT CAMP
Security is the Mission
Email
Twitter
Blog
Matthew McCullough
matthewm@ambientideas.com
@matthewmccull
http://ambientideas.com/blog

Contenu connexe

Tendances

ImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_DoinImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_Doin
Jonny Doin
 

Tendances (20)

Go paranoid
Go paranoidGo paranoid
Go paranoid
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Secure Storage: COMPOSABLE AND ROBUST OUTSOURCED STORAGE
Secure Storage: COMPOSABLE AND ROBUST OUTSOURCED STORAGESecure Storage: COMPOSABLE AND ROBUST OUTSOURCED STORAGE
Secure Storage: COMPOSABLE AND ROBUST OUTSOURCED STORAGE
 
Elasticsearch Security Strategy
Elasticsearch Security StrategyElasticsearch Security Strategy
Elasticsearch Security Strategy
 
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
Black Clouds and Silver Linings in Node.js Security - Liran Tal Snyk OWASP Gl...
 
IPv6 for Pentesters
IPv6 for PentestersIPv6 for Pentesters
IPv6 for Pentesters
 
Elasticsearch security
Elasticsearch securityElasticsearch security
Elasticsearch security
 
SSL/TLS for Mortals (JAX DE 2018)
SSL/TLS for Mortals (JAX DE 2018)SSL/TLS for Mortals (JAX DE 2018)
SSL/TLS for Mortals (JAX DE 2018)
 
What is the cost of a secret
What is the cost of a secretWhat is the cost of a secret
What is the cost of a secret
 
WiFi practical hacking "Show me the passwords!"
WiFi practical hacking "Show me the passwords!"WiFi practical hacking "Show me the passwords!"
WiFi practical hacking "Show me the passwords!"
 
Carlos García - Pentesting Active Directory Forests [rooted2019]
Carlos García - Pentesting Active Directory Forests [rooted2019]Carlos García - Pentesting Active Directory Forests [rooted2019]
Carlos García - Pentesting Active Directory Forests [rooted2019]
 
"Into the Fog The Return of ICEFOG APT" - Chi en (Ashley) Shen
"Into the Fog The Return of ICEFOG APT" - Chi en (Ashley) Shen"Into the Fog The Return of ICEFOG APT" - Chi en (Ashley) Shen
"Into the Fog The Return of ICEFOG APT" - Chi en (Ashley) Shen
 
Aoevideo
AoevideoAoevideo
Aoevideo
 
NDIS Packet of Death
NDIS Packet of DeathNDIS Packet of Death
NDIS Packet of Death
 
Da APK al Golden Ticket
Da APK al Golden TicketDa APK al Golden Ticket
Da APK al Golden Ticket
 
ImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_DoinImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_Doin
 
Secure password - CYBER SECURITY
Secure password - CYBER SECURITYSecure password - CYBER SECURITY
Secure password - CYBER SECURITY
 
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
 
Breaking wifi-faster
Breaking wifi-fasterBreaking wifi-faster
Breaking wifi-faster
 
Laura Garcia - Shodan API and Coding Skills [rooted2019]
Laura Garcia - Shodan API and Coding Skills [rooted2019]Laura Garcia - Shodan API and Coding Skills [rooted2019]
Laura Garcia - Shodan API and Coding Skills [rooted2019]
 

En vedette

En vedette (8)

Redes informaticas
Redes informaticasRedes informaticas
Redes informaticas
 
Presentation1.PPTX
Presentation1.PPTXPresentation1.PPTX
Presentation1.PPTX
 
Todd Mctavish Multimedia Games Incc
Todd Mctavish Multimedia Games InccTodd Mctavish Multimedia Games Incc
Todd Mctavish Multimedia Games Incc
 
Кулик Я.В. Новые правила рассмотрения антимонопольных дел
Кулик Я.В. Новые правила рассмотрения антимонопольных делКулик Я.В. Новые правила рассмотрения антимонопольных дел
Кулик Я.В. Новые правила рассмотрения антимонопольных дел
 
Raja_CV
Raja_CVRaja_CV
Raja_CV
 
Choose & study
Choose & studyChoose & study
Choose & study
 
ENJ-300 La Defensa en el Proceso Penal: Módulo II: Los Sujetos Procesales
ENJ-300 La Defensa en el Proceso Penal: Módulo II: Los Sujetos ProcesalesENJ-300 La Defensa en el Proceso Penal: Módulo II: Los Sujetos Procesales
ENJ-300 La Defensa en el Proceso Penal: Módulo II: Los Sujetos Procesales
 
Active grammar 3
Active grammar 3Active grammar 3
Active grammar 3
 

Similaire à Encryption Boot Camp at Øredev

Java Symmetric
Java SymmetricJava Symmetric
Java Symmetric
phanleson
 

Similaire à Encryption Boot Camp at Øredev (20)

Encryption Boot Camp at JavaZone 2010
Encryption Boot Camp at JavaZone 2010Encryption Boot Camp at JavaZone 2010
Encryption Boot Camp at JavaZone 2010
 
Encryption Boot Camp on the JVM
Encryption Boot Camp on the JVMEncryption Boot Camp on the JVM
Encryption Boot Camp on the JVM
 
Cryptography 101 for Java developers
Cryptography 101 for Java developersCryptography 101 for Java developers
Cryptography 101 for Java developers
 
Cryptography 101 for Java developers
Cryptography 101 for Java developersCryptography 101 for Java developers
Cryptography 101 for Java developers
 
Gimme Caching - The JCache Way
Gimme Caching - The JCache WayGimme Caching - The JCache Way
Gimme Caching - The JCache Way
 
Django cryptography
Django cryptographyDjango cryptography
Django cryptography
 
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
 
Cargo Cult Security UJUG Sep2015
Cargo Cult Security UJUG Sep2015Cargo Cult Security UJUG Sep2015
Cargo Cult Security UJUG Sep2015
 
Cryptography 101 for_java_developers, Fall 2019
Cryptography 101 for_java_developers, Fall 2019Cryptography 101 for_java_developers, Fall 2019
Cryptography 101 for_java_developers, Fall 2019
 
Cryptography 101 for Java Developers - JavaZone2019
Cryptography 101 for Java Developers - JavaZone2019Cryptography 101 for Java Developers - JavaZone2019
Cryptography 101 for Java Developers - JavaZone2019
 
Random musings on SSL/TLS configuration
Random musings on SSL/TLS configurationRandom musings on SSL/TLS configuration
Random musings on SSL/TLS configuration
 
Basics of ssl
Basics of sslBasics of ssl
Basics of ssl
 
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Belgium 2019
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Belgium 201910 Excellent Ways to Secure Your Spring Boot Application - Devoxx Belgium 2019
10 Excellent Ways to Secure Your Spring Boot Application - Devoxx Belgium 2019
 
Hadoop Security Now and Future
Hadoop Security Now and FutureHadoop Security Now and Future
Hadoop Security Now and Future
 
Implement symmetric key algorithms.pptx
Implement symmetric key algorithms.pptxImplement symmetric key algorithms.pptx
Implement symmetric key algorithms.pptx
 
Java Symmetric
Java SymmetricJava Symmetric
Java Symmetric
 
Cache on Delivery
Cache on DeliveryCache on Delivery
Cache on Delivery
 
7.3. iCloud keychain-2
7.3. iCloud keychain-27.3. iCloud keychain-2
7.3. iCloud keychain-2
 
Python Cryptography & Security
Python Cryptography & SecurityPython Cryptography & Security
Python Cryptography & Security
 
"Crypto wallets security. For developers", Julia Potapenko
"Crypto wallets security. For developers", Julia Potapenko"Crypto wallets security. For developers", Julia Potapenko
"Crypto wallets security. For developers", Julia Potapenko
 

Plus de Matthew McCullough

Plus de Matthew McCullough (20)

Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge InteractiveUsing Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
 
All About GitHub Pull Requests
All About GitHub Pull RequestsAll About GitHub Pull Requests
All About GitHub Pull Requests
 
Adam Smith Builds an App
Adam Smith Builds an AppAdam Smith Builds an App
Adam Smith Builds an App
 
Git's Filter Branch Command
Git's Filter Branch CommandGit's Filter Branch Command
Git's Filter Branch Command
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
 
Finding Things in Git
Finding Things in GitFinding Things in Git
Finding Things in Git
 
Git and GitHub for RallyOn
Git and GitHub for RallyOnGit and GitHub for RallyOn
Git and GitHub for RallyOn
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
 
Git Notes and GitHub
Git Notes and GitHubGit Notes and GitHub
Git Notes and GitHub
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGBuild Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUG
 
Git Going for the Transylvania JUG
Git Going for the Transylvania JUGGit Going for the Transylvania JUG
Git Going for the Transylvania JUG
 
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsTransylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting Announcements
 
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUGGame Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUG
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
R Data Analysis Software
R Data Analysis SoftwareR Data Analysis Software
R Data Analysis Software
 
Please, Stop Using Git
Please, Stop Using GitPlease, Stop Using Git
Please, Stop Using Git
 
Dr. Strangedev
Dr. StrangedevDr. Strangedev
Dr. Strangedev
 

Dernier

Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
ssuserdda66b
 

Dernier (20)

Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
 

Encryption Boot Camp at Øredev