Поставете частно мобилно приложение зад VPN и разумен човек ще попита дали то все още се нуждае от закрепване на сертификата. Въпросът звучи като избор между две равностойни мерки за контрол, а всъщност е въпрос за две различни порти. VPN решава дали това устройство изобщо може да използва пътя; приложението решава дали сървърът, който е достигнало, е този, който е очаквало. Отговорете на двата въпроса поотделно и дизайнът става по-прост.

Две порти, два въпроса

Допускът до мрежата е за клиента: това устройство регистрирано ли е, валидни ли са данните му за достъп и позволява ли политиката да го пусне по този път? Доверието на приложението е за сървъра: връзката достигна ли услуга с идентичност, която приложението приема? Тези отговори идват от различни системи, провалят се по различни причини и се поправят от различни екипи. VPN ръкостискането може да успее, докато приложението говори с изтекъл сертификат зад партньора. Безупречно закрепено приложение може да остане недостъпно за никого, защото устройството така и не е влязло в мрежата.

Двете се допълват. Премахването на което и да е отнема мярка за контрол; добавянето на едното не заменя другото.

Какво всъщност ограничава закрепването

Закрепването стеснява множеството от идентичности на сървъра, които приложението ще приеме, обикновено като назовава публичен ключ или хеш на сертификат, вместо да се доверява на всяка верига, за която някое хранилище би поръчителствало. Това е ограничение, наложено върху обичайната проверка, а не нейна замяна. Обичайната проверка отговаря дали една верига изобщо е надеждна; закрепването отговаря дали това е веригата, която приложението очаква. Реализация, която прескача първата стъпка, не е спечелила сигурност, а само новост.

Обектът, който се закрепва, се различава между платформите, затова самата дума ви казва много малко. Копирането на хеш от хранилището за доверие на един продукт и третирането му като същото нещо в мобилно приложение е честа и тиха грешка.

Закрепването на платформа е конфигурация, а не политика

Android предоставя закрепване чрез конфигурацията си за мрежова сигурност, където наборът за закрепване съдържа отпечатъци на публичен ключ и веригата трябва да съдържа поне един от тях. Този файл е за всяко приложение и изисква съзнателна промяна в билда. iOS няма еквивалентен механизъм за манифест, затова закрепването там живее в собствения код за оценка на доверието на приложението.

Тъй като механизмът се различава, изискването трябва да се пише за всяка платформа. Политика, която казва „закрепете сертификата“, без да назовава платформата, не е изпълнима.

Ротацията решава дали закрепването ще оцелее

Трудната част не е първото издание, а подновяването на сертификата след него. Строга политика за доверие отхвърля законен нов ключ точно толкова твърдо, колкото и ключ на нападател.

Два механизма правят ротацията поносима: резервно закрепване, на което се доверяваме още преди да потрябва, и дата на изтичане на набора за закрепване, за да отпадне прилагането, вместо да блокира приложението. И двете са политически решения, а изтичането в частност е съзнателно намаляване на сигурността, а не безобиден таймер. Назовете кой контролира билда на приложението, крайната точка на TLS и подновяването на сертификата, и ги съберете в един процес на промяна. Ако това са три различни екипа, закрепването рано или късно ще предизвика прекъсване, което никой не е планирал.

Загубеното устройство е трети проблем

Отнемането на VPN данни за достъп не прекратява непременно сесия на приложението, а закрепването на сървъра не прави абсолютно нищо за телефон в чужда ръка. Заключването на устройството, съхранението на данните за достъп, продължителността на сесията и отдалеченото отнемане са отделни решения с отделни собственици. Сгъването им в обсъждането на закрепването гарантира, че никое от тях няма да бъде проектирано.

Тествайте четири връзки вместо едната, която виждате: предвидения сървър и операция, акаунт, който трябва да бъде отказан, идентичност на сървър, която трябва да бъде отхвърлена, и планираната ротация. Работещият VPN упражнява само първата. Запишете какво е доказал всеки тест, защото следващият човек ще приеме, че зелен тунел означава, че и четирите са минали.

Подобни статии