Een laptop sterft met drie geconfigureerde WireGuard-tunnels, en de configuratiebestanden staan nog op de schijf. Ze naar een vervangende machine kopiëren levert een dienst op die start en dan weigert om te komen. De bestanden zijn beschermd met een sleutel die toebehoort aan het account en de machine die ze hebben gemaakt, dus de bytes reizen en het vermogen om ze te lezen niet. De uitleg hieronder loopt van het vinden van het bestand tot de optie die de dienst echt herstelt.

Waar het tunnelbestand nu woont

De opslag is tussen releases verschoven. Oudere installaties hielden profielen in de lokale toepassingsgegevens van het systeemprofiel onder een map WireGuard\Configurations, en huidige builds gebruiken een gegevensmap binnen de programmabestandenboom. Elke tunnel is één bestand met een dubbele extensie die de bescherming benoemt:

Get-ChildItem "C:\Program Files\WireGuard\Data\Configurations"

Het achtervoegsel .dpapi is geen versiering. Het bestand is een beschermde blob, en de dienst is ontworpen om die precies in die vorm te gebruiken. De ondersteunde manier om er een tunnel uit te installeren is een verhoogde aanroep die naar de blob wijst:

$blob = "C:\Program Files\WireGuard\Data\Configurations\hq.conf.dpapi"
wireguard.exe /installtunnelservice $blob

Dat commando slaagt alleen in de context die de blob kan uitpakken. Het installeert een dienst; het ontsleutelt niets voor je.

Waarom de blob elders niet opengaat

De bescherming leidt haar sleutel af uit de inloggegevens van de gebruiker en, afhankelijk van de gekozen scope, uit de machine. De Microsoft-documentatie voor de beschermingsaanroep zegt dat de standaard toebehoort aan de gebruiker en de machine die hem hebben versleuteld, en een machinebrede optie verandert wie hem mag uitpakken. In beide gevallen leeft de sleutel in het inlogmateriaal van het besturingssysteem, niet in het bestand. De ciphertext is overdraagbaar; de sleutel niet.

Eigendom van de map overnemen verandert een ACL en niets anders. De oude schijf in een behuizing monteren en de blob naar een nieuwe pc kopiëren laat je achter met ciphertext waarvan de sleutel nooit is gekopieerd. De fout is cryptografisch, en geen enkele herinstallatie van de dienst verandert dat. De nieuwe machine heeft geen hoofdsleutel voor dat account, en het oude sleutelarchief reist niet mee met het bestand.

Producten die instellingen in een versluierd bestand opslaan, maken het contrast duidelijk. Een configuratie die alleen verduisterd is, wordt leesbaar zodra je de vlag vindt die de verduistering uitschakelt; een beschermde blob blijft gesloten zonder de sleutel. De twee verwarren laat mensen zoeken naar een decoder die niet bestaat.

Wat je kunt proberen terwijl het oude systeem nog boot

Als de installatie nog start, exporteer je de tunnels uit de client terwijl je bent aangemeld als het account dat ze heeft gemaakt. De export levert gewone configuratiebestanden op, en op dat punt wordt een back-up overdraagbaar.

Als de schijf leesbaar is maar Windows niet opstart, zijn de beschermde bestanden effectief verloren. Hulpmiddelen die beloven ze te herstellen draaien ofwel in de oorspronkelijke context die je niet meer hebt, ofwel vragen je de blob en je oude schijfkopie af te staan, wat een beslissing is waar je bij stil zou moeten staan.

Noteer wat je leert, in beide gevallen: de tunnelnamen, de eindpunten en de openbare sleutels. Namen en eindpunten laten je snel opnieuw opbouwen, en openbare sleutels laten de andere kant bepalen welk item verwijderd moet worden.

Bouw het in plaats daarvan op vanaf de kant van de peer

Voor een peer die je beheert, genereer je een nieuw sleutelpaar en voeg je de nieuwe openbare sleutel toe aan de lijst van de peer. Voor een zakelijk of gehost eindpunt vraag je de beheerder een nieuwe sleutel uit te geven en de oude te verwijderen. Dat verzoek is hetzelfde als wat je na een diefstal zou doen, omdat een verloren schijf betekent dat de oude privésleutel als blootgelegd moet worden behandeld.

Bouw daarna de tunnel opnieuw op uit de waarden die je hebt genoteerd, en bevestig de handshake voordat je iets anders verwijdert. Het oude item bij de peer zou in dezelfde wijziging moeten verdwijnen, zodat een gestolen schijf later niet opnieuw kan verbinden.

De les hoort in het back-upbeleid en niet in een herstelprogramma. Een WireGuard-configuratie is een inloggegeven: wie de privésleutel heeft, heeft de identiteit van de peer, en er zit geen tweede wachtwoord in de weg. Of je exporteert de configuratie bewust en bewaart die bij je andere geheimen, of je accepteert dat herstel het opnieuw uitgeven van sleutels betekent, en schrijft op welke keuze voor elke tunnel geldt.

Gerelateerde artikelen