Properties and on change events
You're not quite correct saying that IConnection has no ideas about protocol layer - in your defininition IConnection provides events about authentication process. So your code should have some connections between IConnection and protocol layer. I have no clue about entire relationships between layers in your application, but I can suggest some method:


provide function for calling events (like you suggested) 
implement IConnection in protocol layer 
realization of IConnection listens what happens in protocol layer (i.e. AssignAuthentificationService function)
implement IAuthentifiedConnection that knows about protocol layer