Encryption Signatures Bulk data Identity Summary Using Asymmetric Cryptography in Ruby Rzeszów Ruby User Group #4 Wojciech Rząsa [email protected] @wrzasa Katedra Informatyki i Automatyki, Politechnika Rzeszowska http://www.kia.prz.edu.pl/ 19.01.2017 Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 1/35
Encryption Signatures Bulk data Identity Summary Why use cryptography? Confidentiality (data privacy) Authenticity (who wrote it?) Integrity (was it changed along the way?) Non-repudiation . . . Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 4/35
Encryption Signatures Bulk data Identity Summary Concepts Key management Encryption/decryption Public key encryption § 1 require ’openssl ’ 2 3 message = "W Tyńcu , w gospodzie ,,Pod Lutym Turem ’’, 4 należącej do opactwa , siedziało kilku ludzi , słuchając 5 opowiadania wojaka bywalca , który z dalekich stron 6 przybywszy , prawił im o przygodach , jakich na wojnie 7 i w czasie podróży doznał." 8 9 key = OpenSSL :: PKey :: RSA.new File.read(’keys/public2.pem ’) 10 11 encrypted = key. public_encrypt message
¦ ¥ Public key encryption Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 16/35
Encryption Signatures Bulk data Identity Summary Concepts Key management Encryption/decryption Asymmetric encryption/decryption Easy (?) key distribution Slow encryption/decryption Vulnerable when used for bulk data Private-key cipher-text is a large ”signature” Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 18/35
¦ ¥ Verifying signature W Tyńcu, w gospodzie ,,Pod Lutym Turem’’, należącej do opactwa, siedziało kilku ludzi, słuchając opowiadania wojaka Szwejka, który z dalekich stron przybywszy, prawił im o przygodach, jakich na wojnie i w czasie podróży doznał. Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 21/35
Encryption Signatures Bulk data Identity Summary Bulk data 1 Share public keys 2 Generate arbitrary secure symmetric key 3 Encrypt message with the symmetric key 4 Encrypt symmetric key with public key of recipient 5 Send/save ciphertext and encrypted key Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 22/35
Encryption Signatures Bulk data Identity Summary Bulk data 1 Share public keys 2 Generate arbitrary secure symmetric key 3 Encrypt message with the symmetric key 4 Encrypt symmetric key with public key of recipient 5 Send/save ciphertext and encrypted key Advantages of both cryptography types Key distribution with asymmetric cryptography Efficient data exchange with symmetric cryptography Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 22/35
Encryption Signatures Bulk data Identity Summary Bulk data 1 Share public keys 2 Generate arbitrary secure symmetric key 3 Encrypt message with the symmetric key 4 Encrypt symmetric key with public key of recipient 5 Send/save ciphertext and encrypted key Advantages of both cryptography types Key distribution with asymmetric cryptography Efficient data exchange with symmetric cryptography How to use it? Get one of existing solutions TLS or SSH protocol for communication GPG/PGP for file encryption Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 22/35
Encryption Signatures Bulk data Identity Summary Identity of private key owner Key owner problem I have a public key. How do I know who owns corresponding private key? Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 23/35
Encryption Signatures Bulk data Identity Summary Identity of private key owner Key owner problem I have a public key. How do I know who owns corresponding private key? Key with identity Public key Identity data . . . Digital signature(s) Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 23/35
Encryption Signatures Bulk data Identity Summary X.509 Certificate Public key Identity data Validity period Certificate issuer Extensions . . . Digital signature Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 24/35
Encryption Signatures Bulk data Identity Summary References Ruby OpenSSL RDoc RFC5280 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile RFC4514 Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names Samolej, Rząsa, Rzońca, Sadolewski: Wprowadzenie do informatyki II – bezpieczeństwo systemów informatycznych, sieci komputerowe, systemy operacyjne i bazy danych, Oficyna Wyd. PRz., 2014. Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#4, Asymmetric Cryptography in Ruby 34/35