Två administratörer jämför hemligheten på skärmen, är överens om att den stämmer, och tunneln misslyckas ändå med autentiseringen. Strängen de jämförde är inte det värde som någon av ändarna matar in i nyckelhärledningen. Mellan tecknen du ser och de byte som protokollet hashar finns en fälttyp, en textkodning, en editor och ett urklipp, och vilken som helst av de fyra kan ändra indata utan att ändra utseendet. Jämför byten och avvikelsen dyker vanligtvis upp inom några sekunder.

Vad gatewayen gör med strängen

En i förväg fördelad nyckel skickas inte över nätet och jämförs. Varje ände matar in sin lokala kopia i nyckelhärledningen för IKE-utbytet, och de resulterande autentiseringsnyttolasterna verifieras eller inte. Den konstruktionen innebär att de två kopiorna måste vara byte-identiska snarare än visuellt lika, och det innebär också att felet rapporteras i autentiseringsfasen i stället för som ett meddelande om fel lösenord.

Så den användbara frågan är aldrig »ser dessa likadana ut« utan »vilken exakt bytsekvens hashar varje implementation«.

Varifrån extra byte kommer

En avslutande ny rad är den klassiska boven, och den gömmer sig i öppen dager eftersom de flesta editorer lägger till en osynligt när en fil sparas. Ett inledande eller avslutande mellanslag som klistrats in från ett chattfönster gör samma sak, och det gör också ett typografiskt citattecken som ersatts med ett rakt av ett ordbehandlingsprogram. Inget av detta ändrar den visuella jämförelse som en människa gör.

Jämför med ett verktyg som visar byte i stället för glyfer. printf '%s' "$PSK" | xxd | tail -2 skriver ut slutet av värdet i hex, där en vilsegången 0a eller 20 är uppenbar. Gör det i båda ändarna och jämför de två utskrifterna sida vid sida. Gör det på genererat testmaterial, inte på en produktionshemlighet som du sedan lämnar i skalhistoriken.

Kodat är inte krypterat

Konfigurationsexporter bär ofta hemligheten i en basinkodning, ibland med radbrytningar var sextionde eller sjuttiosjätte tecken och ibland med utfyllnad. Om den ena änden förväntar sig de avkodade byten och du klistrar in den kodade texten har du inte skickat ett annat lösenord, du har skickat ett mycket längre ett av utskrivbara tecken. Base64 ger ingen konfidentialitet alls, och det är också därför en kodad hemlighet aldrig får klistras in i ett forum för att få en andra åsikt.

Apples IPSec-ordbok är ett användbart exempel på att typen spelar roll: den dokumenterar SharedSecret som data för autentiseringsmetoden med delad hemlighet i L2TP- och Cisco IPsec-nyttolasterna. Det är en specifik egenskap i en specifik nyttolast, inte ett allmänt textfält som du kan återanvända för ett annat protokoll som råkar be om en hemlighet.

En påstådd gräns tillhör en kombination

Gamla rapporter om ett tak på trettiotvå tecken på en Apple-klient är riktiga rapporter om en klientversion, ett protokoll och en profilform. De är inte en universell gräns för varje Apple-plattform, varje leverantör och varje protokoll. Kontrollera versionen, nyttolasttypen och gatewaykravet tillsammans och testa sedan på en godkänd konfiguration i stället för att dra slutsatser från en tråd. Skriv den testade kombinationen i ändringsloggen, annars kommer nästa person att citera samma tråd med större säkerhet än den förtjänar.

Om en gräns verkligen gäller är svaret en inloggningsuppgiftsdesign som stöds och passar in i den, inte en förkortad version av en stark hemlighet. Att korta av en produktionsnyckel för att uppfylla en antagen gräns minskar dess styrka permanent och ger ett system vars dokumentation inte längre stämmer med dess säkerhet.

Rätta representationen, inte styrkan

När autentiseringen misslyckas efter att representationen bekräftats, läs den gällande policyn i autentiseringsfasen: vilken metod som förhandlas, vilken peer-identitet som förväntas och om gatewayen matchar den anslutning du tror. Gradvis svagare gissningar är inte diagnostik, de är en långsam nedgradering med en supportbiljett bifogad.

Om de nödvändiga inloggningsuppgifterna inte kan uppfylla organisationens standard ska du ändra designen till en som kan. En delad hemlighet med tillräcklig entropi, genererad en gång, lagrad i ett hanterat fält och aldrig publicerad, är ett helt bra svar; en kortare version av den är det inte.

Relaterade artiklar