Kaksi profiilia mitataan samalla yhdyskäytävällä, toinen salattuna ja toinen ilman, eikä salattu ole hitaampi. Joskus se on nopeampi, mikä yleensä synnyttää pitkän väittelyn siitä, tehtiinkö testi oikein. Tulos on uskottava, koska paketin hinta ei ole konfiguraation salaustermien määrä. Se on joukko toimintoja, joita toteutus suorittaa, sillä laitteistolla joka sillä on, valitsemallaan puskuriasettelulla.

Oire: hidas ei ole salattu profiili

Oletetaan, että historiallinen testi vertaa AEAD-salausta tilaan „ilman salausta“, joka silti laskee erillisen todennuskoodin joka paketille. Toinen profiili piilottaa hyötykuorman sisällön mutta säilyttää pakettikohtaisen tiivisteen, ja suorittimella, jolla ei ole kiihdytystä sille tiivisteelle, se voi maksaa enemmän kuin yhdennetty rakenne, jonka se oli tarkoitus voittaa.

Konfiguraation merkintä sanoo „salaus“, ja merkintä on kaikki, mitä useimmat vertailut katsovat. Paketin polku sanoo jotain muuta: toinen profiili tekee yhdistetyn toiminnon, johon suorittimella on käskyt, ja toinen erillisen, johon ei ole. Pelkän konfiguraatiotiedoston lukeminen ei koskaan paljasta tätä eroa, koska molemmat merkinnät näyttävät yhdeltä riviltä. Vain neuvoteltu tila ja sen takana oleva koodipolku selittävät tuloksen.

Siinä koko selitys, eikä se vaadi väitettä siitä, mikä primitiivi on yleisesti nopeampi. Molemmat voivat olla nopeita, molemmat hitaita, ja järjestys riippuu koneesta ja koodista.

Laske toimintoja, älä merkintöjä

AEAD-rakenne, sellaisena kuin RFC 5116 sen kuvaa, antaa toteutukselle yhden rajapinnan, joka palauttaa salatekstin ja tagin yhdessä. AES-GCM on yksi esimerkki: laskuritilassa tehty salaus yhdistettynä Galois-todentajaan. Rajapinta ei tee eheydestä ilmaista; se tekee yhdistelmästä hyvin määritellyn, ja juuri se antaa toteutukselle mahdollisuuden optimoida pari yhtenä yksikkönä.

Separate authentication path:
  payload -> independent HMAC -> framed packet

AEAD path:
  payload -> authenticated encryption with tag -> framed packet

Nämä ovat käsittelyluonnoksia, eivät konfiguraatio-ohjeita. Ensimmäisessä ei ole luottamuksellisuutta, mutta se kuluttaa silti suoritinta todennukseen, ja juuri siksi „kytke salaus pois“ ei ole synonyymi sanoille „kytke salaustyö pois“.

Toinen voi olla halvempi, koska suorittimet tarjoavat käskyt molemmille puoliskoille: AES-kierrokset ja Galois’n kunnan käyttämä siirtovapaa kertolasku. Kirjastot käsittelevät myös riippumattomia puskureita rinnakkain, mikä pitää käskyt kiireisinä muistia odottamisen sijaan.

Mitä neuvoteltu tila todella mahdollistaa

Community OpenVPN:ssä AEAD-datasalaus tarkoittaa, että auth-asetus ei enää tuota omaa erillistä datakanavan HMAC:ia. Salausasetuksen viite kuvaa tämän laajuuden, ja juuri siksi kaksi tekstitedostossa samanlaiselta näyttävää konfiguraatiota voivat erota pakettikohtaisessa työssä.

Lue neuvoteltu tila, älä toivelistaa. Sallittujen salausten luettelo ja TLS-sarjan nimi eivät kerro, mitä toimintoja hyötykuormalle ajetaan, eikä vanha cipher-rivi välttämättä kuvaa, mitä nykyinen yhteys valitsi.

openvpn --show-ciphers | head -20
sudo grep -E 'cipher|auth' /etc/openvpn/server.conf

Ensimmäinen komento luettelee salaukset, joita binääri tukee, eli kykyjen luettelo eikä neuvoteltu tulos. Toinen näyttää, mitä palvelin todella pyytää. Yhteysloki on paikka, jossa lopullinen valinta vahvistetaan, koska asiakas voi pudota johonkin, jonka palvelin sallii mutta jota kukaan ei tarkoittanut.

Mittaa sitä kuormaa, jota todella ajat

Salauksen mikrosuorituskykymittaus mittaa primitiiviä sen omissa olosuhteissa. VPN-siirto myös kopioi puskureita, aikatauluttaa säikeitä tai keskeytyksiä, tarkistaa käytäntöä ja ylittää verkon. Ne osat hallitsevat usein, minkä vuoksi nopeampi primitiivi ei aina tuota nopeampaa tunnelia.

openssl speed -evp aes-256-gcm
openssl speed -evp sha1

Nämä kaksi komentoa antavat karkean paikallisen vertailun primitiiveistä edessäsi olevalla koneella, ja ne ovat rehellisiä siitä, että ovat mikromittauksia. Ne eivät kerro mitään tunnelisi läpäisystä, eikä niitä pitäisi koskaan siteerata sellaisena.

Mittaa sitten sitä kuormaa, jolla on merkitystä, pitäen kaikki muu vakiona: sama päätepiste, samat pakettikoot, sama siirtotie, sama pakkauskäytäntö. Jos profiilin muutos muutti myös siirtotietä tai käsittelypaikkaa, tulos kuvaa sitä nippua eikä salausta.

Pidä myös tavoite näkyvissä. Datapolku, jolla on ylimääräistä salauskapasiteettia, voi silti olla viiveen rajoittama, koska sovellus odottaa edestakaisia matkoja, eikä bulkkikapasiteetin kasvu korjaa puheliasta protokollaa. Mittaa tuettua ja käytännön hyväksymää konfiguraatiota kokonaisuutena ja kohtele väitettä „vähemmän laatikoita on oltava nopeampi“ juuri sellaisena hypoteesina kuin se on. Hyödyllinen kysymys ei ole, maksaako salaus jotain, vaan näkyykö kustannus siinä mittauksessa, jolla on sinulle todella merkitystä.

Aiheeseen liittyvät artikkelit