Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Bezpieczeństwo aplikacji .NET

Podobne prezentacje


Prezentacja na temat: "Bezpieczeństwo aplikacji .NET"— Zapis prezentacji:

1 Bezpieczeństwo aplikacji .NET
Michał Poliszkiewicz Microsoft Professional Developer Days 2004

2 Bezpieczeństwo Bezpieczeństwo jest terminem złożonym
Projektowanie, programowanie, wdrażanie Zabezpieczenia sieci, serwerów, bezpieczne aplikacje Konsekwencje złych zabezpieczeń Kradzieże informacji poufnych Kradzież własności intelektualnej „downtime” systemów Strata reputacji firmy / twórców systemów Straty finansowe – reputacja, usuwanie szkód

3 Bezpieczeństwo – punkty ataku
Secure by Default Błędna konfiguracja systemów Wady systemów Złe zarządzanie pamięcią Błędy arytmetyczne „cross-site scripting” XSS „SQL injection” Błędy w walidacji Słabości kryptografii Brak polityki unowocześniania systemów Secure by Design Secure in Deployment

4 .NET Framework Kod zarządzany – CLR nasz Wielki Brat
Zarządzanie pamięcią Walidacja assembly Weryfikacja „type safe” Zarządzanie wykonaniem Gotowa infrastruktura Nowe modele zabezpieczeń Gotowe klasy PKI, szyfrowanie Walidacja System.Security ASP.NET Windows Authentication Forms Authentication Passport

5 Bezpieczeństwo tematy
Kryptografia Bezpieczna komunikacja Autentykacja Autoryzacja Walidacja Obsługa błędów Zapory Firewall Audyt kodu Monitorowanie działania aplikacji Poprawki Service Packs, fixes … ….

6 Bezpieczeństwo – tematy na dzisiaj
CAS – Code Access Security Idea Policy Sprawdzanie uprawnień ASP.NET 1.1 Kryptografia Powtórka z kryptografii Niebezpieczeństwa Przechowywanie informacji sekretnych Ukrywanie kodu

7 AGENDA CAS – Code Access Security Kryptografia Ukrywanie kodu Idea
Policy Sprawdzanie uprawnień ASP.NET 1.1 Kryptografia Powtórka z kryptografii Niebezpieczeństwa Przechowywanie informacji sekretnych Ukrywanie kodu

8 Bezpieczeństwo – CAS, RBS
Dwa nowe mechanizmy zabezpieczeń - Code Access Security - Role Based Security Dwa sposoby konfiguracji - Deklaratywny (atrybuty) - Programowy CAS Policy Grupowanie uprawnień „Permission Sets” Grupowanie assemblies „Code Groups” Warunek członkowstwa Referencja do PermissionSet 1 3 System.Security.Permissions Przydzielane do assembly podczas jego wgrywania Określają m.in. uprawnienia do: - Dostępu do systemu plików - Dostępu do zmiennych systemowych - Wywoływania kodu natywnego - Dostępu do Isolated Storage - Dostępu do zasobów sieciowych - … Wypadkowy zbiór uprawnień jest sumą wszystkich uprawnień wynikających z członkostwa w poszczególnych grupach 2 4

9 Policy – definiowanie zasad
All Code Nothing PermissionSets Zone: My Computer Nothing Full Trust SN: e1334ad4bd3rc113 Intranet Full Trust Zone: Intranet Same Site Access Intranet Full Trust All Code Same Site Access Evidence URL: //search Full Trust Nothing SN: b2690aecbd60c3ac StrongName: b2690aecbd60c3ac FullTrust

10 Konfiguracja CAS – definiowanie Policy

11 Sprawdzanie przydzielonych uprawnień
Call Stack Demand Mechanizm wymagania uprawnień do wykonania kodu Stack Walk Sprawdzanie łańcucha odwołań Assert Zapewnienie dostępu do zasobów dla funkcji wołającej Jakieś Assembly Grant: ReadFile Call CzytajPlik() Moje Assembly Grant: ReadFile Call ReadFile() ReadFile Demand .NET Framework Assembly Unmanaged Asset Win32 API Grant: Unmanaged

12 Wymaganie uprawnień - programowo
FileIOPermission filePerm = new FileIOPermission( FileIOPermissionAccess.Read, "C:\\temp.txt"); try { filePerm.Demand(); // Code to access file goes here } Catch (SecurityException e) // if demand fails, this code is executed Wymaganie uprawnia czytania z pliku C:\\temp.txt „Stack walk” – jeżeli uprawnienia zabraknie, zostanie wyrzucony wyjątek

13 Wymaganie uprawnień - deklaratywnie
Użycie atrybutów Informacja zawarta w metadata Jak łapać wyjątek SecurityException Tylko poziom metody i całego assembly [FileIOPermission(SecurityAction.Demand, Read= "C:\\temp.txt")] public string ReadTempFile() { // Code to read file goes here }

14 ASP.NET 1.1 nie musi równać się FullTrust
<location allowOverride="true"> <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal"/> <trustLevel name="High" policyFile="web_hightrust.config"/> <trustLevel name="Medium" policyFile="web_mediumtrust.config"/> <trustLevel name="Low" policyFile="web_lowtrust.config"/> <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/> </securityPolicy> <!-- level="[Full|High|Medium|Low|Minimal]" --> <trust level=“Full" originUrl=""/> </system.web> </location> Machine.config

15 Sandboxing w aplikacjach ASP.NET
Uprzywilejowany kod opakowany w „Wrapper Assemble” Assert na wybranych uprawnieniach „Wrapper assembly” umieszczone w GACu Atrybut AllowPartiallyTrustedCallersAttribute <trust level_”Medium” originUri_--/> Demand i Assert Dostęp do zasobu „Wrapper Assemble” (Strong Name, GAC) Aplikacja ASP.NET Chroniony zasób Sandboxed Code

16 AGENDA CAS – Code Access Security Kryptografia Ukrywanie kodu Idea
Policy Sprawdzanie uprawnień ASP.NET 1.1 Kryptografia Powtórka z kryptografii Niebezpieczeństwa Przechowywanie informacji sekretnych Ukrywanie kodu

17 Powtórka z kryptografii
Kryptografia – dziedzina wiedzy Cele: Poufność: Ochrona przed dostępem do danych przez osoby / procesy nieupoważnione. Integralność danych: Ochrona przed zmianą danych przez osoby /procesy nieupoważnione. Uwierzytelnienie: Weryfikacja pochodzenia danych

18 Powtórka z kryptografii
Zadania Opis Szyfrowanie Symetryczne Szyfrowanie kluczem symetrycznym Szyfrowanie asymetryczne Szyfrowanie kluczem publicznym / prywatnym „Hashing” Kodowanie mieszające Mapowanie długich łańcuchów danych na krótkie łańcuchy, o ustalonej długości – tzw. „hash’e” Podpis cyfrowy „Hashing” danych i szyfrowanie kluczem prywatnym .NET Framework - System.Security.Cryptography

19 Szyfrowanie symetryczne
Szybkie i wydajne średnio ~1000x w porównaniu do asymetrycznego Problem z bezpieczną wymianą kluczy DES, Triple DES, AES (Rijndael), IDEA, RC2, RC4 Dane Szyfrowanie Deszyfrowanie Klucz prywatny jest znany nadawcy i odbiorcy

20 Algorytm symetryczny Generacja klucza Salt
Generacja losowego łańcucha szumu – „Salt” Stworzenie klucza na podstawie wygenerowanego łańcucha i hasła dostarczonego przez użytkownika Szyfrowanie algorytmem symetrycznym przy wykorzystaniu wygenerowanego klucza Niezaszyfrowany łańcuch „salt” i IV w wyjściowym strumieniu danych Odszyfrowywanie algorytmem symetrycznym przy wykorzystaniu tego samego klucza Regeneracja klucza na podstawie łańcucha „salt” Wykorzystanie wektora IV Salt Initialization Vector Encrypted Data

21 DEMO Szyfrowanie symetryczne - Rijndael

22 Szyfrowanie asymetryczne
Szyf. – kl. publiczny Szyf. – kl. prywatny Bezpieczne, ale wolne RSA, Diffie-Helman, DSA Deszyfr. – kl prywatny Deszyfr. – kl publiczny Szyfrowanie przez B – poufność informacji B Użytkownik B Użytkownik A Klucz prywatny Klucz publiczny Klucz publiczny Szyfrowanie przez A – potwierdzenie tożsamości A

23 Algorytm asymetryczny
Klasy implementujące algorytmy: RSACryptoServiceProvider DSACryptoServiceProvider RSACryptoServiceProvider rsaAlgorithm = new RSACryptoServiceProvider(); Dostarczenie parametrów RSAParameters rsaKeyInfo = new RSAParameters(); rsaKeyInfo.Modulus = PublicKey; rsaKeyInfo.Exponent = Exponent; rsaAlgorithm.ImportParameters(rsaKeyInfo); Szyfrowanie / Deszyfrowanie

24 Niebezpieczeństwa Słabe punkty kryptografii
Implementacja własny algorytm - nie! Implementacja znanego algorytmu – nie! Klucze Problem ograniczenia dostępności Czas życia Procedury awaryjne – klucz staje się dostępny Długie klucze – TAK TAK TAK! Nie wywarzajmy otwartych drzwi!!! CryptoAPI, CAPICOM, i System.Security.Cryptography - tak DPAPI do przechowywania wiadomości poufnych - tak SSL/TLS - tak

25 Zarządzanie informacjami poufnymi
3 drogi Ukrywanie Prawa dostępu Szyfrowanie Łączmy rozwiązania ACL na zaszyfrowanych danych Ukryty klucz - OS LSA – nie LSAStorePrivateData, LSARetrievePrivateData DPAPI – tak CryptProtectData CryptUnprotectData .NET - P/Invoke 1 3 Unikajmy problemu Hashing WIS Smart card 2

26 AGENDA CAS – Code Access Security Kryptografia Ukrywanie kodu Idea
Policy Sprawdzanie uprawnień ASP.NET 1.1 Kryptografia Powtórka z kryptografii Niebezpieczeństwa Przechowywanie informacji sekretnych Ukrywanie kodu

27 Ukrywanie kodu Dekompilacja /.NET i Java
Niebezpieczeństwa dekompilacji Łatwe wyszukiwanie dziur w oprogramowaniu Wykradanie pomysłów i algorytmów Łamanie zabezpieczeń Obfuskowanie Zmiany nazw klas, metod i obiektów „overload induction” Usuwanie nieistotnych metadanych Szyfrowanie łańcuchów Zaciemnianie przebiegu programu Zmniejszanie wielkości programów

28 DEMO Ukrywanie kodu – VS NET 2003 i Dotfuscator

29 Więcej informacji Strony internetowe Patterns and Practices Guides
Patterns and Practices Guides Building Secure ASP.NET Applications Improving Web Application Security: Threats and Countermeasures Książki Bezpieczny kod Michael Howard and David LeBlanc, published by Microsoft Press Tworzenie Bezpiecznych Aplikacji Microsoft ASP.NET J.D. Meier, Alex Mackman, Michael Dunner, and Srinath Vasireddy Grupy dyskusujne microsoft.public.dotnet.security microsoft.public.sqlserver.security

30


Pobierz ppt "Bezpieczeństwo aplikacji .NET"

Podobne prezentacje


Reklamy Google