1 / 32

Bezpečnos ť platformy .NET

Bezpečnos ť platformy .NET. Bezpečnosť na .NET Framework. Úvod. C#

dior
Download Presentation

Bezpečnos ť platformy .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bezpečnosť platformy .NET Bezpečnosť na .NET Framework

  2. Úvod C# C# je čisto objektový jazyk navrhnutý firmou Microsoft na základe skúseností s jazykmi C++ a Java. Umožňuje vytvárať programy pre platformu .NET, čo je nadstavba operačného systému Windows, na ktorú sa môžeme dívať ako na prepracovanejšieho nástupcu prostredia označovaného ako Windows DNA.

  3. .NET Framework Každý operačný systém poskytuje programátorom služby, ako napr. prideľovanie a správa pamäti, prístup k perifériám, sprostredkovanie sieťových služieb, atď. Jednou zo základných myšlienok, ktoré viedli ku platforme .NET bolo skvalitnenie týchto služieb, okrem iného aj zvýšenie bezpečnosti. • Platforma .NET sa skladá z niekoľko základných častí. Ide predovšetkým o: • Programový prístup k určitým službám, ako je správa súborov, kalendár, alebo overovanie identity (služba Passsport.NET). • Software určený pre nové internetové zariadenia. • Prostredie .NET Framework, ktoré predstavuje infraštruktúru platformy .NET

  4. Štruktúra prostredia .NET Framework:

  5. Spoločný behový systém • Základom .NET Framework je spoločný behový systém (Common Language Runtime - CLR), ktorý predstavuje prostredie umožňujúce beh a vzájomnú spoluprácu aplikácií napísaných v rôznych programovacích jazykoch (ako napr. C#, C++, Visual Basic, Component Pascal, atď.) Spoločný behový systém je založený na spoločnej špecifikácií jazyka (Common Language Specification - CLS), čo sú vlastne pravidlá, podľa ktorých sa musia riadiť tvorcovia prekladačov akéhokoľvek jazyka pre prostredie .NET Framework.

  6. Spoločný typový systém • Spoločný typový systém (Common Type Systém - CTS) je množina pravidiel pre definície dátových typov a zaobchádzania s nimi. Ich dodržiavanie zaručí, že môžeme dátový typ vytvorený v jednom programovacom jazyku (napr. v C#) v rámci .NET Framework používať v inom programovacom jazyku (napr. v C++, Visual Basic, atď.) Pritom nejde len o vytváranie inštancií objektových, alebo iných typov, ale tiež o odvodzovanie potomkov a iné operácie.

  7. Automatická správa pamäte (garbage collector) • Automatická správa pamäte (garbage collector) sa stará o rušenie inštancií objektových typov, alebo polí ktoré vytvoril programátor. Inštancie existujú pokiaľ na nich existuje aspoň jeden odkaz. Ak zaniknú všetky odkazy na niektorú inštanciu (objekt), garbage collector ju automaticky odstráni z pamäte. K odstráneniu väčšinou nedochádza okamžite po zániku posledného odkazu, ale neskôr ak napr. aplikácia vyčerpá všetku pridelenú pamäť.

  8. Preklad • Programy pre .NET Framework sa neprekladajú do strojového kódu, ale do medzijazyka označovaného IL – Intermediate Language čo je určitý asembler virtuálneho počítača. Tento IL jazyk sa neinterpretuje, ale sa vždy prekladá do strojového kódu. Túto činnosť prevádzajú JIT-prekladače (Just In Time) a v prostredí .NET Framework sa nachádzajú tri, ktoré umožňujú:  preložiť aplikáciu pri inštalácií  preložiť aplikáciu pri spustení

  9.  prekladanie jednotlivých metód v tom okamihu, keď sú volané Straty výkonu sú minimálne, pretože preložený kód je cache-ovaný.

  10. Základná knižnica tried (Basic Class Library - BCL) • sa nachádza nad spoločným behovým systémom, a o.i. obsahuje nástroje pre: • vstupno/výstupné operácie • prácu s databázami • vytváranie viacvláknových operácií • používanie jazyka XML • zabezpečenie • nachádzajú sa tu aj nástroje nižšej úrovne, ako napr.: • triedy pre prácu s textom • dátové kontajnery • matematické funkcie

  11. Nad základnou knižnicou tried sa nachádzajú špecializované knižnice pre vytváranie grafického používateľského rozhrania (GUI – Graphics User Interface) a pre programovanie webových služieb a ich klientov. • Najvyššiu vrstvu prostredia .NET Framework tvoria prekladače programovacích jazykov. • Kód, ktorý využíva služby prostredia .NET Framework, sa označuje ako riadený kód (managed code), resp. zabezpečený kód (safe code), ktorý popri inštrukciách obsahuje aj tzv. metadáta, čo sú vlastne podrobné informácie o dátových typoch

  12. deklarovaných v tomto kóde. Metadáta umožňujú iným programom získať potrebné informácie o dátových typoch z preložených súborov (takže tu okrem iného odpadá potreba hlavičkových súborov).

  13. Bezpečnosť v operačných systémoch je založená na základe zistenia identity používateľa. Podľa administrátorom pridelených práv sú nasledovne kontrolované všetky prevádzané operácie (napr. manipulácia so súbormi, inštalácie, konfigurácia OS a pod.) • súčasné spôsoby prestávajú vyhovovať - Internet ovplyvňujúci napr. spôsob inštalácie programov, atď. • Súčasné spôsoby riadenia bezpečnosti pri behu programu sú príliš hrubozrnné - snahou bezpečnostného systému je dať programátorovi a administrátorom nástroje pre jemnejšie rozlíšenie riadenia prístupu ku jednotlivým systémovým zdrojom

  14. Microsoft Transaction server pre autorizáciu používateľov zaviedol role (roles), ktoré združujú používateľov s rovnakými privilégiami, úplne nezávisle na ich prítomnosti v rôznych systémových skupinách. Platforma .NET tento spôsob prevzala a rozšírila.

  15. Kontrola bezpečnosti začína vo chvíli, keď je aplikácia zavádzaná do pamäti - vtedy prebiehajú základné overenia prístupu ku zdrojom formou Code Access Security (CAS), zároveň sa zisťuje identita používateľa, ktorá slúži ku riadeniu bezpečnosti pomocou spomenutých rolí. Tieto operácie presahujú hranice procesov a počítačov (ináč môžu vznikať falošné poverenia). CAS a bezpečnosť založenú na roliach (Role-Based Security) su integrované do .NET Framework.

  16. Typy bezpečností na .NET • Typová bezpečnosť • Identita kódu • Prístupová bezpečnosť kódu • Povolenia (Permissions) • Deklaratívne a imperatívne riadenie bezpečnosti • Bezpečnosť založená na roliach (role-based security) • Kryptografické služby

  17. 1. Typová bezpečnosť • typovo bezpečné programy pracujú iba s tou pamäťou, ktorá bola alokovaná pre ich objekty. TB sa v tomto kontexte týka iba bezpečného prístupu k pamäti objektu. • Príklad: Príkladom typovo bezpečného kódu je trieda, ku ktorej súkromným členom sa nedá pristupovať žiadným iným spôsobom - bezpečnosť je garantovaná iba pri prístupe cez rozhranie. • u typovo-bezpečného kódu runtime mechanizmy môžu zaistiť, že nebude pristupovať ku natívnemu kódu, pokiaľ na to nemá špeciálne povolenie.

  18. opačne - pri kóde bez typovej bezpečnosti nič nebráni programátorovi (ani runtime), aby vo svojich funkciách volal neriadený kód. Toto môže spôsobiť závažné chyby v aplikácií, resp. operačnom systéme

  19. 2. Identita kódu (IK) • na .NET aplikáciách sa kód zavádza cez: • 1. Class Loader (bežne spustené aplikácie) • 2. Využíva sa služba Interoperability Service (INTEROP) ktoré sú schopné poskytnúť základné informácie (evidenciu) na základe ktorej môže byť vystavená identita kódu. • Evidencia môže obsahovať aj miesta odkiaľ kód pochádza (Internet site), aké je jeho zdieľané meno, identitu vydávateľa kódu (Publisher’s identity) - na základe týchto informácií môže bezpečnostná politika (security policy) určiť, aké práva budú špecifickej aplikácii (alebo množine aplikácii) pridelené.

  20. 3. Prístupová bezpečnosť kódu • Súčasné riadenie bezpečnosti v operačných systémoch nie je pripravené na napadnutie vírmi, (napr. kód pripojený ku elektronickej pošte), resp. stiahnutie softwaru z Internetu z neidentifikovaných zdrojov, atď. Takéto napadnutie je vysoko pravdepodobné. • .NET Framework sa snaží so svojimi službami doplniť základný bezpečnostný podsystém Windows a znemožniť nekontrolovaný beh

  21. aplikácií z neznámich zdrojov.Tento mechanizmus sa nazýva Prístupová Bezpečnosť kódu (Code Access Security) a • umožňuje nastaviť dôveryhodnoť kódu na požadovanú úroveň (napr. podľa toho odkiaľ kód pochádza, aspekt identity a pod.) • ktoré operácie kód s konkrétnou identitou môže/nesmie vykonávať • obmedziť chovanie vedúce k poškodeniu systémového zdroja

  22. Prístupovú bezpečnosť môžu využívať len typovo-bezpečné aplikácie; k ochrane dochádza aj v prípade, že kód sám neprevádza žiadne volania bezpečnostného API. Aplikácia však musí odosielať požiadavky na overenie bezpečnosti prístupu (napr. formou atribútov).

  23. 4. Povolenia (Permissions) • Common Language Runtime (CLR) umožňuje vykonávať aplikáciám iba tie operácie, pre ktoré má od nich povolenie. Runtime využíva špeciálne objekty - Povolenia (Permissions) - pre implementáciu obmedzení, ktoré sú kladené na riadený kód. Poznámka: o vykonanie riadeného kódu sa stará CLR. Kód ktorý nie je .NET (kód bežných aplikácií pre Windows), alebo kód, ktorý sa zriekne výhod a služieb z CLR nazývame neriadený. • Povolenia sú zoskupované do množín Permissionsets - tieto množiny jednoznačne definujú,

  24. čo všetko je v kóde povolené a čo nie. Typ priradenej množiny povolení je určený evidenciou kódu (code evidence). • Povolenia sú vo väčšine prípadov vyžadované dôverným kódom - napr. triedy zaobaľujúce prácu s lokálnym súborovým systémom. Väčšina aplikácií využíva iba také triedy, ktoré sú súčasťou .NET Framework knižníc a samy nekladú žiadne špecifické požiadavky na konkrétny typ povolenia. • Objektový systém povolení a množín povolení

  25. je na platforme .NET plne rozšíriteľný a ľubovoľná výroba software-u môže definovať svoje vlastné typy využívané v aplikáciách. • Povolenia delíme na • povolenie pre prístup kódu - definuje množinu objektov umožňujúcich chrániť systémové zdroje pred prípadným zneužitím nepovolanou osobou. Sú základným nástrojom .NET Framework runtime v oblasti zaistenia bezpečnosti riadeného kódu. Delia sa na: • práva pre prístup ku chráneným systémovým zdrojom (napr. súbory, systémové premenné) • práva pre spustenie chránených operácií

  26. povolenie identity

  27. 5. Deklaratívne a imperatívne riadenie bezpečnosti • Za behu aplikácie sa automaticky vyhodnocujú bezpečnostné požiadavky. Pri ich splnení - sa pokračuje určeným spôsobom nesplnení - výnimka SecurityException • Požiadavky na kontrolu bezpečnosti sa do aplikácie vkladajú: • Deklaratívnou metódou • Imperatívnou metódou

  28. pri deklaratívnej metóde sú jednotlivým častiam kódu doplnené atribúty. Vyhodnotenie deklaratívne stanovených bezpečnostných požiadaviek sa prevádza • pri zavedení aplikácie • pri jej behu • imperatívna metóda využíva funkčné volanie vo vnútri aplikačného kódu. Výhodou je tu možnosť programovo modifikovať bezpečnostné požiadavky

  29. 6. Bezpečnosť založená na roliach (role-based security) • takáto autorizácia sa často používa vo finančných, alebo obchodných systémoch, ale využívajú sa aj inde. Napr: aplikácia môže napr. postaviť obmedzenie týkajúce sa objemu peňazí pri peňažnej transakcii v závislosti na identite používateľa, alebo na jeho špecifickej roli. Takto bude môcť bežný úradník vykonávať transakcie do 1 000 000, jeho nadriadený do 10 000 000, riaditeľ neobmedzene. • Autorizácia získaná touto formou je v .NET Framework založená na objektoch Principal, ktoré vznikajú na základe informácií o identite používateľa. Identita môže byť založená na základe účtu Windows, alebo úplne oddelená od bezpečnostnej infraštruktúry operačného systému a implementovaná individuálnym spôsobom.

  30. 7. Kryptografické služby • .NET Framework obsahuje množinu kryptografických objektov implementujúcich známe algoritmy (napr. hashovanie, kryptovanie a digitálne podpisy). Tieto objekty sú veľmi často využívané vnútornými službami .NET Framework, ale sú tiež prístupné aj pre aplikačných programátorov. • Na platforme sú konkrétne implementované:

  31. Symetrické(používajú 1 tajný kľúč pre kryptovanie/dekryptovanie) • Asymetrické(používajú 1 súkromný kľúč a 1 verejný kľúč, je tu aj realizácia digitálneho podpisu) • Hashovacie funkcie(mapovanie binárnych reťazcov ľubovoľnej dĺžky na veľmi krátke binárne reťazce - hash value. Tieto metódy sa vnútorne používajú v digitálnych podpisoch a pre zistenie integrity dát)

  32. .NET Framework SDK documentation • http://www.gotdotnet.com/team/student/wintellect/aspnet_tutorial.aspx • http://samples.gotdotnet.com/quickstart/aspplus/ • C# Programmer’s Reference - Security Tutorial • http://support.microsoft.com/default.aspx • http://msdn.microsoft.com/security/securecode/dotnet/default.aspx • http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quicksrart/howto/samples/cryptography/hash/hash.src • http://www.obviex.com/Samples/Encryption.aspx

More Related