At first glance there's stuff I like and dislike about this, but the strongest thing is probably separating out how the messages move around from how the keys move around.
Moving encrypted blobs around is easy, as long as you don't care about traffic analysis. Handling keys is a bit harder. Separating those makes sense.
Moving encrypted blobs around is easy, as long as you don't care about traffic analysis. Handling keys is a bit harder. Separating those makes sense.