Jak wykonać przypinanie SSL w aplikacjach na iOS

Opublikowany: 2020-02-24

W chwili, gdy ludzie wychodzą z domów, wyruszają na poszukiwanie otwartych sieci Wi-Fi . Niezależnie od tego, czy czekają na lotnisku, czy siedzą w kawiarni, głównym celem jest znalezienie otwartego połączenia Wi-Fi .

Co przerażające, hakerzy również mają tę samą misję. Oni również czekają, aż użytkownicy zainicjują żądanie połączenia w otwartej sieci, zanim zaczną działać phishingiem i pozbawią ich poufnych danych lub, co gorsza, pieniędzy na koncie bankowym.

Chociaż HTTPS jest do pewnego stopnia skuteczny, jest to protokół SSL, o którym wiadomo, że zapewnia użytkownikom bezpieczeństwo, ponieważ jest niezniszczalny i w dużej mierze bezpieczny. Jednak ataki typu Man-In-The-Middle (MITM) również znalazły sposoby, aby to przełamać .

W tym miejscu technika SSL Pinning pojawia się jako jedna z najlepszych praktyk w zakresie bezpieczeństwa aplikacji mobilnych . Mówiąc konkretnie o platformach, jest to idealne rozwiązanie bezpieczeństwa aplikacji na iPhone'a, które wykonuje niesamowitą robotę, rozwiązując problem.

W tym artykule przyjrzymy się rodzajom i procesowi włączania przypinania SSL do aplikacji na iOS w celu zapobiegania atakom typu Man In The Middle. Proces, który jest aktywną częścią praktyki testowania bezpieczeństwa mobilnego OWASP .

Rodzaje metod przypinania certyfikatów SSL

Istnieją głównie dwie metody testu przypinania SSL, jak omówiono poniżej:

Przypinanie SSL

SSL-certificate

  • Przypnij certyfikat – możesz pobrać certyfikat serwera i umieścić go w aplikacji. W czasie wykonywania aplikacja porównuje certyfikat serwera z certyfikatami osadzonymi.
  • Przypnij klucz publiczny — możesz pobrać klucz publiczny certyfikatu w kodzie jako ciąg. W czasie wykonywania aplikacja porównuje klucz publiczny certyfikatu z kluczem zakodowanym na stałe w kodzie.

Wybór jednej z dwóch metod przypinania SSL w iOS zależy od konfiguracji serwera i indywidualnych potrzeb. Gdy wybierzesz pierwszą opcję, będziesz musiał wgrać aplikację, gdy serwer zmieni swój certyfikat lub przestanie działać. Wybierając drugą opcję, możesz naruszyć zasady rotacji kluczy, ponieważ klucz publiczny nie ulegnie zmianie.

Przyjrzyjmy się teraz, jak zaimplementować przypinanie SSL w aplikacji na iOS.

*Uwaga: kroki wymienione poniżej są zgodne z procesem przypinania certyfikatu iOS za pomocą Swift.

Jak zaimplementować przypinanie SSL w aplikacji na iOS

1. NSURLSsesja

W przypadku NSURLSession podstawową metodą obsługi przypinania SSL jest URLSession:didReceiveChallenge:completionHandler:delegate. Programiści będą musieli ustawić klasę zgodnie z URLSessionDelegate i wkleić tę funkcję do klasy:

Funkcja „ żąda poświadczeń od delegata w odpowiedzi na żądanie uwierzytelnienia ze zdalnego serwera ”. Programista aplikacji na iPhone'a porówna następnie certyfikaty z serwera z certyfikatem zapisanym w pakiecie aplikacji. Jeśli oba certyfikaty okażą się identyczne, uwierzytelnienie pozwoli im przejść, a klient będzie mógł połączyć się z serwerem.

2. Przypinanie certyfikatu Alamofire

Alamofire to jedna z najbardziej znanych bibliotek do sieci HTTP w języku Swift. Ma wbudowaną funkcję przypinania SSL w iOS Swift i jest niezwykle łatwy w użyciu. Oto jak stworzyć bezpieczną aplikację na iOS z przypinaniem certyfikatu Alamofire.

Typowe problemy związane z implementacją przypinania SSL i jak je rozwiązać

Eksperci ds. zapewnienia jakości w renomowanych agencjach zajmujących się tworzeniem aplikacji regularnie testują aplikacje mobilne pod kątem luk w zabezpieczeniach, w tym pełnej penetracji sieci. Ale jest wiele agencji testujących aplikacje, które nie skupiają się na tych obszarach z takim samym entuzjazmem. Wydają się niechętni wdrażaniu tego konkretnego rozwiązania zabezpieczającego iPhone'a w swoich aplikacjach.

Oto niektóre z głównych powodów tego –

  • Jedną z największych wad przypinania SSL w aplikacji na iOS jest jego implementacja. Proces jest złożony i może zmusić programistów do ciągłego pisania kodu i skomplikować proces tworzenia aplikacji .
  • Przypinanie certyfikatów iOS SSL, które będą się regularnie zmieniać, może zmusić programistów do aktualizowania pliku binarnego aplikacji przy każdej zmianie certyfikatu.
  • Należy podjąć wiele wysiłków, aby zabezpieczyć sposoby na ominięcie weryfikacji iOS SSL.

Zwracając uwagę na reperkusje, jakie może przynieść nieobecność sceny, oto jak niezawodna firma zajmująca się tworzeniem aplikacji na iPhone'a unika niektórych typowych pułapek .

Testowanie szpilki

W przeciwieństwie do zwykłych testów aplikacji, w których sprawdzasz, czy wszystko działa, czy nie, metoda testu przypinania SSL polega na tym, że będziesz musiał sprawdzić, czy coś się nie powiedzie. Będziesz musiał skupić się na sprawdzeniu, czy aplikacja anuluje potencjalnie zhakowane połączenia. Jeśli aplikacja umożliwia komunikację z jednym punktem końcowym, testowanie będzie tak proste, jak wprowadzenie żądania GET do dowolnego stanu. W idealnym przypadku aplikacja musi anulować połączenie, a żądanie powinno zakończyć się niepowodzeniem.

Obsługa zmiany certyfikatu

Odnawianie certyfikatu domeny zachowuje parę kluczy publiczny/prywatny, ale nie zawsze tak jest. Ale jeśli właściwie zaplanujesz cykl aktualizacji, będziesz w stanie uniknąć przestojów dla użytkowników końcowych.

Zanim certyfikat iOS SSL zostanie aktywowany na stronie, należy go przypiąć w aplikacji, oprócz aktualnie aktywnego certyfikatu, a następnie wydać aktualizację. Gdy wykonamy ten krok w Appinventiv, aby utworzyć bezpieczną aplikację na iOS , tymczasowo wykonujemy szybki test z nowym certyfikatem i testujemy aplikację z przypiętymi obydwoma certyfikatami.

Często zadawane pytania dotyczące przypinania SSL w aplikacjach na iOS

1. Gdzie przechowywać wrażliwe dane w aplikacji na iOS?

Poufne dane aplikacji powinny być zawsze przechowywane w iCloud lub Keychain w iOS lub nawet w bazie danych po odpowiednim zaszyfrowaniu.

2. Jak działa SSL?

Przypinanie SSL to jedna z najczęstszych wskazówek dotyczących bezpieczeństwa aplikacji na iOS . Ale aby zrozumieć, co to znaczy, najpierw musisz wiedzieć, jak działa SSL.

  • Przeglądarka próbuje połączyć się ze stroną internetową, która jest zabezpieczona SSL. Przeglądarka następnie żąda od serwera WWW, aby się zidentyfikował.
  • Serwer WWW wysyła następnie do przeglądarki swoją kopię certyfikatu SSL.
  • Przeglądarka sprawdza, czy certyfikat SSL musi być zaufany. Jeśli to możliwe, na serwer WWW zostanie wysłana wiadomość.
  • Serwer sieciowy odsyła następnie potwierdzenie rozpoczęcia sesji zaszyfrowanej za pomocą protokołu SSL.
  • Zaszyfrowane dane są następnie ostatecznie udostępniane między przeglądarką a serwerem WWW.

Końcowe myśli

Chociaż przypinanie SSL jest uważane za bezpieczne i szeroko stosowane, gdy potrzebne jest szyfrowanie, podczas tworzenia aplikacji wysokiego ryzyka zawsze mile widziana jest kolejna warstwa ochrony. Przypinanie SSL umożliwia weryfikację tożsamości serwera na szczycie łańcucha weryfikacji zaufania SSL.

Dzięki przypinaniu SSL możesz odrzucić wszystkie połączenia z wyjątkiem tych z wyznaczonym serwerem, którego certyfikat SSL zapisaliśmy w naszym lokalnym pakiecie. Potencjalną wadą jest to, że musisz aktualizować aplikację po każdej zmianie klucza SSL serwera.

Jeśli planujesz również uruchomić aplikację na iOS z przypinaniem SSL, dobrym początkiem może być skonsultowanie się z najlepszą firmą zajmującą się tworzeniem aplikacji na iOS .