iOS ne laisse pas une app inventer son propre VPN. Il offre deux portes, toutes deux dans le framework Network Extension d'Apple : le client VPN intégré au système, qui parle IKEv2 et IPSec, et les fournisseurs de tunnel de paquets, des extensions qu'une app embarque pour transporter d'autres protocoles. SSHive utilise les deux. Un profil IKEv2 ou IPSec est confié au client du système, avec son mot de passe rangé sous forme de référence du Trousseau qu'iOS lit au moment de se connecter. Un profil OpenVPN tourne dans l'extension de tunnel propre à SSHive, un processus séparé qu'iOS lance et gère.
C'est pour cela que le VPN est un vrai VPN : iOS y fait passer le trafic au niveau du système, il apparaît dans les réglages VPN d'iOS, et il tourne indépendamment de la fenêtre de SSHive. C'est aussi pour cela que SSHive prend soin de le couper. Un VPN monté pour une session est fermé à la fin de cette session, et si vous quittez l'app pendant une session de bureau à distance qui a monté un VPN, SSHive arrête les deux, pour qu'aucun tunnel ne reste connecté à votre insu.
La séquence en astreinte : l'alerte arrive, vous ouvrez le profil SSH enregistré. SSHive vérifie si le serveur répond sur le réseau actuel ; depuis chez vous, ce n'est pas le cas, donc le VPN monte, puis la session SSH s'ouvre à travers lui. Vous enquêtez, fermez la session, et le VPN tombe avec elle.
Quant aux secrets, le mot de passe du VPN et la clé partagée IPSec sont rangés dans le Trousseau iOS, où le système peut s'en servir sans les montrer à personne. Le fichier .ovpn lui-même est conservé dans les données de l'app, sur l'appareil. Aucun profil de configuration .mobileconfig n'est installé sur l'iPhone.