Obie strony mówią AES-128, a tunel nadal odmawia zestawienia. CBC i GCM to różne transformacje, które przypadkowo mają tę samą długość klucza, a klient oferujący jedną nie zadowala bramy, która akceptuje tylko drugą. Słowo AES opisuje rodzinę, nie porozumienie.

Istnieje też druga oś i to ona generuje mylące błędy.

Dwie warstwy, dwie niezależne listy

IKE chroni samo negocjowanie, a skojarzenie podrzędne chroni ruch, na którym naprawdę ci zależy. Windows udostępnia pierwsze jako metodę szyfrowania i metodę integralności, a drugie jako stałe transformacji szyfru i uwierzytelniania. Te pola nie są swoimi aliasami, a wartość prawidłowa w jednym może być bez znaczenia lub błędna w drugim. Czytanie profilu z tym podziałem w pamięci usuwa większość zamieszania.

Praktyczną konsekwencją jest to, że możesz mieć całkowicie akceptowalną politykę wymiany kluczy i politykę kanału danych, której druga strona nie zaakceptuje. Jedna lista negocjuje, druga chroni pakiety. Zmiana wartości w pierwszej nie wpływa na drugą, choćby obie wyglądały podobnie w oknie konfiguracji.

Zapisz obie listy, zanim porównasz je z bramą. Porównanie z pamięci to sposób, w jaki jedno pole jest edytowane dwa razy, a drugie nigdy. Trzymaj konsolę bramy otwartą obok profilu.

Przeczytaj błąd obok propozycji

Nieudany etap wskazuje, którą listę sprawdzić. Odmowa podczas wstępnej wymiany kluczy to problem propozycji IKE, i następuje, zanim istnieje jakiekolwiek skojarzenie podrzędne. Niepowodzenie podczas negocjowania skojarzenia chronionego ruchu to problem propozycji ESP, a wymiana kluczy już się powiodła. Ogólny komunikat o zgodności polityki od klienta nie nazywa żadnego z etapów, dlatego przydatny jest widok samej bramy.

swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 60 --no-pager

Porównaj propozycję otrzymaną, propozycję skonfigurowaną i tę wybraną dla tej jednej próby. Znaczenie mają tu trzy różne listy, a tylko ostatnia opisuje, co faktycznie wykorzystano. Zacytuj ją w zgłoszeniu dosłownie, zamiast streszczać.

Trzymaj CBC i GCM jako osobne alternatywy

Brama, której celowo wolno akceptować dowolną z rodzin, potrzebuje dwóch propozycji, a nie jednej. W strongSwan przecinek rozdziela alternatywy, a łącznik łączy składniki jednego zestawu. Połączenie obu rodzin łącznikami daje jedną niemożliwą propozycję zamiast dwóch akceptowalnych.

proposals = aes128gcm16-prfsha256-ecp256, aes128-sha256-ecp256
esp_proposals = aes128gcm16-ecp256

Pierwsza alternatywa niesie szyfrowanie uwierzytelnione i nadal wymienia funkcję pseudolosową, ponieważ wyprowadzanie klucza jej potrzebuje, nawet gdy integralność pochodzi z szyfru. Druga alternatywa to klasyczne szyfrowanie z osobnym algorytmem integralności. Obie nadal zależą od tego, co obsługuje załadowana implementacja kryptografii.

Propozycja ESP to nie przemianowana propozycja IKE

Token szyfru wygląda identycznie na obu listach, a prawie nic więcej nie jest przenoszone. Propozycja ESP nie ma funkcji pseudolosowej wymiany kluczy, a jej wymagania dotyczące integralności i poufności w przyszłości są uzasadniane wobec polityki Windows po drugiej stronie, zamiast kopiowane z wiersza IKE. Mechaniczne przetłumaczenie jednej listy na drugą daje coś, co przechodzi walidację i nigdy nie negocjuje.

Wybierz kierunek i się go trzymaj. Albo brama utrzymuje politykę tylko GCM i klient wdraża pełną zgodną politykę, albo brama akceptuje obie rodziny i klient zachowuje swój dotychczasowy zestaw. Włączanie mechanizmu rezerwowego, którego polityka bezpieczeństwa zabrania, nie jest poprawką, choćby szybko usuwało błąd.

Sprawdź oba zestawy, potem odnowienie klucza

Potwierdź osobno wybrany zestaw wymiany kluczy i wybrany zestaw ruchu, ponieważ pochodzą z różnych list i mogą się powieść niezależnie. Następnie pozwól, by nastąpiło odnowienie klucza, i też je potwierdź. Działający pierwszy uścisk dłoni i nieudane odnowienie klucza opisują zestaw propozycji, który jest tylko częściowo akceptowalny.

Zachowaj ten dowód razem ze zmianą. Powtarzające się rozłączenie wymaga własnego zapisu nieudanej wymiany, zanim ktoś obwini timer lub defekt platformy.

Powiązane artykuły