Interfejs API kryptografii internetowej

Web Cryptography API to rekomendacja World Wide Web Consortium (W3C) dotycząca interfejsu niskiego poziomu, który zwiększyłby bezpieczeństwo aplikacji internetowych , umożliwiając im wykonywanie funkcji kryptograficznych bez konieczności uzyskiwania dostępu do surowego materiału klucza. Ten agnostyczny interfejs API wykonywałby podstawowe operacje kryptograficzne, takie jak mieszanie , generowanie podpisów oraz weryfikacja i szyfrowanie , a także deszyfrowanie z poziomu aplikacji internetowej.

Opis

W dniu 26 stycznia 2017 r. W3C wydało rekomendację dotyczącą interfejsu Web Cryptography API, który mógłby wykonywać podstawowe operacje kryptograficzne w aplikacjach internetowych. To agnostyczne API wykorzystywałoby JavaScript do wykonywania operacji zwiększających bezpieczeństwo wymiany danych w aplikacjach internetowych . API zapewnia interfejs niskiego poziomu do tworzenia i/lub zarządzania kluczami publicznymi i prywatnymi do haszowania , generowania i weryfikacji podpisów cyfrowych oraz szyfrowania i deszyfrowania do użytku z aplikacjami internetowymi.

Web Cryptography API może być używany do szerokiego zakresu zastosowań, w tym:

Ponieważ interfejs Web Cryptography API jest z natury niezależny, można go używać na dowolnej platformie . Zapewniłoby to wspólny zestaw interfejsów , które umożliwiłyby aplikacjom internetowym i progresywnym aplikacjom internetowym wykonywanie funkcji kryptograficznych bez konieczności uzyskiwania dostępu do surowego materiału klucza. Odbywałoby się to za pomocą interfejsu SubtleCrypto, który definiuje grupę metod do wykonywania powyższych operacji kryptograficznych. Dodatkowe interfejsy w interfejsie Web Cryptography API umożliwiłyby generowanie kluczy, wyprowadzanie kluczy oraz import i eksport kluczy.

Wizja korzystania z Web Cryptography API

Specyfikacja W3C dla Web Cryptography API kładzie nacisk na wspólną funkcjonalność i funkcje, które obecnie istnieją między specyficznymi dla platformy i standardowymi kryptograficznymi API, w porównaniu z tymi, które są znane tylko z kilku implementacji. Zalecenie grupy dotyczące korzystania z interfejsu Web Cryptography API nie nakazuje wdrożenia obowiązkowego zestawu algorytmów. Wynika to ze świadomości, że implementacje kryptograficzne będą się różnić w zależności od zgodnych programów klienckich ze względu na przepisy rządowe , lokalne polityki , praktyki bezpieczeństwa i własność intelektualną . obawy.

Istnieje wiele typów istniejących aplikacji internetowych, z którymi interfejs Web Cryptography API byłby odpowiedni do użycia.

Uwierzytelnianie wieloskładnikowe

Uwierzytelnianie wieloskładnikowe jest dziś uważane za jedną z najbardziej niezawodnych metod weryfikacji tożsamości użytkownika aplikacji internetowej, takiej jak bankowość internetowa. Wiele aplikacji internetowych jest obecnie zależnych od tej metody uwierzytelniania w celu ochrony zarówno użytkownika, jak i agenta użytkownika. Dzięki interfejsowi Web Cryptography API aplikacja internetowa mogłaby zapewniać uwierzytelnianie od siebie, zamiast polegać na uwierzytelnianiu w warstwie transportowej do tajnego materiału klucza w celu uwierzytelnienia dostępu użytkownika. Ten proces zapewniłby użytkownikowi bogatsze wrażenia.

Web Cryptography API umożliwiłoby aplikacji zlokalizowanie odpowiednich kluczy klienta, które zostały wcześniej utworzone przez agenta użytkownika lub zostały wstępnie przygotowane przez aplikację internetową. Aplikacja byłaby w stanie dać agentowi użytkownika możliwość wygenerowania nowego klucza lub ponownego użycia istniejącego klucza w przypadku, gdy użytkownik nie ma już klucza powiązanego ze swoim kontem. Dzięki powiązaniu tego procesu z systemem Transport Layer Security , za pomocą którego użytkownik jest uwierzytelniany, proces uwierzytelniania wieloskładnikowego może zostać dodatkowo wzmocniony przez wyprowadzenie klucza opartego na bazowym transporcie.

Chroniona wymiana dokumentów

Interfejs API może służyć do ochrony wrażliwych lub poufnych dokumentów przed nieautoryzowanym przeglądaniem z poziomu aplikacji internetowej, nawet jeśli zostały one wcześniej bezpiecznie odebrane. Aplikacja internetowa używałaby interfejsu Web Cryptography API do szyfrowania dokumentu za pomocą tajnego klucza, a następnie otaczała go kluczami publicznymi, które zostały powiązane z użytkownikami, którzy są upoważnieni do przeglądania dokumentu. Po przejściu do aplikacji internetowej autoryzowany użytkownik otrzymałby zaszyfrowany dokument i zostałby poinstruowany, aby użyć swojego klucza prywatnego, aby rozpocząć proces rozpakowywania, który pozwoliłby mu odszyfrować i wyświetlić dokument.

Magazyn w chmurze

Wiele firm i osób prywatnych polega na przechowywaniu w chmurze . W celu ochrony zdalny dostawca usług może chcieć, aby ich aplikacja internetowa dawała użytkownikom możliwość ochrony ich poufnych dokumentów przed przesłaniem ich dokumentów lub innych danych. Web Cryptography API umożliwi użytkownikom:

  • Wybierz, aby wybrać klucz prywatny lub tajny
  • Wyprowadź klucz szyfrowania z ich klucza, jeśli sobie tego życzą
  • Zaszyfruj ich dokument/dane
  • Prześlij swoje zaszyfrowane dokumenty/dane za pomocą istniejących interfejsów API usługodawcy

Elektroniczne podpisywanie dokumentów

Możliwość elektronicznego podpisywania dokumentów oszczędza czas, zwiększa bezpieczeństwo ważnych dokumentów i może służyć jako prawny dowód akceptacji dokumentu przez użytkownika. Wiele aplikacji internetowych akceptuje podpisy elektroniczne zamiast wymagać podpisów pisemnych. W przypadku interfejsu Web Cryptography API użytkownik byłby proszony o wybranie klucza, który można wygenerować lub wstępnie udostępnić specjalnie dla aplikacji internetowej. Klucz może być następnie użyty podczas operacji podpisywania.

Ochrona integralności danych

Aplikacje internetowe często przechowują dane lokalnie w pamięci podręcznej, co naraża je na ryzyko naruszenia bezpieczeństwa w przypadku ataku offline. Web Cryptography API pozwala aplikacji internetowej na użycie klucza publicznego wdrożonego z jej poziomu w celu weryfikacji integralności pamięci podręcznej danych.

Bezpieczne przesyłanie wiadomości

Interfejs Web Cryptography API może zwiększyć bezpieczeństwo wiadomości używanych w schematach nieoficjalnego (OTR) i innych typów schematów podpisywania wiadomości za pomocą uzgadniania klucza. Nadawca wiadomości i zamierzony odbiorca negocjowaliby wspólne szyfrowanie i klucze uwierzytelniania wiadomości (MAC) w celu szyfrowania i odszyfrowywania wiadomości, aby zapobiec nieautoryzowanemu dostępowi.

Podpisywanie i szyfrowanie obiektów JSON (JOSE)

Interfejs Web Cryptography API może być używany przez aplikacje internetowe do interakcji z formatami i strukturami wiadomości zdefiniowanymi w grupie roboczej JOSE. Aplikacja może odczytywać i importować JSON Web Signature (JWK), sprawdzać poprawność wiadomości chronionych za pomocą podpisu elektronicznego lub kluczy MAC oraz odszyfrowywać wiadomości JWE.

Zgodność z Web Cryptography API

W3C zaleca, aby dostawcy unikali używania zastrzeżonych rozszerzeń specyficznych dla dostawcy ze specyfikacjami dla Web Cryptography API. Dzieje się tak, ponieważ mogłoby to zmniejszyć interoperacyjność interfejsu API i rozbić bazę użytkowników, ponieważ nie wszyscy użytkownicy byliby w stanie uzyskać dostęp do określonej treści. Zaleca się, aby w przypadku, gdy nie można uniknąć rozszerzenia specyficznego dla dostawcy, sprzedawca poprzedził je łańcuchami specyficznymi dla dostawcy, aby zapobiec kolizjom z przyszłymi generacjami specyfikacji interfejsu API.

Linki zewnętrzne