tbo 2006 2007 summer


Revision: 1.42
Date: 2007/06/07 02:57:38
Contents
1 Zadania 3
1.1 ZADANIE 1: Piaskownica JavaTM (ang. JavaTM sandbox) (26 luty/2 marca) . . . . . . 3
1.1.1 Ćwiczenie 1 (1 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Ćwiczenie 2 (1 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.3 Ćwiczenie 3 (1 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4 Ćwiczenie 4 (1 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.5 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 ZADANIE 2: JavaTM Authentication and Authorization Service(5 marca/9 marca) . . 4
1.2.1 Ćwiczenie 1 (5 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 ZADANIE 3: Code-Access Security(12 marca/16 marca) . . . . . . . . . . . . . . . . 5
1.3.1 Ćwiczenie 1 (5 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 ZADANIE 4: AppDomain (19 marca/23 marca) . . . . . . . . . . . . . . . . . . . . . 6
1.4.1 Ćwiczenie 1 (5 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 ZADANIE 5: Isolated Storage (26 marca/30 marca) . . . . . . . . . . . . . . . . . . . 7
1.5.1 Ćwiczenie 1 (5 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 ZADANIE 6: Wsparcie Role-Based Security w ASP.NET 2.0 (2 kwietnia/13 kwietnia) 8
1.6.1 Ćwiczenie 1 (7 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 ZADANIE 7: Bardziej zaawansowane wykorzystanie Role-Based Security (16 kwiet-
nia/20 kwietnia) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.1 Ćwiczenie 1 (7 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.8 ZADANIE 8: Authorization Manager (21 maja/25 maja) . . . . . . . . . . . . . . . . 11
1.8.1 Ćwiczenie 1 (12 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
© EDGAR GAOWACKI
CONTENTS 2
1.9 ZADANIE 9: Kryptografia w JavaTM (4 czerwca/8 czerwca) . . . . . . . . . . . . . . . 13
1.9.1 Ćwiczenie 1 (10 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.9.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.10 ZADANIE 10: Kryptografia w Microsoft .NET (11 czerwca/15 czerwca) . . . . . . . . 14
1.10.1 Ćwiczenie 1 (7 pkt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.10.2 Przydatne zródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
© EDGAR GAOWACKI
3
1 Zadania
1.1 ZADANIE 1: Piaskownica JavaTM (ang. JavaTM sandbox) (26 luty/2 marca)
1.1.1 Ćwiczenie 1 (1 pkt)
Napisz aplet, który odczytuje i zapisuje zawartość określonego pliku na dysku oraz wypisuje wszystkie
właściwości (ang. properties) JavaTM Runtime Environment. Spróbuj uruchomić ten aplet i wyko-
rzystać jego funkcje. Dlaczego próba zakończyła się niepowodzeniem? Stwórz ręcznie lub przy pomocy
narzędziapolicytoolplik polityki bezpieczeństwa pozwalający temu apletowi na wykorzystanie jego
funkcjonalności.
1.1.2 Ćwiczenie 2 (1 pkt)
Napisz aplikację o funkcjonalności identycznej z apletem z poprzedniego ćwiczenia. Spróbuj uruchomić
ją z domyślną polityką bezpieczeństwa. Stwórz dwie polityki bezpieczeństwa:
" jedną zabraniającą tej konkretnej aplikacji dostępu do dysku,
" drugą zabraniającą wszystkim aplikacjom oprócz niej dostępu do właściwości JRE.
1.1.3 Ćwiczenie 3 (1 pkt)
Zmodyfikuj aplikację z ćwiczenia 1.1.2 tak, aby przy uruchamianiu sprawdzała przyznane jej uprawnienia
i informowała użytkownika w sytuacji, gdy któreś z uprawnień niezbędnych jej do działania nie zostało
jej przyznane. (PODPOWIEDy: można to zrobić na kilka różnych sposobów)
1.1.4 Ćwiczenie 4 (1 pkt)
Uruchom aplikację z ćwiczenia 1.1.3 korzytając z JavaTM Web Start tworząc w tym celu odpowiedni
deskryptor JavaTM Network Launching Protocol.
1.1.5 Przydatne zródła informacji
" Wykład z TBO
" http://www.javaworld.com/javaworld/jw-12-2000/jw-1215-security.html
" http://www.javaworld.com/channel_content/jw-security-index.shtml
" http://www.devx.com/Java/Article/27962/1954?pf=true
" http://java.sun.com/j2se/1.4.2/docs/guide/security/permissions.html
" http://en.wikipedia.org/wiki/Java_Web_Start
" http://java.sun.com/docs/books/tutorial/deployment/webstart/deploying.html
" http://java.sun.com/products/javawebstart/download-spec.html
" http://java.sun.com/developer/technicalArticles/WebServices/JWS_2/JWS_White_Paper.pdf
© EDGAR GAOWACKI
1.2 ZADANIE 2: JavaTM Authentication and Authorization Service(5 marca/9 marca)
4
1.2 ZADANIE 2: JavaTM Authentication and Authorization Service(5 marca/9 marca)
1.2.1 Ćwiczenie 1 (5 pkt)
Uzupełnij aplikację z ćwiczenia 3 o następujące elementy:
" Moduł uwierzytelnienia użytkownika, pozwalający ustalić jego tożsamość na podstawie dostęp-
nych informacji (np. zestawu login/hasło);
" OdpowiedniÄ… klasÄ™ implementujÄ…cÄ… interfejsjava.security.Principal;
" Odpowiedni plik konfiguracyjny dla Security Managera, wskazujÄ…cy na uwierzytelnienie przy po-
mocy opracowanego modułu jako obowiązkową;
" Klasy, definiujące działania, które powinny wymagać odpowiednich uprawnień (dostęp do pliku
itp.), implementujÄ…ce interfejsjava.security.PrivilegedAction;
" Deklaracje w pliku polityki bezpieczeństwa, pozwalające użytkownikowi na wykonanie określonych
akcji tylko po uwierzytelnieniu. Deklaracje powinny wskazywać użytkownika uprawnionego do
wykonywania danych operacji (ang. principal-based policy file statements);
" Odpowiednie modyfikacje w samej aplikacji, wykorzystujÄ…ce stworzone elementy. Wynikiem
powinna być aplikacja pozwalająca na wykonywanie wybranych czynności tylko pod kontrolą
Security Managera poprawnie uwierzytelnionym użytkownikom.
1.2.2 Przydatne zródła informacji
" Do wykonania ćwiczeń przydatna będzie wiedza zawarta w rozdziałach Authentication i Autho-
rization tutoriala znajdujÄ…cego siÄ™ pod adresem: http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials
UWAGA: tutorial zakłada użycie systemu Kerberos do uwierzytelnienia użytkownika.
© EDGAR GAOWACKI
1.3 ZADANIE 3: Code-Access Security(12 marca/16 marca) 5
1.3 ZADANIE 3: Code-Access Security(12 marca/16 marca)
1.3.1 Ćwiczenie 1 (5 pkt)
Stwórz projekt w .NET, składający się z dwóch Assemblies:
1. Biblioteki, która udostępnia następującą funkcjonalność:
(a) zapis i odczyt zawartości określonego pliku z dysku;
(b) zapis i odczyt pliku z Isolated Storage;
(c) odczyt zawartości jednego z kluczy rejestru systemowego, np.
\\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor
\0\ProcessorNameString
2. Każda z metod powinna być zaimplementowana w dwóch wersjach:
(a) określającej deklaratywnie (przy pomocy atrybutów) wymagane uprawnienia
(b) określającej imperatywnie (przy pomocy metod) wymagane uprawnienia
3. Aplikacji, która wykorzystuje funkcjonalność biblioteki z punktu 1. Powinna umożliwiać wywołanie
każdej z metod tej biblioteki, zarówno w wersji (1) imperatywnej, jak i (2) deklaratywnej Wywołanie
powinno przebiegać wzdłuż całego łańcucha metod, które modyfikują uprawnienia tak, aby pokazać
następujące przypadki:
(a) jedna z metod w łańcuchu wywołań odbiera (DENY) konkretne uprawnienie;
(b) jedna z metod odbiera uprawnienie, druga je bezwarunkowo przyznaje (ASSERT);
(c) żadna z metod nie zabrania wykonania konkretnej operacji;
4. Zweryfikuj działanie projektu
5. Przy pomocy narzędzia .NET Framework Configuration stwórz nowy zestaw uprawnień, który
zabrania Twojej aplikacji wykonania określonej operacji (wykonywanej przez bibliotekę z punktu
1). Operacja ta powinna należeć do  niezabronionych przez łańcuch wywołań w aplikacji z
punktu 3.
1.3.2 Przydatne zródła informacji
Do wykonania ćwiczeń przydatna będzie wiedza zawarta w artykułach:
" http://www.codeproject.c om/dotnet/UB_CAS_NET.asp.
© EDGAR GAOWACKI
1.4 ZADANIE 4: AppDomain (19 marca/23 marca) 6
1.4 ZADANIE 4: AppDomain (19 marca/23 marca)
1.4.1 Ćwiczenie 1 (5 pkt)
Rozszerz bibliotekę z zadania ćwiczenia 5 dodając do niej kontrolkę  w zupełności wystarczy prosta
etykieta (ang. label). Biblioteka powinna żądać następujących uprawnień:
" RequestMinimumdo zapisu i odczytu plików na dysku;
" RequestMinimumdo odczytu danych z rejestru;
" RequestMinimumdo zapisu i odczytu danych z Isolated Storage;
" RequestOptionaldoUIPermission.
Następnie zmodyfikuj swoją aplikację z ćwiczenia 1.3 tak, aby po każdym wciśnięciu przycisku wywołu-
jącego którąkolwiek akcję wykonywane były następujące czynności:
" biblioteka jest Å‚adowana do osobnego AppDomain;
" zestaw odpowiednich uprawnień zostaje przypisany do AppDomain biblioteki;
" odpowiednia operacja jest wywoływana;
" biblioteka zostaje usunięta z pamięci przez usunięcie AppDomain.
Co siÄ™ stanie, gdy bibliotece zostanie odebrane uprawnienieUIPermission?
1.4.2 Przydatne zródła informacji
Do wykonania ćwiczeń przydatna będzie wiedza zawarta w artykułach:
" http://www.west-wind.com/presentations/DynamicCode/DynamicCode.htm
" http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx
© EDGAR GAOWACKI
1.5 ZADANIE 5: Isolated Storage (26 marca/30 marca) 7
1.5 ZADANIE 5: Isolated Storage (26 marca/30 marca)
1.5.1 Ćwiczenie 1 (5 pkt)
Zbuduj dwie prostych aplikacji Windows Forms współdzielące jeden katalog w izolowanym magazynie
danych (ang. isolated storage). Aby tego dokonać musisz stworzyć dwie aplikacje oraz bibliotekę, która
będzie udostępniać odpowiedni zestaw operacji na na zasobach Isolated Storage.
Pierwsza aplikacja (edytor) powinna:
" umożliwiać stworzenie folderu o podanej nazwie we wskazanym przez użytkownika miejscu Iso-
lated Storage (użytkownik powinien podawać ścieżkę relatywną do udostępnionego folderu izolowanego
magazynu);
" umożliwiać stworzenie pliku o podanej nazwie i zawartości we wskazanym przez użytkownika
miejscu Isolated Storage (użytkownik powinien podawać ścieżkę relatywną do udostępnionego
folderu izolowanego magazynu).
Z kolegi druga aplikacja (przeglÄ…darka) powinna odpowiednio:
" wyświetlać zawartość IsolatedStorage lub wybranego folderu w Isolated Storage;
" wyświetlać zawartość wybranego pliku z Isolated Storage;
" wyświetlać ilość miejsca pozostałego w Isolated Storage.
Biblioteka współdzielona przez obydwie wymienione aplikacje powinna:
" udostępniać odpowiedni zestaw metod wywoływanych przez edytor lub/i przeglądarkę  oby-
wdwie aplikacje powinny wykorzystywać bibliotekę w celu uzyskania dostępu do  wspólnego
izolowanego magazynu.
W celu uzyskania kompletu punktów należy:
" dostarczyć obydwie aplikacje: (1) edytor i (2) przeglądarkę, oraz współdzieloną bibliotekę
" ustalić, jakie ustawienia uprawnień do izolowanego magazynu: (1) umożliwiają aplikacjom
współdzielenie danych, oraz z drugiej strony (2) uniemożliwiają tego rodzaju współdziałanie.
© EDGAR GAOWACKI
1.6 ZADANIE 6: Wsparcie Role-Based Security w ASP.NET 2.0 (2 kwietnia/13 kwietnia)
8
1.6 ZADANIE 6: Wsparcie Role-Based Security w ASP.NET 2.0 (2 kwietnia/13 kwiet-
nia)
1.6.1 Ćwiczenie 1 (7 pkt)
Stwórz aplikację ASP.NET 2.0 wykorzystującą wbudowane mechanizmy uwierzytelnienia i autoryzacji
użytkownika. Projekt powinien:
1. Wykorzystywać tryb uwierzytelnieniaForms(nieWindows)  domyślny tryb uwierzytelnienia
można zmienić:
" za pomocą narzędzia ASP.NET Configuration stanowiącego część Visual Studio .NET,
lub
" odpowiednio modyfikując zapisy w plikuweb.configw głównym folderze projektu.
W opisany sposób można również określić role użytkowników aplikacji.
2. Przechowywać katalog użytkowników aplikacji w bazie danych Microsoft SQL Server 2000.
Wspomniany katalog powinien zawierać kilku zdefiniowanych użytkowników wraz z przydzielonymi
im rolami;
3. Zawierać podkatalog ze stroną wyświetlającą nazwę zalogowanego użytkownika (odczytaną pro-
gramowo). Dostęp do tego podkatalogu powinien być ograniczony:
" jedna z ról występujących w aplikacji powinna mieć zabroniony dostęp do jego zawartości;
" podobnie jeden z użytkowników, któremu przypisano role pozwalającymi na dostęp do tego
podkatalogu powinien mieć odebrane do niego uprawnienia.
" użytkownicy, którzy nie przeszli pomyślnie procedury uwierzytelnienia również nie mogą
mieć dostępu do zawartości wspomnianego podkatalogu.
Użytkownik pozbawiony praw dostępu powinien być przekierowany do strony logowania. Strona
powinna też sprawdzać rolę użytkownika (przy pomocyUser.IsInRole)  użytkownik wys-
tępujący w określonej roli powinien dostać dodatkową informację tekstową.
4. Zawierać stronę startową  - powinna ona umożliwiać zalogowanie się oraz stworzenie nowego
użytkownika przy pomocy wbudowanych kontrolek. Dostarczone rozwiązanie powinno zawierać
zarówno kod zródłowy projektu wraz z wszystkimi niezbędnymi plikami, jak i plik bazy danych
zawierający informacje niezbędne do uwierzytelnienia i autoryzacji.
1.6.2 Przydatne zródła informacji
" Beginning ASP.NET 2.0 in C# From Novice to Professional, Apress (rozdziały 18 oraz 19)
" http://weblogs.asp.net/scottgu/archive/2006/02/24/438953.aspx
© EDGAR GAOWACKI
1.7 ZADANIE 7: Bardziej zaawansowane wykorzystanie Role-Based Security (16
kwietnia/20 kwietnia) 9
1.7 ZADANIE 7: Bardziej zaawansowane wykorzystanie Role-Based Security (16 kwiet-
nia/20 kwietnia)
1.7.1 Ćwiczenie 1 (7 pkt)
Stwórz własne rozwiązanie ograniczające dostęp użytkownika do funkcjonalności aplikacji na podstawie
jego uprawnień. Rozwiązanie powinno wykorzystywać mechanizm Role-Based Security dostępny w
.NET Framework.
1. Stwórz własny katalog użytkowników (w postaci pliku XML, bądz bazy danych zarządzanej przez
Microsoft Access albo Microsoft SQL Server) przechowujący informację nt. użytkownikown-
ików oraz ich przynależności do grup. Minimalny zestaw przechowywanych informacji widoczny
jest na (rys. 1). Baza danych użytkowników powinna zawierać dwie grupy: (1)users zwykli
użytkownicy, oraz (2) admins  administratorzy. W bazie powinno znalezć się 4 użytkown-
ików:
(a) User1 członek grupyusers;
(b) Admin1 członek grupyadmins;
(c) Superadmin członek obu grup;
(d) Nogroup nie powinien należeć do żadnej z grup
groups_users groups
users
PK,FK1 user_login PK group_id
PK user_login
PK,FK2 group_id
group_name
user_password
group_description
Figure 1: Przykładowy schemat bazy danych przechowującej informację o użytkownikach aplikacji
2. Stwórz formularz Windows Forms, który posłuży do uwierzytelnienia użytkownika  dostarc-
zone przez użytkownika dane uwierzytelniając (ang. credentials) powinny być zweryfikowane i na
ich podstawie powinien zostać stworzony obiektGenericPrincipalreprezentuący użytkown-
ika w ramach środowiska. Po weryfikacji tożsamości oczom użytkownika powinien ukazać się
interfejs graficzny opisany poniżej.
3. Zmodyfikuj bibliotekę rozwijaną w ramach poprzednich zadań (patrz. 1.3) tak, aby ograniczała
ona dostęp do funkcjonalności na podstawie informacji zawartej w obiektu Principal. Bib-
lioteka powinna używać następująch regul dostępu:
(a) Każdy zalogowany użytkownik może korzystać z Isolated Storage;
(b) Członkowie grupyusersmogą zapisywać i odczytywać pliki z dysku;
(c) Członkowie grupyadminsmogą odczytywać wartość z rejestru;
Weryfikacja uprawnień powinna odbywać się na podstawie klasy PrincipalPermission,
którą można używać zarówno w sposó imperatywny, jak i deklaratywny.
4. Stwórz aplikację korzystającą z biblioteki opisanej powyżej. Formularz uwierzytelniający, bib-
lioteka i aplikacja powinny znajdować się w osobnych komponentach wdrożeniowych (ang. as-
semblies).
© EDGAR GAOWACKI
1.7 ZADANIE 7: Bardziej zaawansowane wykorzystanie Role-Based Security (16
kwietnia/20 kwietnia) 10
1.7.2 Przydatne zródła informacji
" http://www32.brinkster.com/srisamp/netArticles/article_13.htm
" http://www.vbip.com/books/1861007477/chapter_7477_04.asp
" http://www.codeguru.com/Csharp/.NET/net_security/authentication/article.php/c7415/
" http://www.15seconds.com/issue/041208.htm
" http://www.csharphelp.com/archives/archive195.html
© EDGAR GAOWACKI
1.8 ZADANIE 8: Authorization Manager (21 maja/25 maja) 11
1.8 ZADANIE 8: Authorization Manager (21 maja/25 maja)
1.8.1 Ćwiczenie 1 (12 pkt)
Stwórz aplikację Windows Forms, która posłuży jako przykład wykorzystania mechanizmów Autho-
rization Manager. Aplikacja powinna udostępniać interfejs dla dwóch rodzajów użytkowników 
zwykłego użytkownika i kierownika. Funkcjonalność udostępniona zwykłemu użytkownikowi to zgłaszanie
zapotrzebowania na zakup sprzętu. Użytkownik wprowadza nazwę sprzętu oraz jego cenę. Zakup
wartości do 500 EUR jest automatycznie zatwierdzany, powyżej tej kwoty wymagana jest autoryzacja
przez przełożonego reprezentowanego w systemie przez rolę kierownika. Poza autoryzacją zapotrze-
bowania zgłoszonego przez swoich podwładnych, kierownik również może zgłaszać zapotrzebowanie
na zakup (zatwierdzane automatycznie, niezależnie od kwoty).
Aplikacja powinna:
" Udostępniać odpowiedni interfejs użytkownika w zależności od uprawnień, jakie przypisane są
danemu użytkownikowi (warto wykorzystać tu możliwość sprawdzenia uprawnień do wykonania
danej operacji);
" Przechowywać dane o zależnościach służbowych i zapotrzebowaniu na sprzęt w bazie o schemacie
przedstawionym na (rys. 2). Dla ułatwienia zakładamy płaską hierarchię służbową (tylko pracown-
icy i managerowie, emp_manageru kierownika ma wartośćnull). approver_idw nieza-
twierdzonym zamówieniu powinien mieć wartość null, zamówienia zgłoszone przez managerów
powinny mieć tą samą wartość w polachemp_idiapprover_id(identyfikator kierownika);
" Decyzje związane z udzielaniem (lub nie) zezwolenia na poszczególne działania powinny być za-
implementowane przy pomocy mechanizmów Authorization Managera, aplikacja powinna wywoły-
wać odpowiednie metody AzMan.a . żadne decyzje dotyczące uprawnień (w tym weryfikacja
wysokości zamówienia) nie powinny być podejmowane przez aplikację.
Optymalna kolejność działań:
1. Stworzenie aplikacji udostępniającej zadaną funkcjonalność, nie weryfikującej żadnych uprawnień
(tzn. aplikacja powinna umożliwiać zapis i odczyt danych do/z bazy danych). Na tym etapie warto
na formularzu pracownika umieścić jakiś element pozwalający zdecydować, czy zapotrzebowanie
ma być autoryzowane automatycznie, czy pozostawione do decyzji kierownika.
2. Przetestowanie działania zbudowanego rozwiązania.
3. Właściwe skonfigurowanie AzMan i uzupełnienie aplikacji o kod wykorzystujący AzMan.
Miejsca wymagajÄ…ce autoryzacji przez Authorization Manager:
1. Decyzja o automatycznej autoryzacji (lub jej braku) zlecenia złożonego przez pracownika zreali-
zowana w oparciu o regułę biznesową.
2. Decyzja o automatycznej autoryzacji zlecenia złożonego przez kierownika. Możliwe rozwiązania:
(1) stworzenie reguły statycznej reguły lub (2) rozszerzenie BizRule opisanej powyżej.
3. Zezwolenie na wykonanie operacji autoryzacji zakupu przez kierownika: (1) reguła statyczna lub
(2) osobna reguła biznesowa.
© EDGAR GAOWACKI
1.8 ZADANIE 8: Authorization Manager (21 maja/25 maja) 12
Ważne: W zadaniu można wykorzystać mechanizmy autoryzacyjne Microsoft Windows (9x/Me/NT/2000/XP/2003
Server), lub też własne (np. stworzone w poprzednim zadaniu). W wypadku wykorzystania mecha-
nizmów wbudowanych w system operacyjny konieczne będzie założenie przynajmniej 2 kont użytkown-
ików (1 dla pracownika, 1 dla kierownika). Należy pamiętać o powiązaniu nazwy użytkownika z bazą
używaną w zadaniu (poleemp_name).
purchase_reqs
employees
PK preq_id
PK emp_id
preq_name
preq_amount
emp_name
FK1 approver_id
FK1 emp_manager
FK2 emp_id
Figure 2: Schemat bazy danych rejestrującej informację o złożonych zamówieniach z uwzględnieniem
danych osoby: (1) składającej, oraz (2) zatwierdzającej zapotrzebowanie
1.8.2 Przydatne zródła informacji
" http://technet2.microsoft.com/WindowsServer/en/Library/72b55950-86cc-4c7f-8fbf-3063276cd0b61033.mspx?
" http://msdn.microsoft.com/msdnmag/issues/03/11/AuthorizationManager/
" http://pluralsight.com/wiki/default.aspx/Keith.GuideBook/WhatIsAuthorizationManager.html
" http://support.microsoft.com/default.aspx?scid=kb;en-us;324470
" http://dotnetjunkies.com/WebLog/davidb/archive/2005/03/26/61435.aspx
© EDGAR GAOWACKI
1.9 ZADANIE 9: Kryptografia w JavaTM (4 czerwca/8 czerwca) 13
1.9 ZADANIE 9: Kryptografia w JavaTM (4 czerwca/8 czerwca)
1.9.1 Ćwiczenie 1 (10 pkt)
Stwórz aplikację JavaTM, która będzie dostarczać funkcjonalność narzędziakeytooldostarczanego w
ramach JavaTM Runtime Environment rozszerzoną o możliwości: (1) generowania skrótów wiado-
mości, (2) generowania kodu uwierzytelnienia wiadomości, oraz (3) podpisywania danych zapisanych w
pliku.
Twoja aplikacja powinna pozwalać na:
1. Stworzenie nowego klucza i dołączenie go do magazynu kluczy (ang. keystore). Aplikacja powinna
wspierać generowanie zarówno kluczy (1) symetrycznych, jak i (2) asymetryczne, a także ochronę
kluczy prywatnych i tajnych za pomocą hasła;
2. Generowanie wniosków o podpisanie certyfikatu (ang. certification signing requests) w formacie
zgodnym ze standardem PKCS#10 na podstawie kluczy prywatnych przechowywanych w maga-
zynie kluczy;
3. Import podpisanych certyfikatów lub łańcuchów certyfikatów;
4. Generowanie (1) skrótu wiadomości, (2) kodu uwierzytelnienia wiadomości, oraz (3) podpisu
danych przechowywanych w plikach. Osoby bardziej ambitne mogą pokusić się o zapis np.
danych podpisanych w formatach przenośnych jak np. Cryptographic Message Syntax opisanym
w standardzie PKCS#7.
UWAGA: Intefejs programistyczny Java 2 Platform, Standard Edition nie daje możliwośći pod-
pisywania wniosków certyfikacji X.509, konieczne może być zatem (1) wykorzystanie zewnętrznego
narzędzia, np. OpenSSL, badz (2) skorzystanie z funkcjonalności innych dostawców bezpieczeństwa,
np. Bouncy Castle (http://www.bouncycastle.org/).
1.9.2 Przydatne zródła informacji
" http://java.sun.com/docs/books/tutorial/security1.2/
" http://www-106.ibm.com/developerworks/edu/j-dw-javasec1-i.html
" http://www.informit.com/articles/article.asp?p=170967&rl=1
" http://www.developer.com/java/other/article.php/631301
" http://www.developer.com/java/ent/article.php/3105261
" http://www.bouncycastle.org/
" Przykłady wykorzystania dostawcy Bouncy Castle zamieszczone w książce Beginning Cryptog-
raphy with JavaTM dostępne pod adresem: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-
0764596330,descCd-DOWNLOAD.html
© EDGAR GAOWACKI
1.10 ZADANIE 10: Kryptografia w Microsoft .NET (11 czerwca/15 czerwca) 14
1.10 ZADANIE 10: Kryptografia w Microsoft .NET (11 czerwca/15 czerwca)
1.10.1 Ćwiczenie 1 (7 pkt)
Wykorzystaj wspracie dla kryptografii w interfejsie programistycznym udostępnianym przez Microsoft
.NET do zbudowania aplikacji o funkcjonalności zbliżonej tej opisanej w treści zadania 1.9. Zasadnicze
różnice w porównaniu z rozwiązaniem stworzonego w ramach zadania 1.9 będą następujące:
1. do przechowywania par składających się: (1) z klucza prywatny, oraz (2) certyfikatu X.509 ap-
likacja będzie wykorzystywała systemowy magazyn kluczy Microsoft Windows reprezentowany
przez klasęSystem.Security.Cryptography.X509Certificates.X509Store;
2. systemowy magazyn kluczy jest przeznaczony wyłącznie do przechowywania certyfikatów X.509,
którym opcjonalnie mogą towarzyszyć odpowiadające im klucze prywatne. W miejsce funkcjonal-
ności umożliwiającej zapis w magazynie klucza tajnego, aplikacja powinna dawać użytkownikowi
możliwość:
(a) podpisywania oraz tworzenia kopert cyfrowych na podstawie zawartości plików, oraz
(b) utrwalania tak zabezpieczonej treści w postaci (1) dokumentów XML zgodnie ze standar-
dami XML Signature, oraz XML Encryption, a także w formacie (2) tzw. danych pod-
pisanych (ang. signed data), oraz kopert (ang. enveloped data) opisanych w standardzie
PKCS#7.
3. aplikacja będzie pozbawiona możliwości tworzenia wniosków certyfikacji PKCS#10 oraz ich
podpisywania ze względu na brak bezpośredniego wsparcia tej funkcjonalności w interfejsie pro-
gramistycznym Microsoft .NET Framework.
(PODPOWIEDy: Proszę zwrócić uwagę na  nieintuicyjną nazwę klasyX509Certificate2reprezen-
tujÄ…cej faktycznie pozycjÄ™ systemowego magazynu kluczy a nie tylko sam certyfikat X.509  instancja
klasyX509Certificate2może zawierać również klucz prywatny.)
(PODPOWIEDy: Ze względu na brak możliwości tworzenia wniosków certyfikacji oraz ich podpisy-
wania korzystne może okazać się rozszerzenie rozwiązania zadania 1.9 o możliwość eksportu pozycji
klucza do pliku wymiany danych o podmiocie zgodnego z formatem PKCS#12. Zawartość pliku wymi-
any (lub inaczej magazyn) PKCS#12 może być następnie zaimportowana do systemowego magazynu
kluczy m.in. za pomocą Microsoft Internet Explorer. Rozszerzenie dotychczasowej funkcjonalności
aplikacji stworzonej w ramach zadania 1.9 będzie wiązało się ze podniesieniem oceny za to zadanie o
kolejne 2 pkt.)
1.10.2 Przydatne zródła informacji
" http://www.codeguru.pl/article-567.aspx
" http://www.codeproject.com/vb/net/PKSCStandard.asp
" http://msdn.microsoft.com/msdnmag/issues/07/03/NETSecurity/
© EDGAR GAOWACKI


Wyszukiwarka

Podobne podstrony:
Etap rejonowy 2006 2007 arkusz
Etap szkolny 2006 2007
wyklady decyzje inwestycyjne K Marcinek 2006 2007
HONDA 2006 2007 Ridgeline Bed Extender User s Information
Etap rejonowy 2006 2007
egzamin 2006 2007
HONDA 2006 2007 Ridgeline Tonneau cover User s Information
HONDA 2006 2007 Ridgeline Backup Sensor User s Information
Etap rejonowy 2006 2007 arkusz
dydaktyka egzmin 2006 2007
Przykładowe jednostki treningowe TS Polonia Bytom Sezon 2006 2007
Åšmiertelnie absurdalne zebranie edycja 2006 2007
Åšmiertelnie absurdalne zebranie edycja 2006 2007
filologia polska minimum programowe dla studentów MISH 2006 2007
projekty zaoczne 2006 2007
Etap rejonowy 2006 2007 klucz

więcej podobnych podstron