W SQL Server 2016 jaka jest różnica między szyfrowaniem zawsze szyfrowanym a przezroczystym?

40

Pisząc to, wciąż czekam na oficjalną wersję programu SQL Server 2016, abyśmy mogli zbadać przydatność jego funkcji „Zawsze szyfrowane”.

Chciałbym tylko wiedzieć, jakie będą konkretne różnice między Always Encrypted a obecnie dostępnym przezroczystym szyfrowaniem danych w SQL Server 2016, abyśmy mogli podjąć właściwą decyzję dla przyszłych projektów.

RoastBeast
źródło
Dzięki Always Encrypted sterowniki klienta szyfrują / odszyfrowują dane, zanim trafią one na SQL Server, podczas gdy TDE działa na samym SQL Server. IMHO TDE jest głównie bezużyteczne w scenariuszach chmury / bezpiecznego centrum danych (przewiń do „TDE nie jest zbyt przydatne w chmurze”). Jeśli interesuje Cię zaawansowane bezpieczeństwo danych, sprawdź również Crypteron . Pełne ujawnienie: Pracuję tam
DeepSpace101

Odpowiedzi:

48

Wady przejrzystego szyfrowania danych w porównaniu do zawsze szyfrowanego:

  • Chroni tylko dane w spoczynku - kopie zapasowe i pliki danych są „bezpieczne”, ale dane w ruchu lub w pamięci są wrażliwe
  • Tylko cała baza danych
  • Wszystkie dane są szyfrowane w ten sam sposób
  • Kompresja kopii zapasowej może potrwać dłużej i przynieść efekt przeciwny do zamierzonego

    • Cóż, w rzeczywistości w SQL Server 2016 wprowadzono pewne ulepszenia, które są sprzeczne z tym, co zwykle wiemy o próbie kompresji zaszyfrowanych danych - jest znacznie lepsza niż poprzednie wersje, ale prawdopodobnie nadal gorsza niż szyfrowanie tylko kilku kolumn (nieprzetestowane)
  • tempdb dziedziczy także szyfrowanie - pozostaje nawet po wyłączeniu TDE
  • Wymaga wersji Enterprise
  • Dane zawsze dostępne dla sysadmin

Zawsze zaszyfrowane rozwiązuje wszystkie te problemy w części lub w całości:

  • Dane są chronione w spoczynku, w ruchu i w pamięci - znacznie większa kontrola nad certyfikatami, kluczami i dokładnie tym, kto może odszyfrować dane
  • Może być tylko jedną kolumną
  • Rodzaj szyfrowania jest wyborem:
    • Może używać szyfrowania deterministycznego do obsługi indeksów i wyszukiwania punktów (powiedzmy SSN)
    • Można użyć losowego szyfrowania w celu zapewnienia lepszej ochrony (np. Numer karty kredytowej)
  • Ponieważ nie obejmuje ona całej bazy danych, niekoniecznie musi to mieć wpływ na kompresję kopii zapasowych - oczywiście im więcej kolumn zostanie zaszyfrowanych, tym gorsze będzie szczęście
  • tempdb jest niezaangażowany
  • Począwszy od SQL Server 2016 z dodatkiem Service Pack 1, zawsze szyfrowane działa teraz we wszystkich wersjach
  • Dane mogą być chronione przed sysadminem (ale nie sysadmin ORAZ administratorami bezpieczeństwa / certyfikatu / klucza systemu Windows, innymi słowy, możesz rozdzielić odpowiedzialność, dopóki te dwie grupy się nie zderzą)

Istnieje jednak ograniczenie, a mianowicie, że nie wszystkie sterowniki i aplikacje mogą bezpośrednio obsługiwać zaszyfrowane dane, więc w niektórych przypadkach będzie to wymagało aktualizacji / zmiany sterowników i / lub modyfikacji kodu.

Aaron Bertrand
źródło
Czy mógłbyś mi wyjaśnić, w jaki sposób Always Encrypted szyfruje dane w pamięci? Próbowałem znaleźć te informacje w MSDN, ale tylko mówi o danych w spoczynku i danych w szyfrowaniu ruchu. Dziękuję :)
Victoria Malaya,
1
@Victoria dane są szyfrowane przez dostawcę, zanim SQL Server je zobaczy. Tak więc SQL Server otrzymuje zaszyfrowaną wartość, umieszcza tę zaszyfrowaną wartość na dysku i ładuje zaszyfrowaną wartość do pamięci, gdy ta strona jest w pamięci. Szyfrowanie nie odbywa się w pamięci tak, jak myślisz, a deszyfrowanie następuje tylko wtedy, gdy klient posiada certyfikat z możliwością odszyfrowania ...
Aaron Bertrand
2
O ile mi wiadomo, jedna z największych różnic dotyczy zapytań o dane. Z TDE możesz uruchomić dowolne zapytanie, jak zwykle, z AE jesteś bardzo ograniczony, jeśli chodzi o zapytania do zaszyfrowanych kolumn, tzn. Możesz wykonywać tylko porównania równości (i to wymaga wyboru szyfrowania deterministycznego). Nie ma sprawdzania zakresów dat, żadnych zapytań LIKE itp.
musefan
3

Mówiąc najprościej, TDE jest szyfrowane w spoczynku (na dysku), a AE jest dodatkowo szyfrowane w sieci.

Chad Mattox
źródło
Myślę, że możesz mieć to do tyłu, nie?
zwerdlds
Czy nie powinno być: TDE jest szyfrowane w spoczynku, podczas gdy AE jest szyfrowane w sieci, w spoczynku i w pamięci?
RoastBeast
AFAIK: Możesz łączyć TDE i Force Protocol Encryption na serwerze MS SQL, aby szyfrować je również na kablu.
TiloBunt,