encryption demo

This commit is contained in:
Rick Sprague 2024-08-26 21:21:46 -04:00
parent a1542abc50
commit 5f865513f7
17 changed files with 182 additions and 0 deletions

View File

@ -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.

View File

@ -0,0 +1 @@
Hello, Alice! This is a secure message from Bob.

View File

@ -0,0 +1,3 @@
M#áÏ}ob€‰Ú²äz˜)õ@SUf.£:Z×ßÿ7òÈ“Msãs~²¼RÐHeq)ùð§RoÕ™¹4{!úfÕÖ€6u`eâB·õœVÖè-c®ìǰèm53C¾huQÞ^ç„aœ7Y'.Ê<>Æ>ú>”FM-µnFR_¥“Êåc7^š¬-`×÷%CÛ1©š1cð™Y2/½«9bé,Þ€¸øªcÝ`¾òÊhf
bdeúEáŽÉ ß<13>ŠWã"rÝšLcÜbwÜ´§Çè³ï½¤3hÕ †x%{äïÊK†Ò
FèæÀ$¹„C<E2809E>(

View File

@ -0,0 +1 @@
aJR0q9lCufbOArmSxaz2HrzN0lkKbhv3oUSXfcWzEeA=

View File

@ -0,0 +1,2 @@
Salted__ 
öž~·Œ6yK½aQ rÙkÊ8tk9H5dŠU³:!ÜŠÃ&â+n š<¯èzz*ºR@$Ò¨ˆeWâŒH[~ýÅ=Ì<>

Binary file not shown.

Binary file not shown.

View File

@ -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-----

View File

@ -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-----

View File

@ -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-----

View File

@ -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-----

View File

@ -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-----

View File

@ -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-----

View File

@ -0,0 +1,3 @@
M#áÏ}ob€‰Ú²äz˜)õ@SUf.£:Z×ßÿ7òÈ“Msãs~²¼RÐHeq)ùð§RoÕ™¹4{!úfÕÖ€6u`eâB·õœVÖè-c®ìǰèm53C¾huQÞ^ç„aœ7Y'.Ê<>Æ>ú>”FM-µnFR_¥“Êåc7^š¬-`×÷%CÛ1©š1cð™Y2/½«9bé,Þ€¸øªcÝ`¾òÊhf
bdeúEáŽÉ ß<13>ŠWã"rÝšLcÜbwÜ´§Çè³ï½¤3hÕ †x%{äïÊK†Ò
FèæÀ$¹„C<E2809E>(

View File

@ -0,0 +1 @@
Hello, Alice! This is a secure message from Bob.

View File

@ -0,0 +1 @@
aJR0q9lCufbOArmSxaz2HrzN0lkKbhv3oUSXfcWzEeA=

53
encryption_demo/test.bash Executable file
View File

@ -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