Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Microsoft Professional Developer Days 2004 Bezpieczeństwo aplikacji.NET Michał Poliszkiewicz."— Zapis prezentacji:

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

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 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 by Default 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 Idea Policy Sprawdzanie uprawnień ASP.NET 1.1 Kryptografia Powtórka z kryptografii Niebezpieczeństwa Przechowywanie informacji sekretnych Ukrywanie kodu

8 CAS Policy Grupowanie uprawnień Permission Sets Grupowanie assemblies Code Groups Warunek członkowstwa Referencja do PermissionSet Dwa nowe mechanizmy zabezpieczeń - Code Access Security - Role Based Security Dwa sposoby konfiguracji - Deklaratywny (atrybuty) - Programowy 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 Bezpieczeństwo – CAS, RBS

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

10 Konfiguracja CAS – definiowanie Policy

11 Sprawdzanie przydzielonych uprawnień 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 Call Stack Moje Assembly Jakieś Assembly.NET Framework Assembly Call CzytajPlik() Call ReadFile() Grant: ReadFile ReadFile Demand Unmanaged Asset Grant: Unmanaged Win32 API

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 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 Aplikacja ASP.NET Wrapper Assemble (Strong Name, GAC) Chroniony zasób Sandboxed Code Demand i Assert Dostęp do zasobu

16 AGENDA CAS – Code Access Security 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 ZadaniaOpis 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. hashe Podpis cyfrowy Hashing danych i szyfrowanie kluczem prywatnym.NET Framework - System.Security.Cryptography

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

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

21 DEMO Szyfrowanie symetryczne - Rijndael

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

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

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 Unikajmy problemu Hashing WIS Smart card 2 3

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

27 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 Building Secure ASP.NET Applications us/dnnetsec/html/secnetlpMSDN.asp Improving Web Application Security: Threats and Countermeasures us/dnnetsec/html/threatcounter.asp 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 "Microsoft Professional Developer Days 2004 Bezpieczeństwo aplikacji.NET Michał Poliszkiewicz."

Podobne prezentacje


Reklamy Google