> Both of you generate public/private key pairs
> Both of you spam your public keys to the world (including each other)
>> You might meet offline once, to make sure the public keys you gave each other were indeed yours (and not a MITM's sending theirs to both of you while suppressing your actual messages to each other)
>>> This is probably where your actual question's parameters would come into play, but it only needs to happen once
> You encrypt (using a good cipher) some message into a binary blob with your friend's public key and send the encrypted message
>> Only your friend can decrypt this, using their private key which only they have
> Your friend encrypts their reply with your public key and sends the encrypted message to you
>> Only you can decrypt this, using your private key which only you have
E2EE.