Alice, Bob and Asymmetric Cryptography

By | May 4, 2021

I suppose a lot of people know about Alice and Bob, the characters of many cryptographic tales. Previously I posted article “Encrypt and Decrypt Data on Linux Devices using OpenSSL” which explains how encrypt and decrypt files in symmetric way, currently I want to do the same using asymmetric cryptography, exactly how Alice and Bob suggest.
In the first step Alice generates on her computer private key file (privatekey.pem):


Alice # openssl genpkey -algorithm RSA -out privatekey.pem
……………………………………………….+++++
…………………..+++++


It is possible to view all components of privatekey.pem file using this openssl command:


Alice # openssl rsa -in privatekey.pem -text -noout | head -n 10
RSA Private-Key: (2048 bit, 2 primes)
modulus:
   00:b8:e9:d2:7a:d9:8f:92:90:2e:f5:24:11:08:bd:
   d5:2a:38:5b:b3:95:db:c3:75:f1:b3:6d:63:22:36:
   ab:30:1c:12:3a:82:a9:0a:26:8a:e7:b3:b6:9a:55:
   8c:70:81:1d:1a:72:1e:f5:e7:b3:0e:57:da:f0:28:
   98:fe:9e:c7:35:18:cc:ce:cc:d5:74:af:8c:0b:39:
   0a:50:00:66:93:77:ad:8a:65:3e:5b:8a:c4:d3:ff:
   c8:70:01:2a:b8:c1:41:5c:bf:ae:8d:70:70:51:d2:
   61:2d:99:38:db:c1:e2:96:83:b8:5b:39:69:79:72:

Then she writes a message and encrypts it:


Alice # echo "I love you!" > a.txt
Alice # openssl rsautl -sign -inkey privatekey.pem -in a.txt -out a.enc

She also extracts public key (publickey.pem) from private key file (privatekey.pem):


Alice # openssl rsa -in privatekey.pem -pubout -out publickey.pem
writing RSA key

Using “openssl rsa -pubin -in publickey.pem -text -noout” command it is possible to see content of public key file, the file is shorter than privatekey.pem and actually publickey.pem is part of privatekey.pem file.
Now she sends encrypted file a.enc and public key file publickey.pem to Bob.


Bob # cat a.enc
%?6<;UX?5i?Ҳ?c??C???#u?bA?d??0;?P???n??5??/Ǻ??????vS?_Ah?kB??n???nƔ?X???V?F?q ?}gC???Bͤ?r?,|???^D$?$??W??R4??Dɔ??SQz????)?̩??QO(?g??CA?f?sMYԣR ?{??lU?0b?pIB\ty?AZ:v,?{#(?͌?T8

Using publickey.pem Bob can decrypt encrypted message from Alice:


Bob # openssl rsautl -verify -pubin -inkey publickey.pem -in a.enc
I love you!

By the way using Alice’s public key Bob also can reply to Alice in encrypted way:


Bob # echo "I love you too" > b.txt
Bob # openssl rsautl -encrypt -inkey publickey.pem -pubin -in b.txt -out b.enc

Alice receives encrypted file b.enc from Bob:


Alice # cat b.enc
?/a!ќ?Xo%Z??+)??-e?
\?T|MsH?313?Z?D???a?A?Y&?//?=@?M??oq?ѷ=)??d?$:5??b??=t
?{???/f?X3?????!??Hrh2??߃V?_<²??#W5??3ƮJ@f???m??7p3'???1~? Hނ?XҸrG??b*?????xR%5ܻ]\:~*???c)?Y?]???]扗

and decrypts it using private key:


Alice # openssl rsautl -decrypt -inkey privatekey.pem -in b.enc
I love you too

The end of this cryptographic fairy tale.

Leave a Reply

Your email address will not be published. Required fields are marked *