Bezpieczeństwo aplikacji .NET

Slides:



Advertisements
Podobne prezentacje
Infrastruktura kluczy publicznych
Advertisements

Longhorn Academy - AD Warszawa, 12 kwietnia 2007
Systemy uwierzytelniania w serwisach internetowych
IDENTYFIKACJA UŻYTKOWNIKA W SIECI INTERNET
Decyzje projektowe w .NET Framework
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Bezpieczeństwo aplikacji WWW
Kamil Smitkiewicz Bezpieczeństwo w PHP.
KRYPTOLOGIA =KRYPTOGRAFIA+KRYPTOANALIZA
Microsoft Professional Developer Days 2004
Opracował: Patryk Kołakowski(s1715)
Platforma .Net i Vs.Net.
Budowanie polityk bezpieczeństwa w urządzeniach typu firewall
SSL - protokół bezpiecznych transmisji internetowych
PKI, OPIE Auth Mateusz Jasiak.
PKI (Public Key Infrastructure) Hasła jednorazowe (OPIE, OTP, S\Key)
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
SG-500 Bramka zabezpieczająca VPN Copyright © PLANET Technology Corporation. All rights reserved.
Information Bridge Framework platforma integracji Microsoft Office 2003 z aplikacjami Line of Business Krzysztof Michalski10/01/2005.
.NET Remoting Łukasz Zawadzki.
Bezpieczeństwo danych
Systemy zarządzania treścią CMS
Kryptografia – elementarz cześć I
Analiza, projekt i częściowa implementacja systemu obsługi kina
Bezpieczeństwo baz danych
Artur Spulnik, Aleksandra Otremba
Inżynieria Oprogramowania
Zagrożenia bezpieczeństwa można podzielić na następujące klasy:
System Użytkowników Wirtualnych
Uwierzytelnianie i autoryzacja System Użytkowników Wirtualnych Michał Jankowski Paweł Wolniewicz
C# Windows Forms Zastosowania Informatyki Wykład 2
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
PKI – a bezpieczna poczta
Błażej Miśkiewicz Grupa domowa w Windows 7 Błażej Miśkiewicz MCT MCP MCSA MCTS MCITP.
Rozwój aplikacji przy wykorzystaniu ASP.NET
IT Asset Management Service
Zarządzanie użytkownikami i praca w sieci lokalnej
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Realizacja aplikacji internetowych
Zastosowania kryptografii
Rozdział 1: Wprowadzenie do systemu Windows 2000 i podstaw sieci
Sieciowe Systemy Operacyjne
Rejestr systemu Windows
Przygotował: Paweł Ziaja
ZASTOSOWANIE KRYPTOGRAFII W SZYFROWANIU DANYCH
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Kostyantyn Doronovych, 79129, sr1640 Łukasz Marciniak, 79166, sr1640
Podpis elektroniczny Między teorią a praktyką
Internetowego Biura Rachunkowego
Programowanie sieciowe w Javie
Narzędzia klienta usługi archiwizacji Warsztaty „Usługa powszechnej archiwizacji” Michał Białoskórski, CI TASK Bartłomiej Balcerek, WCSS.
OWASP + DevOps, kilka przydatnych narzędzi
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
JĘZYKI ASSEMBLEROWE ..:: PROJEKT ::..
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Uprawnienia w Windows Server
Serwery Aplikacji Bezpieczeństwo w Aplikacjach.NET uruchamianych pod IIS Arkadiusz Popa, WMiI, UŁ.
Aby do danych nie dostała się postronna osoba ( hacker ) stosuje się różne metody kryptograficzne.
POZNAŃ SUPERCOMPUTING AND NETWORKING CENTER 1 Zastosowanie LDAP w usługach WWW i Portali PCSS, 2002.
niezawodności Z problemem jakości systemów informacyjnych wiąże się problem zapewnienia odpowiedniej niezawodności ich działania.
Oprogramowaniem (software) nazywa się wszystkie informacje w postaci zestawu instrukcji i programów wykonywanych przez komputer oraz zintegrowanych danych.
Informatyka Zakres rozszerzony Zebrał i opracował : Maciej Belcarz TEMAT : Administracja i bezpieczeństwosieci TEMAT : Administracja i bezpieczeństwosieci.
Podsłuchiwanie szyfrowanych połączeń – niezauważalny atak na sesje SSL Paweł Pokrywka, Ispara.pl.
PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
Anonimowo ść w sieci. Sposoby zachowania anonimowośc i VPNProxyTOR.
Realizacja aplikacji internetowych
KRYPTOGRAFIA KLUCZA PUBLICZNEGO WIKTOR BOGUSZ. KRYPTOGRAFIA KLUCZA PUBLICZNEGO Stosując metody kryptograficzne można zapewnić pełną poufność danych przechowywanych.
Aplikacje i usługi internetowe
Zapis prezentacji:

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

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

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

.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

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 … ….

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

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

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

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 http://sales/abc.dll SN: b2690aecbd60c3ac StrongName: b2690aecbd60c3ac FullTrust

Konfiguracja CAS – definiowanie Policy

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

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

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 }

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

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

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

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

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

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

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

DEMO Szyfrowanie symetryczne - Rijndael

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

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

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

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

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

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

DEMO Ukrywanie kodu – VS NET 2003 i Dotfuscator

Więcej informacji Strony internetowe Patterns and Practices Guides http://msdn.microsoft.com/security http://msdn.microsoft.com/columns/secure.asp http://www.microsoft.com/poland/developer Patterns and Practices Guides Building Secure ASP.NET Applications http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp Improving Web Application Security: Threats and Countermeasures http://msdn.microsoft.com/library/default.asp?url=/library/en-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