diff --git a/encryption_demo/README.txt b/encryption_demo/README.txt new file mode 100644 index 0000000..5a639c6 --- /dev/null +++ b/encryption_demo/README.txt @@ -0,0 +1,9 @@ +1. This simply generates keys for alice bob and ken. +2. encrypt a simple message bob to alice. +3. include bob's signature +4. to send a larger message use AES. Generate a symmetric key using RSA keys +5. encrpyt using AES +6. alice decrypts +7. alice verifies it's from bob - which it should +8. alice verifies it's from ken - which isn't shouldn't. + diff --git a/encryption_demo/dec/message_dec.txt b/encryption_demo/dec/message_dec.txt new file mode 100644 index 0000000..5858951 --- /dev/null +++ b/encryption_demo/dec/message_dec.txt @@ -0,0 +1 @@ +Hello, Alice! This is a secure message from Bob. diff --git a/encryption_demo/dec/signature_dec.sig b/encryption_demo/dec/signature_dec.sig new file mode 100644 index 0000000..f478631 --- /dev/null +++ b/encryption_demo/dec/signature_dec.sig @@ -0,0 +1,3 @@ + M#}obڲzE)@SUf.:Z7Mss~RHeq)Roՙ4{!fր6u`eBVւ-cǰm53ChuQ^a7Y'.ʐ>>FM-nFR_c7^-`%C11cY2/9b,ހc`hf +bdeEɠW"rݚLcbwܴ3h x%{K +F$C( \ No newline at end of file diff --git a/encryption_demo/dec/symmetric_dec.key b/encryption_demo/dec/symmetric_dec.key new file mode 100644 index 0000000..2e5ff21 --- /dev/null +++ b/encryption_demo/dec/symmetric_dec.key @@ -0,0 +1 @@ +aJR0q9lCufbOArmSxaz2HrzN0lkKbhv3oUSXfcWzEeA= diff --git a/encryption_demo/enc/message_enc.txt b/encryption_demo/enc/message_enc.txt new file mode 100644 index 0000000..2187a14 --- /dev/null +++ b/encryption_demo/enc/message_enc.txt @@ -0,0 +1,2 @@ +Salted__  +~6yKaQ rk8tk9H5dU:!&+n <zz*R@$ҨeWH[~=̝ \ No newline at end of file diff --git a/encryption_demo/enc/signature_enc.txt b/encryption_demo/enc/signature_enc.txt new file mode 100644 index 0000000..0c56dee Binary files /dev/null and b/encryption_demo/enc/signature_enc.txt differ diff --git a/encryption_demo/enc/symmetric_enc.key b/encryption_demo/enc/symmetric_enc.key new file mode 100644 index 0000000..e1f739e Binary files /dev/null and b/encryption_demo/enc/symmetric_enc.key differ diff --git a/encryption_demo/keys/alice_private.pem b/encryption_demo/keys/alice_private.pem new file mode 100644 index 0000000..c65f7ee --- /dev/null +++ b/encryption_demo/keys/alice_private.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEApiRKC+kk4zPulhMuZ0HofmLg1/ohgENxa5qNIj2a/OdwN+0K +8ScKVMERZwIfjq6D7Foj6fH2v0g2MTt65/Pf2M6pYwnO6WfPWWAWYxiTpzdeIZxE +X+EsxjXH0PG30LxrZ8Cpw/OGLgDKVHFuxQLeId3MIX3RA1nEd4PdFx9Ts7z4BgtO +fxgV0pzmO4cqXmGs1Th4850olm5Zp9YIeaye6PoPAx3ZfPWeF7Hx+T9phZs1/D1l +NLTznRsstWzAv1SMVpjEksKeyhGmiu/E2Xh5pvkVMsjk3UAWdHvjLYtoUZ8HqFn4 +Ggzv1e1cBjGevFZG9Fz+X64fQW1y55PkykrMkQIDAQABAoIBAEdeH1CufeH7VOmy +o6RHc4+W+e7My8dFMVt/sFCdFg69fD8J3EFq+80cglU1XEj2PkUxE2xTPCM+6ciM +PGeXIvkHDUw10mQA69kApZ072XFjH1RgxB5Lo+ghAgyHSOapiZmv8TzzRxhLzp4n +e+W1LaZumFlqqnY+AV81jat5EYOLX+qPmqSJPZyfDAB+DeTpBlHRTIIyZlh3p7md +iFkGnaG1+T0GmeP7kkVeZaQ4hZTV66d8Pn75rTPH2gSlA3N0pevj1um7IaEYuF2j +lFhTbanEcu08UKvbd3+f1ojBpNKPdI0aIRG3WyZG31gvIHGraLW3t1Ed/hpeslFX +rKN3tIECgYEA0bsVxuuB6pOFNsAuGuecmthXHv1tBNLq15C1mmTAwkGkt04Ap2ac +mMXcW8SgR/WvngZoZoTVu1N4oQpdwHLlsPTy3UHZ2x9NaXSWnCxcJVtAvjRIhARn +D0nxVCUXtoUHbbRH7MGOnP3a3wA0gvuqFAUH6GJ6yJisVy259jOGFj0CgYEAystv +suWJyEGGCdbF+o7ulHjGA269xmbse1AvndFGcgCP81xc7sWe3+suT9WhJtL2SHhq +XWAjfgDXTs9eXkjeE3cXuoaBgSMR/izdQEil11cfTudf4QcBTMICLE8EDGem4vNt +gU7QaWrb8vTVhx8Qfyob3Dg5PPnTG29EPC6zCOUCgYEAkajpevndhNlnz5qxaqYp +MbHG8BL6QDtsNsKeHdiTt1Z324clFR5C7Cee3200FEYh7hJtN6ZR+oQCZ3YXnq0t +sTSt59TwRSr8TJ1YbKayaI9z66XMJ0QXf5rPLK2GRpElk599xIS5U3dLJ02xKrc2 +bCkCUPb0Z5UBPJrZaJBoM9ECgYAc7ETjC+/JuuamEpar9KS8UjlTlgDFAjrqH3ab +GJTmf4QIXnz2pQLSxtUVF8/jHKV5kosBBEwrlW0f1V2NLvFVb1/X/4UK6PiQ+s8X +cwUMIGXbuA4ppvkdfHIY5bAbINFhfvx4O8hnsJDsJtUpb1nH+TZ+AxrOwobEW+ss +djCcrQKBgQC/1wwl/kKdz3y0HaMZNh4Uj3nlhD8emOHGanTj/Wgx4jpbB9HN6RpX +2b34BXnGKCGpz39khEmZSm6/pSEAxEy1PXfno7LZ1s2Jki4W3i8IuGy+CEXkyyHj +/swwqzvahPHN+US6/VuIs5gY26eE79nqAJR6jCfa5uuZBMS3OXDWhw== +-----END RSA PRIVATE KEY----- diff --git a/encryption_demo/keys/alice_public.pem b/encryption_demo/keys/alice_public.pem new file mode 100644 index 0000000..e948532 --- /dev/null +++ b/encryption_demo/keys/alice_public.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApiRKC+kk4zPulhMuZ0Ho +fmLg1/ohgENxa5qNIj2a/OdwN+0K8ScKVMERZwIfjq6D7Foj6fH2v0g2MTt65/Pf +2M6pYwnO6WfPWWAWYxiTpzdeIZxEX+EsxjXH0PG30LxrZ8Cpw/OGLgDKVHFuxQLe +Id3MIX3RA1nEd4PdFx9Ts7z4BgtOfxgV0pzmO4cqXmGs1Th4850olm5Zp9YIeaye +6PoPAx3ZfPWeF7Hx+T9phZs1/D1lNLTznRsstWzAv1SMVpjEksKeyhGmiu/E2Xh5 +pvkVMsjk3UAWdHvjLYtoUZ8HqFn4Ggzv1e1cBjGevFZG9Fz+X64fQW1y55PkykrM +kQIDAQAB +-----END PUBLIC KEY----- diff --git a/encryption_demo/keys/bob_private.pem b/encryption_demo/keys/bob_private.pem new file mode 100644 index 0000000..644efd9 --- /dev/null +++ b/encryption_demo/keys/bob_private.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAuYWN3XjjpGmXZOZeqzGi6dmTJqGMlk/f7lo0f6VbL2VR5vMQ +tTA3Wzl4s1cE6Iic4O/SBrnT0AB1d9zGC0P1jvA+E+1IuPoSojqPyGgByagFNfMs +F7w04fvXrfJM5TB/FWczdCNIgtbWEAXaKESKE1mXMTMEjzECh5vJj7cXnd9EORhx +gvyokGz5Zn1cSoOfm6QMGXYSGNRiG9qKbqMPcOZJXXLcTvsifq9hMiphccTzq1pz +slC7I5zGqGxejyCF/w6w/6fIahe8sBLFBQB8bfmbYxelHYJq/3DIZCcE9IOndKJs +pjGhXrI7v9KDRAhDKbTJYtjTMFbG/el2upv++QIDAQABAoIBADEgJmLBAjalJ0u2 +nNbkO+mEjayrFpku6XMqO8CZPr4cLEXlk0UHUYE8hLOolUol8rS1jH3vcyEfHfvx +YBfXlQyWnTmVma4xugFvVGeS8vY9IbQZglF+qto0X/ZVtPrzjpNSUpOsTCUpUmHH +yu7ix1U8YgbLJaftKGhUXllJ+Fz7MAMDlJrCSmkWy/eDWUZzJ2e1T8KgYawsk6TN +l9BIZb+HrDps2MrrrpFUr4Yu/T/h0tT6dOIqB3ZTRagzYWTOs8bUawfQH7qiQm3n +xwT1cVZ8oHsrO9KzeeyiojxUrOZ3ihssteEn42GdR+Vd8Bs0CV6IzT1NBYZrFS7s ++PiGYwECgYEA8aoEZtTCqAo+lznqZCm6RCFPfLLfg8vkA9XkwhVn4V4gwuJyAXRc +wYpFatUVcMwnCrs0EpzEJt2L6z/Kqj3OrtA1S9uXUsOUeLH/6K4JUXQX2cpFkC1k +UmiWZZFuSHOMzHXETMNZaDNDRuQAhfpfN2Cg8JOdwpKbfWpMFMP64HECgYEAxIbw +/1inYgqpofSlXh+31aNjaHyf/hSN8q8Xb8+f7uhp1SoPWkCp3PEt+DWg2lvuafGx +0FT3vZpB5EwHFWkCaLrHyJ9e+X1L/YG22xb3T57Gt4oSvQTl8SvWH+zKAdHTiBSw +JJRAVR3aJi25TYyhdIsPITWDxz/ugtAYHiwZSwkCgYAdh3DSP90pO1c6k1EYvCCO +gqN70T+OkzNhZJl3PbZby2ylY5Yap2VOIN8qlq7wAYIjxYwvWgh910RpknnpI3RF +2BsrEcID0vIpbVafz+RDl7PyYMzvORyxFSaLcqHPKI9jzGAYISajnN/zoZiOxnEs +CxqfSupUBCYLxRlW0DuvgQKBgQCm7HrsV++sDaRxhGulW8l4c1PvHtOCKxE6TU/Z +z39nnA6wWQ47OWtN16iVB2/9qFIDuJ+wdUsLx2cqMw1dORkrvWIN3Jf9z1fpFfEr +fAFJpnHg2Sz7UZrBUtuHuEcIbqF+FxxZpXZTFY0CGpom7UkBxU9vhJXOelXq1Dd4 +ATrmiQKBgDINOIobPsGFOeCOCfAo3bYF3hvb4Krn23TbWdYjpthNF68InDwaLBnk +O5kGq1iGyihRBnszxvVkmQK6RqVUsuEkVk6xYyuLVXjzIbgPAHYVdkZB/86FyR/y +QvdUCeMaQ9XbMmYu/HFqM8qBHJdQ8f+dxkSM0LUVoVExtGEUdTr/ +-----END RSA PRIVATE KEY----- diff --git a/encryption_demo/keys/bob_public.pem b/encryption_demo/keys/bob_public.pem new file mode 100644 index 0000000..1b1bd46 --- /dev/null +++ b/encryption_demo/keys/bob_public.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuYWN3XjjpGmXZOZeqzGi +6dmTJqGMlk/f7lo0f6VbL2VR5vMQtTA3Wzl4s1cE6Iic4O/SBrnT0AB1d9zGC0P1 +jvA+E+1IuPoSojqPyGgByagFNfMsF7w04fvXrfJM5TB/FWczdCNIgtbWEAXaKESK +E1mXMTMEjzECh5vJj7cXnd9EORhxgvyokGz5Zn1cSoOfm6QMGXYSGNRiG9qKbqMP +cOZJXXLcTvsifq9hMiphccTzq1pzslC7I5zGqGxejyCF/w6w/6fIahe8sBLFBQB8 +bfmbYxelHYJq/3DIZCcE9IOndKJspjGhXrI7v9KDRAhDKbTJYtjTMFbG/el2upv+ ++QIDAQAB +-----END PUBLIC KEY----- diff --git a/encryption_demo/keys/ken_private.pem b/encryption_demo/keys/ken_private.pem new file mode 100644 index 0000000..c1a5564 --- /dev/null +++ b/encryption_demo/keys/ken_private.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAupa+Byv9x5Pc1esF0c39YZUvqHQ4mdElJ357u7MoqsWnMwwp +W5n/ZnhPDh+aumEGrNpaPEGX2ziWwWf8NZIqBbzx2Dy6G/i9LcFYD5s0fJnlHb5X +wqoge7SSQtByLY7pffcYIDiGuLNnM8cW/9crnS7WBxbPQiVYGH3n4HJRTtPrs3Yj +O7Q6xXd3vA6/b92bkzX/YoEJkP/b0/9YqqoDTKrZgWNgQI33QQkEe4FpH2NHNHin +srT2/HlUt77J8xrHpQvmo9+FzqhW8qurmVdfkQkYDgdcaTFu2X5Um5RuUZOlBqxi +xkYwzgU0JWe/aCbS93c849XIZkeyatBG4kolGQIDAQABAoIBAEnzMIE7KCuPKLkH +mpjaYQ/pxqem2D/uKiGK+ZMcoIN+LpQGv+V0FUsRZ5ObZwFzLugW6ihzfrH9rZId +mlHJCiqYBenDt6caYC/gLvyQcK7pd2rgY3vdXV5p5IXigz4XI+cupTsv7AUL5V0a +DL19E+YKB/1rRt1aW53pWJsV86+flKMGnU3vM7fwpREnhIzWBl5ulzgOB5KrRH1/ +0CDPvLlF/TUaYaEP4l0qsyTu+o0JRyD5jlnOxEsiKLUYHiNZrVrrMeI0CJSvM+KB +wqf3ViJDoxB5x7X0Bx9zF1gF4bky8dNsshICjBXC0x4bVg3taUEDASCi6qGqEM+B +6BxAsWECgYEA5IPpc9bzmwCnmveSqK2/ICaX5cd7MtG6wXm2M4ygHxs2a6Js+hbv +xaOwlbJrVcd9Fzbkqm68MQpBj/2W4WZROuxZTiY/phjTqqni4OBF1Ow3lIIFVIDD +ZONRxPMXYNhGH0Oq6hroL3QYRsiXW0Xdrci6iuPNFxarfJfwc+BVtvUCgYEA0Qfl +dv34DsaQEHlgTEDSgAhLLMx3zDbLmzjpCGkVaGRI+qnDiOub1YJ8uDJY4nokALLs +ApgSauW3SX63TRswUjrj3iivrNif5fbsf6R9Pz/Q9/H9VmxskdJvHu8Qra63P2fp +TzVEM4j4GGJ8kvUNSbRr5PWRAin5G7quO4n1txUCgYBA+ERCnCWstzXv+F2pOaTy +diaPvPSJEVogsgMciunnjiwd1BNZ03WeYpjNJuoffFVTaVcAIfW9l6XmU3o3YYjM +0O/fKT7FcZ+UkTKhLwKLtBFlVsY/LVDgeUUBUwAdl7/wGaQZZUcIXuCcF2H5IFcT +ltN6s6PW4aomBWjm+SxFlQKBgEhrxfKuFy13Wh57DwQcSVIWjYUd6juUmIJU+1fw +oHwkkqxV+OsNRlZ4+SEQQH9m9eZQFzjm2yqyIAiUoIlUbC9xO9WSnxrxiqSwIkwu +/z3UrF/bNXyl4A+9qsY66bpjGBYduFW7DMAWKm64YJTB1jK9Ecynz+/B/w6+ZPM3 +3yvpAoGAL8F09ao837EmCdzL60+/AVP4wBX7hYpuOOPFvBxve6dhQ3SV/mTRsa+x +NKxR7d/QWjSmIyMmY3+nEWjXPSEwmDvpllpdCxvjIfq4VCj2rhokv7imv11JBb9m +X1CVYLa2eJBCG9ZLHH8YUVuFKQixxgRObx7JI/WGj+erhJOpdbw= +-----END RSA PRIVATE KEY----- diff --git a/encryption_demo/keys/ken_public.pem b/encryption_demo/keys/ken_public.pem new file mode 100644 index 0000000..0dbdb9e --- /dev/null +++ b/encryption_demo/keys/ken_public.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAupa+Byv9x5Pc1esF0c39 +YZUvqHQ4mdElJ357u7MoqsWnMwwpW5n/ZnhPDh+aumEGrNpaPEGX2ziWwWf8NZIq +Bbzx2Dy6G/i9LcFYD5s0fJnlHb5Xwqoge7SSQtByLY7pffcYIDiGuLNnM8cW/9cr +nS7WBxbPQiVYGH3n4HJRTtPrs3YjO7Q6xXd3vA6/b92bkzX/YoEJkP/b0/9YqqoD +TKrZgWNgQI33QQkEe4FpH2NHNHinsrT2/HlUt77J8xrHpQvmo9+FzqhW8qurmVdf +kQkYDgdcaTFu2X5Um5RuUZOlBqxixkYwzgU0JWe/aCbS93c849XIZkeyatBG4kol +GQIDAQAB +-----END PUBLIC KEY----- diff --git a/encryption_demo/msg/message.sig b/encryption_demo/msg/message.sig new file mode 100644 index 0000000..f478631 --- /dev/null +++ b/encryption_demo/msg/message.sig @@ -0,0 +1,3 @@ + M#}obڲzE)@SUf.:Z7Mss~RHeq)Roՙ4{!fր6u`eBVւ-cǰm53ChuQ^a7Y'.ʐ>>FM-nFR_c7^-`%C11cY2/9b,ހc`hf +bdeEɠW"rݚLcbwܴ3h x%{K +F$C( \ No newline at end of file diff --git a/encryption_demo/msg/message.txt b/encryption_demo/msg/message.txt new file mode 100644 index 0000000..5858951 --- /dev/null +++ b/encryption_demo/msg/message.txt @@ -0,0 +1 @@ +Hello, Alice! This is a secure message from Bob. diff --git a/encryption_demo/msg/symmetric.key b/encryption_demo/msg/symmetric.key new file mode 100644 index 0000000..2e5ff21 --- /dev/null +++ b/encryption_demo/msg/symmetric.key @@ -0,0 +1 @@ +aJR0q9lCufbOArmSxaz2HrzN0lkKbhv3oUSXfcWzEeA= diff --git a/encryption_demo/test.bash b/encryption_demo/test.bash new file mode 100755 index 0000000..9eaec22 --- /dev/null +++ b/encryption_demo/test.bash @@ -0,0 +1,53 @@ +#!/bin/bash + +# Generate RSA key pairs for Alice, Bob, and Ken +echo "Generate keys" +openssl genrsa -out keys/alice_private.pem 2048 +openssl rsa -in keys/alice_private.pem -pubout -out keys/alice_public.pem + +openssl genrsa -out keys/bob_private.pem 2048 +openssl rsa -in keys/bob_private.pem -pubout -out keys/bob_public.pem + +openssl genrsa -out keys/ken_private.pem 2048 +openssl rsa -in keys/ken_private.pem -pubout -out keys/ken_public.pem + +# Create a simple message file +echo "Hello, Alice! This is a secure message from Bob." > msg/message.txt + +echo "Signing" +# Bob signs the message +openssl dgst -sha256 -sign keys/bob_private.pem -out msg/message.sig msg/message.txt + +echo "Encrypt" +# Generate a symmetric AES key +openssl rand -base64 32 > msg/symmetric.key + +# Encrypt the message and the signature with the symmetric key +openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -in msg/message.txt -out enc/message_enc.txt -pass file:msg/symmetric.key +openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -in msg/message.sig -out enc/signature_enc.txt -pass file:msg/symmetric.key + +# Encrypt the symmetric key with Alice's public RSA key +openssl rsautl -encrypt -inkey keys/alice_public.pem -pubin -in msg/symmetric.key -out enc/symmetric_enc.key + +echo "Decrypt" +# Alice decrypts the symmetric key with her private RSA key +openssl rsautl -decrypt -inkey keys/alice_private.pem -in enc/symmetric_enc.key -out dec/symmetric_dec.key + +# Alice decrypts the message and the signature with the symmetric key +openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -in enc/message_enc.txt -out dec/message_dec.txt -pass file:dec/symmetric_dec.key +openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -in enc/signature_enc.txt -out dec/signature_dec.sig -pass file:dec/symmetric_dec.key + +echo "Verify" +# Alice verifies the signature from Bob +if openssl dgst -sha256 -verify keys/bob_public.pem -signature dec/signature_dec.sig dec/message_dec.txt; then + echo "Signature verification successful: The message is from Bob." +else + echo "Signature verification failed: The message is not from Bob." +fi + +# Attempt to verify the message as if it came from Ken +if openssl dgst -sha256 -verify keys/ken_public.pem -signature dec/signature_dec.sig dec/message_dec.txt; then + echo "Signature verification false positive: The message is from Ken." +else + echo "Signature verification correctly failed: The message is not from Ken." +fi