Given an insecure channel, what are the pros and cons of using Diffie Hellman to generate a symmetric shared key and then send encrypted data with this key, or simply use Shamir's three-pass protocol with symmetric ciphers for Alice and Bob to each supply parts of the key to one another?
Though the general idea of a three pass exchange has merit, when implemented using exponentiation over a finite field it doesn't have much advantages over the far more common Diffi Hellman.
Both get their security from the hardness of descrete logarithm. (Though we don't know to reduce Dlog to either).
Obviously a three pass protocol requires more message passing and requires them sequentially. Also in it's simple form only one party affects the final key which could be seen as a disadvantage over a symmetric protocol.
So DH is symmetrical, has fewer messages which don't rely on each other and is more widely adapted and better studied.
If you are not looking at is a key exchange but as a means to send a message the three pass can be apppied to the message directly or the message could be encrypted and sent along with the first message. While with DH you can only send content after the exchange is complete. So the number of messages required for the initiator to send content ia the same 3 messages.
With DH a third party can hold half keys which can be given someone to establish a secure connection. This allows for asynchronous protocols to work well with DH. Won't work with a three pass protocol.