poniedziałek, maja 19, 2008

Sprawa podpisu

E-faktura: jak ją w końcu podpisać? Formatów podpisu dokumntów jest wiele. Najprostszy to taki jaki daje komponent MS Windows CAPICOM - powstaje plik wynikowy, binarny zakodowany jako bin64 ciąg znaków z wbudownym skrótem (attached) lub skrótem przechowywanym w oddzielnym pliku (detached). Pierwszy skutkuje dużym plikiem wynikowym (prawie 3 razy większym od pierwotnego dokumentu) który jest samoweryfikowalny, drugi jest mały (2-3 KB), ale do weryfikacji MUSI byc dostepny dokument orginalny. Jest to tzw. format naturalny, bardzo prymitywny i nie niesący zbyt wiele informacji. CAPICOM pozwala na rozszerzenie w postaci dodania do niego komentarzy.

Inne formaty są bardziej skomplikowane (nie za bardzo, opierają się o format XML) ale przez to bardziej inteligentne.

Jednym z takich formatów jest standard XMLDSIG (XML Signature autorstwa IETF W3C XML-Signature Working Group). Dyrektywa Unii Europejskiem ("Directive 1999/93/EC of the European Parliament and of the Council of 13 December 1999 on a Community framework for electronic signatures" [EU-DIR-ESIG) rozszerzyła ten format do obecnej postaci XAdES (Advanced Electronic Signature). Zamiarem tej specyfikacji jest zapewnienie weryfikacji dokumentu w przypadku sporu między podpisującym dokument a odbiorcą lub weryfikatorem, czyli wsparcie dla naturalnego dażenia EU do biurokracji i produkcji dokumentów.



Format podstawowy:

Formaty rozszerzalne (opcjonalnie stosowane):

XAdES jest promowany przez Unię Europejską oraz MSWiA. Podstawowe odnośniki:
  1. http://www.w3.org/TR/XAdES/
  2. http://pl.wikipedia.org/wiki/XAdES
Dyskusja na temat formatu podpisanego dokumentu (http://prawo.vagla.pl/node/6868). Ustawa dopuszcza trzy formaty "Rozporządzenie Rady Ministrów z 7 sierpnia 2002 r. w sprawie określenia warunków technicznych i organizacyjnych dla kwalifikowanych podmiotów świadczących usługi certyfikacyjne dopuszcza trzy różne formaty podpisu elektronicznego. Są to: format CMS, format oparty o XML oraz format PKCS7. Wymienione formaty nie są ze sobą kompatybilne - każdy z nich ma inną strukturę i jest inaczej kodowany. Oznacza to, iż podpis elektroniczny złożony w jednym formacie nie jest możliwy do odczytania przez oprogramowanie obsługujące inny format." Centra certyfikacyjne widząc powagę sytuacji stara się ujednolicić te formaty - "powołany został nieformalny zespół roboczy, którego zadaniem będzie zaadaptowanie międzynarodowej normy XAdES (ETSI TS 101 903) do potrzeb polskich standardów podpisu elektronicznego."
Dalej "Zmiana treści rozporządzenia z dnia 7 sierpnia 2002 r. polegająca na dopuszczeniu jednego standardu podpisu elektronicznego ostatecznie wyeliminuje groźbę stosowania przez centra certyfikacji różnych niekompatybilnych formatów. Takim jednym formatem mógłby być wskazany powyżej format XAdES. Standard XAdES jest międzynarodowym standardem podpisu elektronicznego przeznaczonym dla dokumentów XML oraz przystosowanym do podpisu weryfikowanego certyfikatami kwalifikowanymi."

Wyciąg z ustawy:

§ 49 ust. 2 pkt 3-5:

§ 49. 2. W siedzibie ministerstwa obsługującego ministra właściwego do spraw gospodarki są udostępniane następujące międzynarodowe normy, standardy, zalecenia, raporty i specyfikacje techniczne:

3) specyfikacja techniczna ETSI TS 101 733 - Electronic Signature Format, wydana przez European Telecommunications Standards Institute;
4) specyfikacja techniczna ETSI TS 101 903 - XML Advanced Electronic Signatures (XAdES), wydana przez European Telecommunications Standards Institute;
5) dokument PKCS#7 Cryptographic Message Syntax Standard, wydany przez RSA Security;


Dopuszczalne formaty

Z powyższego zapisu wynika, że w Polsce do zapisywania podpisu kwalifikowanego są dopuszczone trzy formaty podpisu:

Format Norma
XAdES ETSI TS 101 903
CMS (Cryptographic Message Syntax) ETSI TS 101 733
PKCS#7 PKCS#7


Jak widać wyraźnie sprawą podpisu interesuje się MSWiA co z MF lub MG?

Ważne linki:
  1. http://echelon.pl/podpis/podpis-elektroniczny/2008/projekt-nowelizacji-ustawy-o-podpisie-elektronicznym.html
  2. A jednak można ujednolicić: "Parę miesięcy temu łza mi się w oku zakręciła, kiedy austriackim programem trustDesk bez problemu otwarłem plik z rozszerzeniem P7M (PKCS#7) wygenerowany przez inny austriacki program (A-Trust). Ale moje zdumienie nie miało granic, kiedy taki podobny plik P7M znalazłem na stronie włoskiej agencji CNIPA i... obydwa programy też go otwarły."
  3. Kłopoty z kartą opartą o Javę - http://echelon.pl/podpis/podpis-elektroniczny/2008/klopoty-z-karta-certum.html. Implementacja standardu RSA - http://www.rsa.com/rsalabs/node.asp?id=2133














Według mnie ważne:
  1. Wg ComputerWorld: Asus obiecuje wprowadzenie na rynek we wszystkich płytach głównych wbudowanego systemu Linux, który można wybrać PRZED w trakcie rozruchu BIOS przed startem właściwego systemu operacyjnego. Jest to rzw. embed DeviceVM's Splashtop Linux, startuje w 10 s i posiada Skype, inne komunikatory oraz Firefoxa, ma wbudowane WiFi i niskie zużycie energii. Inicjatywa nosi nazwę "Express gate" i jest podobna do Eee PC.
  2. flummoxing IT -
  3. Nowa wersja OpenOffice 3.0 ma wiele obiecujących cech ale jest ciągle w fazie beta.
  4. Ciekawy artykuł o budowaniu WS w PHP - https://www6.software.ibm.com/developerworks/education/os-eclipse-phpws/os-eclipse-phpws-pdf.pdf - jest to pełnokrwista usługa WS wraz z WSDL.
  5. Tamże - "Wstep do AJAX i prototype" http://www.ibm.com/developerworks/web/library/wa-aj-ajaxpro1/?S_TACT=105AGX54&S_CMP=B0515&ca=dnw-919
  6. MyEclipse - nowa wersja - http://www.myeclipseide.com/module-htmlpages-display-pid-362.html
  7. Tak nawiasem mówiąc VPN służy do dostęp z zewnątrz do zasobów sieciowych wewnątrz firmy.
  8. Ciekawe opracowanie: "10 problemów IT o istnieniu których nawet nie podejrzewałeś" z eweek:
    1. Wyciekanie informacji z sieci WiFi
    2. Nadużywanie zewnętrznych serwisów Internetowych do zadań wewnątrz firmy (komunikatory, aplikacje Google, SaaS)
    3. Należy stosować szyfrowanie danych także wewnątrz sieci lokalnej (zniechęcić potencjalnych podglądaczy)
    4. Poważne zagrożenie stanowią "domorosłe" aplikacje webowe stosujące miecz obusieczny w postaci AJAX
    5. Brak stosowania audytu
    6. Brak zarządzania pamięciami stałymi będącymi w dyspozycji użytkowników
    7. Zapewnienie ciągłego dostępu do sieci lokalnej i Internetu
    8. Małe "niedogodności" przy biurku użytkownika: wolne USB, mało pojemne baterie do notebooków
    9. Brak systemowego podejścia w obsłudze systemów BI (pożenienie technologii z procesami biznesowymi)
    10. Uwaga na prace i rzetelność konsultantów
  9. Opracowanie "Cross-site XMLHttpRequest: Boon or Pandora's Box" (Daniel Rubio) na temat zezwoleniu na korzystanie ze skryptów AJAX do pobierania danych z innych witryn (spoza domeny) - jest projekt W3C na ten temat
  10. Inne informacje o zagrożeniach -XSS (cross-site scripting):
    1. http://searchsoftwarequality.techtarget.com/sDefinition/0,,sid92_gci1003431,00.html
    2. http://ha.ckers.org/xss.html
  11. Dzieci (www.webware.com):
    1. Świetny serwis tłumaczący Google: http://translate.google.com/translate_t?sl=pl&tl=en
    2. Grafika pixelowa: http://www.webware.com/8301-1_109-9945935-2.html
    3. http://www.smashingmagazine.com/2008/05/05/pixels-go-mad-the-celebration-of-pixel-art/
    4. http://www.smashingmagazine.com/2008/03/10/35-fantastic-hdr-pictures/
    5. http://www.smashingmagazine.com/2007/06/20/ajax-javascript-solutions-for-professional-coding/
  12. Dla dorosłych GAE - google application engine

piątek, maja 09, 2008

Ciekawostki webowe

  1. Portal związany z CSharpem - http://www.c-sharpcorner.com
  2. IBM Developer Works -Testowanie aplikacji webowych
    1. Tamże - Przyszłość PHP. Linki do PHP:
  3. Rozdano nagrody Web2 - jeden z laureatów: http://www.ted.com/talks/view/id/194
  4. , niewidocznych technologii:
    1. Unicode - pierwszy raz zastosowano w WIndows NT
    2. Digital singal processing (DSP) - mp3, dvd, cd
    3. Managed code - kod zarządzalny (Java i MS)
    4. Tranzystory - niedługo Intel obiecuje układ scalony (2 mld bramek, 1 T zajmuje 100 atomów)
    5. XML - spopularyzował na szeroką skalę pakiet MS office 2007
    6. NonVolatile RAM - pamięci nieulotne np. w MP3 player
    7. Baterie litowo-jonowe (mniejsze, pojemniejsze i lżejsze niż ołowiowe)
    8. VoIP - rozmowy przez Internet
    9. Akceleratory graficzne (GPU-graphics processing unit) - pod względem mocy oblicz. nie ustępują CPU szczególnie wobliczeniach zmiennoprzecinkowych
    10. Szerokopasmowy dostęp do Internetu - początkowo do video on demand, teraz do wszystkiego (cable lub DSL - digital subscriber line)
  5. SUN - odpowiedzią na RIA (Air, Silverlight) jest JavaFX

sobota, maja 03, 2008

Znowu piszę sobie:

Świetny artykuł na zdnet-cie: o istocie architektury klient - serwer. Po raz pierwszy wymyślił to pojęcie IBM w 1968 i polegał na zbudowaniu potężnej maszyny (mainframe) zawierającej bazy danych (do przechowywanie jej jedynie) i otoczony satelitami - małymi stacjami roboczymi przetwarzającymi dane pobrane z serwera (a więc klient przetwarza - serwer przechowuje). Etapy rozwoju były różne ale zawsze wystepowały dwie strony serwer i klient:

  1. Pierwszą taką realizacją był System 38 oraz System 51xx. Weryfikacja w życiu tej koncepcji okazała się okrutna. Zabrakło narzędzi do serializacji danych zmienianych przez wielu użytkowników naraz. Próbowano ratować sytuacje poprzez blokowanie dostępu przez innych do informacji raz pobranej przez jednego z klientów ale to pogorszyło jeszcze sprawę z uwagi na często występujace blokady oraz opóźnienia w dostepie (zwane później pessimistic buffering).
  2. Dlatego wkrótce IBM przesunął punkt cieżkosci na serwer poprzez instalację na nim interpretera RPG II a klientów sprowadził do roli prostych terminali. Codd był pierwszym (10 lat wczesniej), który zaproponował spojrzenie na aplikacje jako interfejs do danych - "Simple model: business applications are user interfaces to business data". Tak nawiasem mówiąc Codd wymyślił relacyjny model nie dlatego, że były problemy z przechowywanie i dostępem fizycznym do danych (baza IMS oraz pliki w COBOL-u świetnie sobie z tym radziły) ale z ujednoliceniem tego dostępu i wyższym poziomem abstrakcji przy manipulowaniu danymi w bazie. Znaczenie pracy Codd polegało na zmuszeniu dowolnej aplikacji do posługiwania się tym samym interfejsem do danych w bazie. Temu zagadnieniu służy wstępna zasada (zerowa) modelu relacyjnego: dostęp do danych wyłącznie przez współdzielony manager bazy danych. Zaowocowało to pojawieniem się w lipcu 1979 i później dużym sukcesem Systemu 38 wykorzystującym RPG/SystemR/ - w tym projekcie wniósł duży wkład Chen. Było to jakieś rozwiązanie ale przyszły nowe czasy.
  3. Era PC-tów polegała na większej roli klienta. Dane na centralnym serwerze były zmieniane poprzez procedury wbudowane pracujące na bazie serwerowej. Tutaj tez dochodziło do konfliktów ale później na etapie aktualizacji a nie pobierania danych (optimistc blocking). Ale - przeczyło to idei K/S, ze dane były zmieniane u klienta a przechowywane na serwerze

Ten sam problem i rozwój miał miejsce z pojawieniem się Internetu. Początkowo serwer podawał HTML jako porcje informacji w stylu ReadOnly czyli tylko do czytania. Ale wkrótce ludzie wymyślili formularze i zaczęli odsyłać dane do serwera. I znowu pojawił się problem - twrórcy aplikacji znowu nie wiedzieli co się dzieje po stronie klienta. Jest to tzw. "ajaxulation" problem - interakcja pomiędzy lokalnie przechowywanymi danymi w postaci ciasteczek, lokalnie przetwarzanymi skryptami w JS oraz danymi po stronie serwera. Problem łatwego sposobu oszukiwnia serwera co się naprawdę dzieje po stronie klienta. Może to doprowadzić do szeregu poważnych nadużyć.

środa, kwietnia 16, 2008

Przemyślenia:
  1. Po co się męczyć na serwerze i obciążać go niepotrzebną praca skoro każdy klient może sobie zainstalowac PDF creatora lub Primo PDF-a i tworzyć lokalnie dokumenty w PDF (ten pierwszy ma nawet kontrolkę ActiveX fly2pdf do wbudowania tego procesu w programy)

niedziela, kwietnia 06, 2008

Niedziela (pracowita):
  1. Narzędzia dla deweloperów - http://techmagazine.ws/web-developer-toolbox/
  2. Lista linków do API społecznosciowych - http://techmagazine.ws/online-generators/
  3. Tego samego autora:
  4. Starocie z marca:1. http://www.javapassion.com/
    2. http://www.devx.com/xml/Article/28701/0/page/4
    3. http://www.devx.com/getHelpOn/Door/10677
    4. http://java.sun.com/javase/technologies/security/
    5. http://java.sun.com/javase/6/docs/technotes/guides/security/certpath/CertPathProgGuide.html#AppC
    6. http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html
    inebration -
    binge - an occasion for excessive eating or drinking
    sanctimony - a) Feigned piety or righteousness; hypocritical devoutness or high-mindedness, b) A show or expression of feelings or beliefs one does not actually hold or possess: hypocrisy, pharisaism, phoniness, sanctimoniousness, tartuffery, two-facedness. See honest/dishonest.
    7. http://lifehacker.com/371636/turn-your-pc-into-a-dvd-ripping-monster
    8. http://speckyboy.com/2008/03/28/top-12-css-frameworks-and-how-to-understand-them/
    9. http://www.devx.com/getHelpOn/10MinuteSolution/20430 - kompiluj Java przez Gcj
    10. http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/
    Typowe podejscie do danych szyfrowania:
    http://www.devx.com/xml/Article/28701/0/page/3
    =======================================
    byte[] data = "A simple string".getBytes();
    cipher.init(Cipher.ENCRYPT_MODE, key);
    byte[] encryptedBytes = cipher.doFinal(data);
    =======================================
    Managing XML encrypton with Java:
    http://www.devx.com/xml/Article/28701/0/page/1
    http://www.javapassion.com/
    Http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html
    ========================================
    Biblioteka do realizacji SSL http://www.kennethballard.com/Projects/HttpClient/readme-java.html
    SSL proxy - http://www.codeproject.com/KB/java/socksproxy.aspx
    JSSE - http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html
    JScape (platny) - http://www.jscape.com/tutorials.html
    VFP uzywanie siatki danych - http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2972571&SiteID=1
    XML signature w Java - http://javaboutique.internet.com/tutorials/signature/
    Glassfish (marekcoig/Trava16) - http://blogs.sun.com/theaquarium/tags/scripting
    Podpis XML - http://www.aleksey.com/xmlsec/api/xmlsec-examples-sign-template-file.html#XMLSEC-EXAMPLE-SIGN1
    Oficjalny podpis - https://xwss.dev.java.net/source/browse/*checkout*/xwss/xwss-ri/docs/secure_conversation_with_wsit.html#rev1.1
    Oferta Szafir z biblioteką - http://www.kir.com.pl/main.php?p=7084
    Problem - odszyfrowanie danych w .NET zaszyfrowanych w VB 6 - http://www.derkeiler.com/Newsgroups/microsoft.public.dotnet.security/2006-11/msg00057.html
    Autentykacja - http://www.derkeiler.com/Newsgroups/microsoft.public.dotnet.security/2006-11/msg00056.html
    CAPICOM w .NET - http://www.mcse.ms/archive/index.php/t-505180.html
    Ajax for Forms - http://www.ibm.com/developerworks/xml/library/x-ajaxxml9/?S_TACT=105AGX54&S_CMP=B0125&ca=dnw-903
    .NET and Certificate stores - http://www.jensign.com/JavaScience/CapiCert/
    Tutorial w Java - http://home.cogeco.ca/~ve3ll/jatutor7.htm
    Super Java - http://java.net/
    Java i SSL - http://www.javaworld.com/javaforums/showflat.php?Number=7012&page=3
    CAPICOM w C# - http://www.dotnet247.com/247reference/msgs/27/136569.aspx
    Biblioteka do podpisu XMLSec - http://www.aleksey.com/xmlsec/api/xmlsec-examples.html
    Podstawy SOA - http://webservices.xml.com/pub/a/ws/2003/09/30/soa.html
    JavaBoutique - http://javaboutique.internet.com/
    DEVX - www.devx.com
    Manipulacje nad danycmi binarnymi - http://www.dotnet247.com/247reference/articles/0/1536.aspx
    Przegląd namespaces - http://www.dotnet247.com/247reference/namespaces.aspx
    GWT i odnosniki - http://www.regdeveloper.co.uk/2007/12/07/google_gwt_performance/
    Dostawcy w SUN - http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html#SUNProvider
    Ciekawe z forum - http://forums.devx.com/showthread.php?threadid=167172
    Bezpieczenstwo w MS - http://blogs.msdn.com/sdl/archive/2008/02/28/sdl-and-web-2-0.aspx
    Atak - http://blogs.msdn.com/david_leblanc/archive/2008/02/20/dll-preloading-attacks.aspx
  5. Nowości z kwietnia:

wtorek, marca 11, 2008

SUN
Technologie użyte w rozwiązaniu WebSigner Applet - http://rcardon.free.fr/websign/wakka.php?wiki=MainPage:
  1. http://www.keyon.ch/en/Produkte/JavaJCE/JACAPI/index.htm - płatne (kontakt)
  2. http://pheox.com/products/jcapi/ - płatne (1700 Eu)
  3. Dokumentacja do implementacji podpisu przez SUN - http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#SSLTLS
Pobieranie stron HTTP:
  1. http://hc.apache.org/httpclient-3.x/tutorial.html
  2. http://www.innovation.ch/java/HTTPClient/getting_started.html
  3. http://java.sun.com/developer/onlineTraining/
  4. http://rcardon.free.fr/
Szkolenia inne:
  1. http://java.sun.com/developer/onlineTraining/tools/ - UML
  2. Bezpieczeństwo - http://java.sun.com/developer/onlineTraining/Security/
  3. Rozbiegówka - http://java.sun.com/docs/books/tutorial/security/TOC.html
  4. http://java.sun.com/developer/onlineTraining/Security/Fundamentals/Security.html#secSignIE
  5. Nowa wersja - http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#SSLTLS
  6. http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step61
  7. http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJSSEProvider - dostęp do CAPI
  8. Architektura dostawcy - http://java.sun.com/j2se/1.4.2/docs/guide/security/CryptoSpec.html#ProviderArch
  9. Forum msdn - http://forums.microsoft.com/msdn/default.aspx?siteid=1
  10. Ciekawy post - http://www.javaworld.com/javaforums/showflat.php?Cat=2&Number=39181&an=0&page=3
  11. Hi everyone:
    Im using the SunPKCS11 in my Applet application in order to interact with smart card to sign data
    The SunPKCS11 needs as parameter in its constructor a library (".dll in case of windows" or ".so in case of linux"). That´s ok and it´s working fine!
    Im using the dll from the vendor of the smart-card (aetpkss1.dll)

    1- First question: For each kind of reader / smart-card, do i need to specify a diferent library (.dll / .so) ? Is there a generic dll ? How do i know the name of dll installed at the user´s machine ?

    I have been testing CAPICOM too. Everybody knows CAPICOM (Written in VB) interacts with the Windows CryptoAPI (Written in C).
    I have an application working with CAPICOM (at Internet Explorer) to sign data. The application can sign using certificates stored at Smart-Card. However CAPICOM never asked me for a dll or something like that, why ?

    2 - Second question: Does CAPICOM or CryptoAPI knows where is the location of the dll and do it automatically ? or the CAPICOM / CryptoAPI can interact with the smart-card directly ?
  12. Inny - I'm trying to execute a Post request using HTTPS. To achieve that I'm using commons-httpclient v.3.0rc1 and a custom SSLSocketProtocolSocketFactory that can work with untrusted self-signed certificates.
  13. Podpis wykorzystujący CAPI i C++: http://www.codeproject.com/KB/asp/adrian_bacaianu.aspx

poniedziałek, marca 10, 2008

Ciekawostki:
  1. Grisoft wykupił ELP znane ze swego http://reviews.cnet.com/internet-security-and-firewall/linkscanner-pro/4505-3667_7-32329266.html?tag=nefdprod.rev
  2. Inny produkt - Finjan Secure Browsing - http://reviews.cnet.com/internet-security-and-firewall/finjan-securebrowsing/4505-3667_7-32328301.html?tag=prod.txt.1
  3. Powyższe informacje pochodzą z http://www.webware.com/8300-1_109-2.html
  4. SUN interesuje się j. dynamicznymi, po udanej implementacji JRuby, firma próbuje tego samego z JPython. Dlatego zaprosiła do siebie do współpracy dwóch informatyków zajmujących się JPythonem.
  5. http://www.truecrypt.org/
E-faktura atakuje
  1. TP SA proponuje e-fakturę
  2. Sigillum udostępnia aplikacje do:
    1. weryfikacji (darmowa) podpisu pod dokumentem, format: PKCS#7, CMS, Xades
    2. podpisywanie e-dokumentów Sign Pro (wyłącznie swoim klientom)
    3. tenże udostępnia (wyłącznie swoim klientom) aplikacje do weryfikacji dokumentów (pod Linuxem również)
  3. Sigillum oświadczenie o zaprzestaniu wsparcia: W związku z zaprzestaniem od 15 lipca 2006 rozwijania i oferowania wsparcia technicznego przez Microsoft dla systemów Windows 98, Windows 98 SE, Windows Millennium, Windows XP SP1 od 1 stycznia 2007 Sigillum nie oferuje wsparcia technicznego dla rozwiązań PKI opartych na tych systemach.
  4. Sigillum a E-faktura:
    • W nowoczesnym przedsiębiorstwie obieg dokumentów papierowych generuje niepotrzebne koszty i zabiera czas. Rozporządzenie Ministra Finansów z dnia 14 lipca 2005 r. w sprawie wystawiania oraz przesyłania faktur w formie elektronicznej, a także przechowywania oraz udostępniania organowi podatkowemu lub organowi kontroli skarbowej tych faktur (Dz. U. Nr 133, poz. 1119) pozwala na rezygnację ze stosowania tradycyjnych faktur papierowych i przejście na wymianę dokumentów elektronicznych. Korzystając z doświadczeń związanych z przesyłaniem zabezpieczonych dokumentów elektronicznych oraz ze stosowaniem e-podpisu, PWPW uruchomiła projekt e-Faktura.

  1. Komponent techniczny. Sigillum opiera się na sprzęcie do składania podpisu pochodzącym od dwóch dostwaców:
    1. Cryptotech (www.cryptotech.com.pl) tel. (012) 260 9219 - oprogramowanie na karcie: dedykowany, wewnętrzny, certyfikowany system operacyjny firmy Setec SETCOS, wsparcie dla MS Windows 9x*, NT4*, 2000, XP, 2003).
      1. Starszy produkt to Cryptocard PKI, wyciąg z opisu: Mechanizmy zarządzania kluczami i szyfrowania są zlokalizowane na karcie. Karta zarówno generuje klucze, przechowuje je w pamięci, jak również przy ich użyciu szyfruje informacje na zlecenie zewnętrznych aplikacji po weryfikacji kodu PIN użytkownika. Wysoki poziom bezpieczeństwa karty potwierdzony jest odpowiednimi certyfikatami. System operacyjny karty bazuje na systemie certyfikowanym do poziomu ITSEC E3 HIGH lub FIPS 140-1 Level 2, a obecnie jest w trakcie certyfikacji wg standardu Common Criteria EAL4+. Oprogramowanie CryptoCard PKI realizuje standardy PKCS#11 i PKCS #15 oraz zawiera certyfikowany przez firmę Microsoft moduł CSP do pracy w ramach CryptoAPI. Ponieważ interfejsy te wykorzystują standard PC/SC, możliwe jest używanie szerokiej gamy czytników w środowisku Windows. Karta spełnia również wymagania European Digital Signature Law i polskiej Ustawy o podpisie elektronicznym.
      2. Nowsze rozwiązanie: CryptoCard MultiSign wraz z oprogramowaniem do zarządzania kartą elektroniczną CryptoCard Suite aktualna i zalecana wersja 1.20. Nowością jest w dokumentacji wzmianka o wsparcou dla RedHat 9+, Debian i Suse.
      3. Uwaga! W wersji 1.30 będzie pełne wsparcie dla Linuxa!
      4. Dostępne są sterowniki - http://www.cryptotech.com.pl/Pomoc_techniczna/Sterowniki,content.html - uwaga: nie ma sterowników dla systemów nie MS!
    2. Mikroprocesorowa karta ActivIdentity z zestawem apletów ActivCard Digital Identity Applet Suite v2.5 wraz z oprogramowaniem middleware wchodzącym w skład pakietu ActivClient (pojawia się tutaj firma www.sputniksoftware.com 801-886644).
  2. Komponent programistyczny - aplikacje:
    1. Sigillum Sign
    2. Sigillum Sign Pro
    3. PEM-HEART

  1. Na podstawie FAQ ze strony Sugillum:
    1. Zestaw aktów prawnych - http://www.sigillum.pl/sig-cmsws/page/?F;166
    1. Po co LDAP - usługa katalogowa LDAP jest stosowana w celu umożliwienia zainteresowanym osobom dostępu do bazy certyfikatów osób zarejestrowanych w danym urzędzie (np. bazy Sigillum). Dzięki temu dostępowi możliwe jest odnalezienie certyfikatu wybranej osoby (oczywiście o ile znajduje się ona w bazie), a w konsekwencji np. zaszyfrowanie do niej poczty. Katalog LDAP daje też możliwość sprawdzenia, czy dany certyfikat faktycznie został wydany danej osobie przez określone centrum certyfikacji, a w konsekwencji może stanowić dodatkową formę potwierdzenia tożsamości.
    1. Problem - Brak nazwy /nieprawidłowe wyświetlanie pól w Windows 98 - Problem ten pojawia się najczęściej na komputerach z zainstalowanym systemem Windows 98. Niestety, nie ma na ów błąd dobrej rady, bo firma Microsoft nie wspiera już tego systemu i nie publikuje stosownych poprawek. Dopiero systemy operacyjne starsze niż Windows 98 poprawnie obsługują pola certyfikatów.
    1. Co to jest weryfikacja podpisu elektronicznego - Weryfikacja podpisu elektronicznego jest realizowana automatycznie przez oprogramowanie służące do tego celu.

      Obejmuje ona sprawdzenia:

      • czy zawartość dokumentu nie zmieniła się od momentu podpisania
      • czy sam podpis dokumentu jest poprawny
      • czy certyfikat osoby podpisującej jest poprawny i czy nie został odwołany
      • sprawdzenie, czy urząd certyfikacji nie został odwołany.
    1. Termin „wielopodpis” lub „podpis wielokrotny” używany jest w dwóch kontekstach:
      • jako synonim kontrasygnaty, czyli umieszczania wielu różnych podpisów (podpisów elektronicznych różnych osób) pod jednym dokumentem
      • jako możliwość podpisywania na raz wielu dokumentów – czyli podpisywanie tych dokumentów za pomocą pojedynczego wprowadzenia kodu PIN (standardową opcją jest wprowadzanie PIN-u dla każdego podpisywanego dokumentu osobno) – w przypadku korzystania z oprogramowania Sigillum, wielopodpis w tym sensie jest możliwy jedynie przy użyciu programu Sigillum Sign Pro (wersja darmowa oprogramowania – Sigillum Sign – wymaga wpisywania kodu PIN osobno podczas podpisywania każdego dokumentu
    1. Aukcje - Należy sprawdzić, czy komputer spełnia następujące minimalne wymagania:
      • Komputer PC o szybkości minimum 300Mhz, wyposażony w 64MB RAM;
      • system operacyjny Windows 2000 lub wyższy (uruchomienie aukcji na Windows 98 jest teoretycznie możliwe, ale w tym wypadku często pojawiają się błędy);
      • stałe łącze internetowe (aukcje powinny działać również na modemie, jednak w tym przypadku istnieje poważne niebezpieczeństwo zerwania połączenia, a w konsekwencji „wyrzucenie” z aukcji w najbardziej istotnym momencie);
      • przeglądarka Internet Explorer 5.5 bądź wyższa;
      • aplet java pobrany jednorazowo przy pierwszym połączeniu ze stroną (v.1_3_1_06);
      • wyłączona autoryzacja na serwerze proxy;
      • ważny kwalifikowany certyfikat podpisu elektronicznego.

      Dodatkowe wymogi konfiguracji obejmują:

      • włączone uruchamianie apletów ActiveX.

niedziela, marca 09, 2008

Ciekawe linki:
  1. IE7Pro ma debugger FireBug w wersji Lite
  2. Refleksja w Javie czasmi może być pomocna - http://www.onjava.com/pub/a/onjava/2007/03/15/reflections-on-java-reflection.html?page=1
  3. Tworzenie okien modalnych będących jedynie warstwą na stronie - http://jquery.com/demo/thickbox/
  4. Inna wersja - http://livepipe.net/projects/control_modal/
  5. Przykład wykorzystania j. dynamicznych - http://www.javabeat.net/javabeat/java6/articles/2007/06/java-6-0-new-features-part-1/2
  6. Portal Java EE - http://java.sun.com/javaee/community/blogs/?feed=JSC
  7. Tutorial o oknach - http://www.webreference.com/js/tutorial1/final.html
  8. http://p0t.jp/pprompt/
  9. http://openjsan.org/doc/k/ko/komagata/Widget/Dialog/0.01/index.html
  10. http://www.webreference.com/js/column90/
  11. http://www.dhtmlgoodies.com/index.html?whichScript=modal-message
  12. http://www.dynamicdrive.com/dynamicindex8/dhtmlwindow/dhtmlmodal.htm
  13. Wstrzyknięcie dynamiczne javascript-u i css-ów - http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml
  14. Przykłady EXT JS - http://extjs.com/deploy/dev/examples/
  15. marekcoig/t - https://inventory.sun.com/RegistrationWeb/nbgf/thankyou.jsp
  16. http://developers.sun.com/downloads/ - dostęp po zarejestrowaniu wcześniej
  17. Java SE security - http://java.sun.com/javase/technologies/security/
  18. Tutoriale - http://java.sun.com/developer/onlineTraining/
  19. Klasyczne :
    1. dzone
    2. http://dean.edwards.name/my/
    3. http://code.google.com/

piątek, marca 07, 2008

Co z tym IE?

Od niedawna jest dostępna beta wersja IE 8. Co nas czeka? Odpowiedź na to daje Chris Wilson (Internet Explorer platform architect). Nowy IE8 rozpoczął sie od IE7 ponieważ wtedy MS postanowił stworzyć całkowicie od nowy zespół do prac nad przeglądarką (mocno przestarzałą w swej wersji 6.x). W IE 8 położona nacisk na zgodność ze:

  1. standardami:
    1. de facto standardem stron "robionych" pod IE5/IE6 (większość stron w Internecie stworzona dla IE5/IE6)
    2. standardem W3C
    3. poprawkami kosmetycznymi pod kątem podciągnięcia IE (w wersji IE7) do konkurencji
  2. wydajnością w innych przegladarkach
  3. uniwersalności (przeglądarka internetowa jest mocno zintegrowana z Windows poprzez MSHTML) - ma to być solidny motor do przeglądania stron oraz dla deweloperów do wykorzystania w aplikacjach Windows (architektura SaS)

Wilson podkreślił zmianę w swej polityce co oznacza, że wymuszenie aktywacji wyboru standardów (o których mowa wyżej) nie będzie wymagało stosowania specjalnego znacznika HTML (cytat "While it seems a logical shift, especially when considering that Microsoft wants its own online services to work for the growing number of Firefox and Safari users, the move is an about-face from a decision in January in which Wilson explained IE8's standards mode would require a special HTML tag to activate. Microsoft was worried about breaking existing sites designed for IE7's standards mode").

MS odstąpił także od wypuszczania dziennych wersji (nightly built) z uwagi na oszczędzenie nerwów użykowników zwiazanych z ewentualnymi błędami w pracy przeglądarki. Będą wydania Beta (zwykle 3) a potem RC (zwykle 2).

Innym, znamiennym komentarzem jest uwaga: "Wilson also said that IE8 will not be an automatic upgrade for IE7 users, which could lead to headaches for developers who now need to program for three different variants of IE. The primary reason for this, Wilson says, is that Microsoft needs to honor servicing contracts for customers who have built solutions that work specifically with IE7. Such upgrades are a "big challenge" for Microsoft, he explained, because the company has to balance between supporting existing deployments and delivering a better product. IE7 users will likely see a recommendation to upgrade to IE8 through Microsoft Update when the browser is finalized, but it will be optional."

Oznacza to, że jeżeli w systemie klienta jest IE7 to nie będzie wymuszenia automatycznego upgrade'u do IE8, chyba, że zrobi to sam użytkownik. W ten sposób MS chce oszczędzić pracę deweloperów wiążących się z IE7.

poniedziałek, marca 03, 2008

Ciekawe linki z IE:
  1. MS MIX (New Web Now) - http://www.visitmix.com/
  2. WebStandards - http://webstandards.org/ (Edwards Deans)
    1. Rozszerzenie i udoskonalenie DOM - http://dean.edwards.name/weblog/2007/03/yet-another/
  3. CO to jest MVC (wikipedia) - http://en.wikipedia.org/wiki/Model-view-controller
  4. Przykład MVC w JS - http://javascriptmvc.com/
  5. Podpis cyfrowy w środowisku JAVA:
    1. http://www.nakov.com/documents-signing/
    2. http://www.developer.com/security/article.php/3587361
    3. http://www.developer.com/java/web/article.php/3298051

  6. Ciekawe publikacje o fizyce - http://he-cda.wiley.com/WileyCDA/HigherEdMultiTitle.rdr?name=halliday
  7. Nauka ASP.NET - http://quickstarts.asp.net/QuickStartv20/aspnet/
  8. Obsług aSmart Card w C++ - http://www.devarticles.com/c/a/Cplusplus/Writing-a-Smart-Card-Library/
  9. Nowy standard (wolny) podpięcia do usług Windows - JNA - http://www.javaworld.com/javaworld/jw-02-2008/jw-02-opensourcejava-jna.html?nhtje=rn_022808&nladname=022808javaworld'senterprisejavaal
  10. Blogi z MS:
    1. http://blogs.msdn.com/webdevtools/archive/2008/02/09/downloadable-hotfix-performance-and-editor-fixes-for-microsoft-visual-studio-2008-and-visual-web-developer-express-2008.aspx
    2. http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx
  11. Autentykacja w Google - http://code.google.com/apis/accounts/docs/AuthForWebApps.html
  12. Wprowadzenie do LINQ - http://code.msdn.microsoft.com/formsoverlinq
  13. Nauka ASP.NET - http://www.asp.net/
  14. Kanał 8 - http://channel8.msdn.com/ - szukaj podcastów
  15. Google Chart - http://blogs.techrepublic.com.com/programming-and-development/?p=582

sobota, marca 01, 2008

O podpisie (http://www.thescripts.com/forum/thread172238.html), dzięki wyszukiwarce "mahalo"!:

"Digital signatures, uniquely, have the following set ofcharacteristics. The signature is:
a. unique to the signer
b. capable of verification
c. under the signer's sole control
d. linked to the record in such a manner that it can be
determined if any data contained in the record was changed
subsequent to the electronic signature being affixed to
the record
e. and created by a method appropriately reliable for the
purpose for which the electronic signature was used.

Legal Signatures and Electronic Signatures
The American Bar Association (ABA) defines a "legal
signature" as having the following characteristics:

Signer authentication: To provide good evidence of who
participated in a transaction, a signature should indicate
by whom a document or message is signed
and be difficult for any other person to produce without
authorization.

Document authentication: To provide good evidence of the
substance of the transaction, a signature should identify
what is signed, and make it impracticable to
falsify or alter, without detection, either the signed
matter or the signature.

Affirmative act: To serve the ceremonial and approval
functions of a signature, a person should be able to
create a signature to mark an event, indicate approval and
authorization, and establish the sense of having legally
consummated a transaction.

Efficiency: Optimally, a signature and its creation and
verification processes should provide the greatest
possible assurance of authenticity and validity with the
least possible expenditure of resources. (2)"

  • Z MSDN:
    • http://blogs.msdn.com/shawnfa/archive/2004/03/31/105137.aspx
    • http://blogs.msdn.com/shawnfa/archive/2004/01/22/61779.aspx
    • http://blogs.msdn.com/shawnfa/archive/2005/11/03/488807.aspx
    • http://msdn.microsoft.com/msdnmag/issues/04/11/XMLSignatures/


piątek, lutego 29, 2008

Rozwiązanie podpisu cyfrowego w COIG


Wstęp

Analiza SWAT

Generalnie mamy do czynienia z takimi "show stopperami":

  1. Wymagania prawne odnośnie podpisu i wymaganej od aplikacji deklaracji zgodności - nie do końca je znamy, są one dostępne na stronach Sigillum i SputnikSoftware, ale nie wiemy co tak naprawdę jest ważne.
  2. Problem uzyskania zgodności z ustawą...
  3. Proces instalowania podpisu cyfrowego u klienta jest pracochłonny i wymaga zainstalowanie oprogramowania dodatkowego oraz poprawnego skonfigurowania w systemie. Być może nawet pomocy technicznej np. coś w rodzaju naszego "maximo"
  4. Stosowanie klienta Cisco VPN skutecznie wyklucza sprawdzenie ważności certyfikaty z listą CRL (VPN wyłącza dostęp do witryny świadczącej usługi sprawdzenia CRL)
  5. Przeglądarki internetowe nie potrafią w prosty sposób (na poziome zwykłego użytkownika) dostać się do zasobów lokalnych komputera klienckiego
  6. Poza platformą MS Windows brak powszechnego wsparcia implementacji procedur kryptograficznych w postaci zintegrowanych, gotowych do wykorzystania z poziomu systemu operacyjnego a nie wywołań funkcji bibliotecznych komponentów, które uzyskały aprobatę w oczach ustawodawców (mających certyfikaty). Dlatego OpenSSL mimo, że jest wspaniałą biblioteką nie jest gotowa do obsługi.
  7. Brak dostępu do sterowników obsługujących czytniki smart card na naszym rynku w środowisku Unix/Linux (producenci tychże czytników dostarczają sterowników wyłącznie pod Windows)
  8. Brak certyfikatu do podpisywania kodu własnego oprogramowania udostępnianego publicznie klientom (musimy zakupić taki certyfikat aby zwiększyć wiarygodność)
  9. Jak i co podpisywać cały dokument czy jego fragment i jakiego formatu użyć (formaty wykorzystujące XML pozwalają podpisywać fragmenty dokumentów)
  10. Czy używać znakowania czasem, jeżeli tak to jakie rozwiązanie wybrać (opłata czy własny serwer czasu), stowarzyszenie PEMI wyraża chęć pomocy (oni przez pewien czas utrzymywali taki serwer ale nie było zainteresowania)
  11. Wybór systemu operacyjnego użytkownika oraz określenie przeglądarki internetowej
  12. Wybór dostawcy certyfikatu (tzw. urząd certyfikacyjny) w pewnym sensie determinuje sposób obsługi certyfikatu u klienta. Są dwa: Sigillum i Certum
  13. Wybór urządzenia smart cart i karty inteligentnej jeszcze bardziej zawęża wybór rozwiązania tej obsługi. Są dwa rozwiązania. Jedno bazuje na sterownikach PC-SC (dll) drugia na JavaCard (ale mało popularne)
  14. Co wybierze nasz klient, pod tym kątem musimy przygotować oprogramowanie
  15. Wybóry powyższe determinują rozwiązanie obsługi ceryfikatów i podpisu w naszych aplikacjach
  16. Coś za coś - wybrawszy dostawcę możemy liczyć na jego wsparcie i dostajemy dużo narzędzi do instalacji, konfiguracjie, testowania certyfikatów a także aplikacje wspomagające np. CryptoCard Monitor, ale kosztem bardziej skomplikowanej procedury instalacyjnej i konfiguracyjnej
  17. Wsparcie (Sigillum i Certum) polega na dostarczeniu bezpłatnej aplikacji w grubym kliencie do podpisu i weryfikacji dokumentów lokalnych. To niewybrednym klientom wystarcza, resztę załatwiają przy pomocy poczty elektronicznej.
  18. Na szczęście każdy dostawca dostarcza własne biblioteki obsługi oraz sterowniki (czasami odpłatnie) wraz z homologacją
  19. Na nieszczęście każde rozwiązanie jest inne, brak uniwersalnego rozwiązania (czasami zdarzają sie biblioteki uniwersalne - patrz Sigillum)
  20. W MS Windows jest wbudowana obsługa podpisu i certyfikatów poprzez odpowiednio zdefiniowane warstwy
  21. Należy unikać "szarlatańskich" rozwiązań z Internetu, które działają w pewnych tylko przypadkach, choć istnieje pewne prawdopodobieństwo, że przy odrobinie wysiłku można je przystosować i rozwinąć dla własnych potrzeb. Sprawdziłem - prosto jedynie można podpisać gdy certyfikat nie jest na karcie a jedynie w repozytorium Windows
  22. Prawdziwe i pełne oprogramowanie podpisu nie może sie obejść bez głębokiego wniknięcia w programowanie (szczególnie jeżeli chodzi o przygotowanie komponentów) na poziomie Java lub .NET. Dlatego konieczne są szkolenia
  23. Rozwiązania z internetu (każde inne):
    1. http://www.nakov.com/documents-signing/demo/SmartCardSignerApplet-demo.html
    2. http://www.developer.com/java/web/article.php/3298051
    3. http://www.developer.com/security/article.php/11580_3587361_1
    4. http://rcardon.free.fr/
    5. http://www.podpiselektroniczny.pl
    6. http://www.trustedwebservices.org/content/view/48
Można udostępnić całościowe ale hermetyczne rozwiązanie albo wiele różnych wihajstrów do wykorzystania. Oba te rozwiązania są pożyteczne.


Część kliencka podpisu

Do podpisywania (i tylko do tego bo można jeszcze szyfrować) służy bezpieczne urządzanie tj. zestaw: system operacyjny, czytnik smart card/karta inteligentna oraz aplikacja. Miejsce podpisywania - wyłącznie u klienta. Konieczna jest wizualizacja dokumentu przed podpisem. Wszystkie inne funkcje związane z podpisem mogą być realizowane w innym miejscu np. na serwerze. Problem podpisu możemy rozwiązać na dwa sposoby.
  1. Podejście brutalne - wykorzystanie istniejących w systemie Windows uniwersalnych komponentów do obsługi całego (kompletnego) procesu składania i sprawdzania podpisu. Komponenty te można zabudować we własnych aplikacjach. Te komponenty to:
    1. Wbudowany w MS Windows moduł CAPI oraz interface do niego CAPICOM (czyli udostępnienie interfejsu Crypto API poprzez architekturę COM) który zapewnia wszystkie podstawowe funkcje związane z podpisem i sprawdzaniem dokumentu oraz obsługą repozytorium certyfikatów. Dokładnie mówiąć CAPICOM pozwala na "przeźroczystą" obsługę konkretnych urządzeń kryptograficznych dostępnych przez CSP. Jest to dla środowiska MS Windows Client jedyny wbudowany komponent do obsługi podpisu cyfrowego. Dla środowiska Linux / Unix nie ma takiego komponentu, jedynie aplikacje w Javie coś takiego mają. Należy pamiętać, że Microsoft ogłosił plany stopniowego wygaszania wsparcie dla CAPICOM począwszy od systemów operacyjnych po Viscie (ale CAPICOM w Viście jest wspierany, a to dlatego, że całkiem po prostu nie ma jeszcze pełnego wsparcia dla obsługi certyfikatów kwalifikowanych tj. mających zabezpieczone przed pobraniem klucze prywatne - tego jeszcze na platformie .NET nawet w nowej wersji 3.5 nie ma! Sam sprawdziłem, mówi się, że trzeba poczekać na SP1 do Visty. W Viscie jest nowy moduł, zgodny z CAPICOM i nosi nazwę CNG (Cryptography API: Next Generation) - wykorzystuje on nowsze, certyfikowane przez National Security Agency (NSA) algorytmy, jest bezpieczniejszy i szybszy (dzięki wykorzystanie tzw. Elliptic Curve Cryptography). Ale jest jeszcze niedopracowany (czekamy na SP1). Dlatego jedyne na obecną chwilę rozwiązanie w środowisku .NET poza CAPICOM to skorzystanie z dostępnych bibliotek firm dostarczających certyfikaty np. biblioteki Sigillum. Możliwości CAPICOM:
      1. Dostęp do:
        1. Certyfikatu oraz ścieżki certyfikacyjnej
        2. Danych o podpisującym
        3. Danych o wystawcy
        4. Danych o datach ważności informacji
        5. Klucza publicznego
      2. Realizacja podpisu pod dokumentem:
        1. Wbudowanego (tzw. attached, powstaje nowy, znacznie większy o ok. 3 razy dokument, który jest samowystarczalny tj. niesie informację o dokumencie podstawowym, się może być sprawdzony na nienaruszalność danych i zawiera informacje kto, kiedy podpisał
        2. Pomocniczy (tzw. detached, znacznie mniejszy ok. 20-30 KB, do weryfikacji potrzebny jest dokument podstawowy)
      3. Weryfikacji dokumentu - sprawdzenia czy dokument uległ zmianie.
      4. Kopertowanie (envelope) - dodatkowa funkcja szyfrowania danych kluczem publicznym odbiorcy, wtedy tylko odbiorca może dokument odczytać
      5. Brak bardziej zaawansowanych funkcji: znacznika czasu i sprawdzenia (online poprzez OCSP lub pobranej periodycznie listy CRL) czy certyfikat nie został odwołany
    2. Biblioteki zewnętrzne (przykład - zakupiona przez ZA biblioteka Sigillum), realizuje ona wszystko to co ma CAPICOM i ma mnóstwo rozszerzeń m.in. znakowanie czasem, walidacja ważności certyfikatu online (poprzez OCSP), wsparcie certyfikatów innych wystawców, podpis wielokrotny. Zaletą tej biblioteki jest oparcie jej o nowy standard bezpieczeństwa wykorzystujący platformę .NET, będącej podstawą kolejnych edycji MS Windows. Nie rozpoznałem możliwości biblioteki drugiego dostawcy certyfikatów Certum z uwagi na utrudniony dostęp do informacji (znam jedynie cenę biblioteki ok. 7 tyś. zł. W czasie rozmów z przedstawicielami Certum w Katowicach przedstawiono nam warunki dostępu - podpisanie umowy partnerskiej.
  2. Podejście ambitne - stworzenie własnej, uniwersalnej biblioteki co wiąże się z dużymi nakładami. Biblioteka może być rozwijana na platformie MS (wykorzystywać trzeba będzie już chyba nie CAPICOM ale .NET) lub Java na platformie Linux/Unix. W tym ostatnim przypadku brakuje natywnych sterowników do czytników smart card obecnie na rynku no i brak naszego doświadczenia. Probowałem się skontaktować z przedstawcielami SputnikSoftware jedynej w Polsce firmy mającej rozwiązanie pod Linux. Poza rozmowy przez telefon i wysłania im e-maila z zapytaniem o współpracę brak odpowiedzi.


Studium przypadków

Rozwiązania kompleksowe (ale przez to nieco hermetyczne), przetestowane w Portalu AS:
  1. Aplikacja kameleon w "grubym kliencie" implementująca na formularzu komponent webBrowser (silnik IE 6/7) do wyświetlania witryny AS (użytkownik ma całkowite złudzenie, że korzysta z przeglądarki internetowej), która przechwytuje zdarzenia w przeglądarce i obsługuje lokalne zasoby, w tym przypadku czytnik smart card i wszystkie biblioteki (.dll czy .ocx) Windows. Była to wersja I podpisu cyfrowego dokumentów zamówień w Portalu AS. Eksploatowana od 2006 roku. Wynik:
    1. Zalety:
      1. Zero niespodzianek i potrzeb zdobywania nowych "doświadczeń" od strony użytkownika
      2. Doskonała współpraca z urządzaniami peryferyjnymi i komponentami Windows
      3. Bezproblemowa komunikacja z czytnikiem
      4. Bezpieczeństwo - użytkownik ma dostęp do jedynie tych adresów URL na które mu zezwolimy
    2. Wady:
      1. Potrzeba instalacja (użytkownik musi pobrać z witryny i zainstalować u siebie aplikację) chociaż wykorzystywane przeze mnie narzędzie do tworzenia instalacji sprowadza jej proces do bezmyślnego klikania OK),
      2. W jednym przypadku (opcja upoważnień witryna się zawieszała),
      3. Być może do był powód poprzedniego problemu - zła obsługa wielu instancji okien przeglądarkowych
    3. Werdykt - rozwiązanie niezłe, przy odrobinie samozaparcie można problem ten zbadać i albo go usunąć albo znaleźć obejście.
  2. Aplikacja natywna w "grubym kliencie". Jest to rasowa aplikacja wykonana w WinForm w środowisku .NET. Wszystkie kontrolki potrzebujące danych z bazy (np. listy rozwijane, tabele/gridy) są zasilane poprzez technologię AJAX z baz po stronie portalu, czyli aplikacja wszystkie świeże dane ściąga z witryny poprzez prymitywną usługę webową. Dalej jak powyżej, dostęp do wszystkich zasobów lokalnych jest bez ograniczeń. Była to wersja II podpisu cyfrowego dokumentów zamówień w Portalu AS. Eksploatowana od 2007 roku. Wynik:
    1. Zalety:
      1. Doskonała współpraca z zasobami lokalnymi i sieciowymi oraz komponentami Windows
      2. Bezproblemowa komunikacja z czytnikiem
      3. Bezpieczeństwo - pełna kontrola nad użytkownikiem
      4. Zgodność z wymaganiami MS dla aplikacji klienckich
      5. Wykorzystanie biblioteki Sigillum z jej pełnym zestawem możliwości np. realizacja podpisu wielokrotnego
      6. Możliwość łatwego generowania wydruków pod katem użytkownika lub nawet przez użytkownika (dostępny jest generator wydruków)
    2. Wady:
      1. Potrzeba instalacja (użytkownik musi pobrać z witryny i zainstalować u siebie aplikację) chociaż wykorzystywane przeze mnie narzędzie do tworzenia instalacji sprowadza jej proces do bezmyślnego klikania OK. W przypadku .NET ułatwieniem może być automatyczna aktualizacja programu bezpośrednio z witryny Portalu.
      2. Brak pełnej funkcjonalności portalu - udostępnia jedynie jego wąski skrawek, są użytkownicy chcący spojrzeć szerzej na portal - dla nich trzeba by dopisać coś więcej, chociaż z drugiej strony można im udostępnić komponent w innym WinForm komponent webBrowser z rozwiązania nr.1.
    3. Werdykt - rozwiązanie niezłe i jednocześnie nowoczesne udostępniające pełną gamę funkcji związanych z podpisem. Należy nadal rozwijać
  3. Podpis poprzez ActiveX - użytkownik ma możliwość wykonania wszelkich prac związanych ze składaniem podpisu i weryfikacją bezpośrednio w przeglądarce pracując w portalu dziedzinowym. Dostęp do tych funkcji ma poprzez osadzenie na stronie internetowej kontrolki ActiveX (CAPICOM lub Sigillum). Metoda eksploatowana w Portalu AS od 2007 roku w przypadku ok. 15% klientów.
    1. Zalety:
      1. Zero niespodzianek i potrzeb zdobywania nowych "doświadczeń" od strony użytkownika
      2. Przeźroczyste dla użytkownika - nic nie musi instalować
      3. Dostęp z poziomu przeglądarki do wszystkich funkcji jak w przypadku "grubego klienta"
    2. Wady:
      1. Potrzeba zgody użytkownika na zainstalowanie "obcej" kontrolki
      2. Potrzeba skorygowania często niepoprawnie działającej konfiguracji przeglądarki
      3. Potrzeba skonfigurowania poziomu zabezpieczeń przeglądarki aby zezwalała na dostęp do repozytorium certyfikatów i samego czytnika
      4. Trudność dokonania diagnozy i zdalnej konfiguracji w przypadku niedoświadczonych użytkowników
    3. Werdykt - rozwiązanie działa poprawnie w środowisku przeglądarki MS IE i lokalnej sieci gdzie administrator ma kontrolę nad instalacjami
  4. Podpis poprzez applet Java - dostęp do w/w funkcji odbywa się poprzez podpisany zaufanym certyfikatem specjalny applet w języku Java. Komunikacja z czytnikiem wygląda tak:
    1. Strona internetowa przekazuje żądanie do appletu wraz z kluczem do dokumentu źródłowego,
    2. Applet uruchamia i przekazuje ten klucz do komponentu lokalnego (np. dll)
    3. Komponent lokalny (opakowana funkcjonalność CAPICOM lub Sbibiloteki Sigillum w .dll) - który na jego podstawie pobiera z Internetu dokument, podpisuje go i odsyła z powrotem.
    4. Applet jest niewizualny (nie ma interfejsu graficznego) jego zadaniem jest łączenie strony internetowej ze środowiskiem lokalnym.
    5. Rozwiązanie nie wdrożone (działa prototyp).
    6. Wady:
      1. Potrzeba zakupu certyfikatu Authenticode do podpisania appletu
      2. Potrzeba zgody użytkownika na zainstalowanie "obcego" appletu
    7. Zalety:
      1. Otwartość i uniwersalność - działa w każdej przeglądarce
      2. Przeźroczyste dla użytkownika - nic nie musi instalować (no musi zainstalować .dll ale to można zautomatyzować)
    8. Werdykt - rozwiązanie nie gotowe ale o potencjalnie dużych możliwościach

Rozwiązania cząstkowe

Narzędzia do wykorzystania:
  1. Baza danych dla dokumentów źródłowych i podpisanych
  2. Własne biblioteki .dll opakowująca funkcjonalność CAPICOM i Sigillum
  3. Rozwiązanie 1-4 są dostępne do analizy
  4. Pobieranie i sprawdzanie certyfikatu z listami CRL (program w Javie poprzez połączenie z Internetem ściąga plik CRL)
  5. Serwer sprawdzający certyfikat jw ale z wykorzystaniem OCSP i biblioteki Sigillum (usługa webowa na platformie .NET - wymaga MS Windows Server)

Wnioski

  1. Wybór technologii:
    1. Rozwiązania .NET i Java są jeszcze niedojrzałe (brakuje im specjalizacji np. obsługi urządzeń, uwzględnienia specyfiki wymagań podpisu krajowego).
    2. Obiecująco wygląda rozwiązanie oparte o Javę, jest otwarte i ciągle rozwijane poprzez prace środowiska open-source
    3. Rozwiązanie oparte o CAPICOM jest dojrzałe i sprawdzone ale ma dwie wady: nie jest dalej rozwijane przez MS (w jego miejsce ma wejść .NET ale nie jest jeszcze gotowe)
    4. Rozwiązanie zamknięte wykorzystujące biblioteki dostawcy sprzętowego jest chyba na chwilę dzisiejszą najbardziej obiecujące, załatwia wszystkie potrzeby odnośnie podpisu oraz uwzględnia specyfikę krajowego ustawodawstwa. Ale jest mało mało uniwersalne.

czwartek, lutego 28, 2008

Ciekawe linki (ITtoolBox):
  1. Kody odpowiedzi protokołu HTTP - http://wiki.ittoolbox.com/index.php/HTTP_Response_Codes
  2. Nauka (w przystępny sposób HTTP) - http://www.jmarshall.com/easy/http/
  3. Opis (suchy protokołu HTTP) - ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt
  4. Opis HTTPS - http://wiki.ittoolbox.com/index.php/HTTPS

środa, lutego 27, 2008

Bezpieczny podpis (problem - poznanie dokładnych przepisów prawnych) składa się z dwóch elementów:
  1. certyfikatu kwalifikowanego oraz
  2. bezpiecznego urządzenia do składania podpisu
To ostatnie w myśl ustawy składa się z Windows + czytnika + aplikacji.
Ta ostatnia musi mieć deklarację zgodności w której producent stwierdza, że "aplikacja składa i weryfikuje e-podpis zgodnie z wymogami ustawy (chodzi też p poznanie specyfiki weryfikowania podpsiu certyfikatem kwalifikowanym)

poniedziałek, lutego 25, 2008

Nowinki:

  1. Kto wygra a kto straci na otwarciu przez MS swych API ?
  2. Słynny port25 - odpowiedź MS na potzreby otwarcia na open-source
  3. Świetna strona InformIT - zawiera łącza do np. blogów
  4. Mam stronę w MS Space - http://marekw.home.services.spaces.live.com/default.aspx
  5. To czego szukałem - przykład szyfrowania w C pod AIX
  6. Stare ale jare:
    1. http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html
    2. http://webservices.xml.com/pub/a/ws/2001/04/04/soap.html
    3. Kąśliwa historia SOAP i WS-* - http://www.regdeveloper.co.uk/2008/02/20/web_services_vagueness/
    4. Lista osób wnoszących swój wkład w rozwój XML - http://www.tbray.org/ongoing/When/200x/2008/02/10/XML-People
    5. XML-RPC: http://www.xmlrpc.com/
  7. Najsłabsze ogniwo w zabezpieczeniu aplikacji Internetowych (XSS) jest nie polisa Same Origin Policy ale bezpieczne przetwarzanie ciasteczek (cookies). Do ciasteczek obowiązuje te same polisy bezpieczeństwa co HTTP ale ponieważ są one rozszerzeniem tego protokołu to można napostkać pewne trudności. Nie obowiązuje tu ograniczenie tego samego portu (zasada tej samej domeny jest złamana).
  8. Akronym na krótkie komunikaty - I mean rlly trs - to th pnt of bng compltly uslss
  9. O .NET:
    1. Blogger: http://joeon.net/post/2008/02/New-Live-From-Redmond-Webcasts-with-Visual-WebGui.aspx
  10. VisualJQuery - http://visualjquery.com/1.1.2.html
  11. Też świetny o ASPALLIANCE - http://aspalliance.com/1495_Video_Introduction_to_JQuery oraz o pojęciu interfejsu w C#
  12. Budowa i obsługa serwera LDAP w PHP - http://www.regdeveloper.co.uk/2008/02/18/ldap_php/page3.html
  13. XAJAX i PHP - http://www.regdeveloper.co.uk/2007/11/20/creating_jsf_portlets/ - wszystko po to aby wyeliminować problematyczny komponent XMLHttpRequest
  14. Tutorial do SliverLight - (http://silverlight.net/quickstarts/silverlight10/default.aspx) i tu: http://www.regdeveloper.co.uk/2007/11/05/get_started_with_silverlight/
  15. Tutorial do:
    1. WS przez MS - http://quickstarts.asp.net/QuickStartv20/webservices/doc/UseDefaultCredentials.aspx
    2. .NET - http://quickstarts.asp.net/QuickStartv20/aspnet/

Programy antywirusowe:

Jak wiadomo są też bezpłatne. Na uwagę zasługują dwa: AVG Antivir Grisoft (teraz nosi nazwę AVG Technologies) oraz Spy Doctor PC Tools. Oba mają wersje bezpłatne (są i płatne też). Charakteryzują się tym, że próbują przyciągnąć użytkowników nie jakością swoich motorów ale pełnością usług tj. grupują w sobie więcej funkcji np. antywirus z antyspyware.

Uwaga: póżniej odkryłem inną firmę mającą dosyć szeroką ofertę oprogramowania ant- od wirusowego przez spamowy i rooktkowy aż po zaporę ogniową i to wszystko za darmo. Jest to Comodo. Dodoatkowo mają też program do weryfikacji stron.

Kapitalny artykuł na temat firewall - Comodo Firewall najskuteczniejszy.

niedziela, lutego 24, 2008

Ciekawostki z betanews:

  1. EMC kupiło firmę PI, co to oznacza? Szefem będzie były prac. (członek rady nadzorczej MS) - bezlitosny dla konkurencji. To on jest autorem powiedzenie charakteryzującego strategię MS - "embrace, extend, extinguish", to on chciał podciąć nogi Netscapowi 'cut off their air supply', to on związał Windows 95 z MS-DOS po to by wykończyć DR-DOS. Prawdziwy doctor evil. Jego firma ma się zająć "cloud computing", podobne produkty ma MS w grupie Live. Ale ta inicjatywa opiera się na idei multi-taskingu tzn. wraz ze zmianą zadania dostaje się wszystkie artefakty zwiazane z nim (nie trzeba sobie szukać, czy komponować niezbędne obiekty/informacje zwiazane z tym aktualnym zadaniem/projektem) tzw. task tracer. Idea bazuje na pracy dwóch naukowców z Oregon (Oregon State University named Dr. John Herlocker and Dr. Tom Dietterich, the latter of whom served as president of the International Machine Learning Association.)
  2. Toshiba kończy rozwój HD DVD. To może być też jej koniec. Chyba, że... No właśnie, analitycy proponują, żeby uchronić się przed procesami sądowymi wytoczonymi przez poddostawców części do urządzeń Toshiby, firma wypuściła hybrydę, urządzenie obsługujące oba formaty (ten drugi to Blue - SONY).
  3. Wine - umożliwia uruchamianie aplikacji MS Windows pod Unix/Linux, pytanie czy aplikacje w .NET też? Inne pytanie - czy można swoje aplikacje skompilować i w ten sposób uruchamiać w środowisku Linux? Co ze wsparciem na poziomie deweloperskim dla .NET? Jeżeli jest to projekt Mono ma kłopoty, przynajmniej w części nie wymagającej IIS.
  4. Konowania MS - nie wiadomo tak naprawdę dlaczego, ale ok 21 MS ogłosił udostępnienie swoich API do najnpwszych wersji swoich aplikacji dla wszystkich i to za darmo. Płacić należy jedynie za te rzeczy, które są opatentowane (lista patentów jest dostępna, opłata za korzystanie z nich też jest udostępniona i jest całkiem dostępna)

piątek, lutego 22, 2008

Bezpieczeństwo - ciąg dalszy:

  1. Kapitalny artykuł na temat zabezpieczenia SSL stron na IIS - http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx czytamy:

    A few last SSL related notes:

    • The IIS 7.0 admin tool has an "SSL Settings" node that you can select for each site, directory or file that allows you to control whether that particular resource (and by default its children) requires an SSL request in order to execute. This is useful for pages like a login.aspx page, where you want to guarantee that users can only enter their credentials when they are posting via an encrypted channel. If you configure the login.aspx page to require SSL, IIS 7.0 will block browsers from accessing it unless they are doing so over SSL.
    • Within an ASP.NET page or handler, you can programmatically check whether the current request is using SSL by checking the Request.IsSecure property (it will return "true" if the incoming browser request is over SSL).
    • You can set the "requireSSL" attribute on the <forms> configuration section within web.config files to have ASP.NET's forms-authentication system ensure that forms-authentication cookies are only set and used on SSL enabled pages and URLs. This avoids the risk of a hacker trying to intercept the authentication cookie on a non-SSL secured page, and then trying to use a "replay attack" from a different machine to impersonate a user.
  2. Zasoby książkowe oraz bezpłatny hosting na: http://aspnet.codeguru.pl/ksiazki.htm
  3. Strona MVP - Windows: http://www.visualwin.com/
  4. Jak to się robi strony w MVC pod .NET - http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx
  5. LINQ dodawanie/usuwanie/aktualizacja tabel - http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx a nawet:
  6. Jak to się robi - LINQ: http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx
  7. Jak wystartować w ASP - http://www.asp.net/get-started/
  8. Całkiem start w ASP:
    1. http://www.asp.net/
    2. http://msdn2.microsoft.com/en-us/asp.net/default.aspx
    3. http://joeon.net/post/2008/02/New-Live-From-Redmond-Webcasts-with-Visual-WebGui.aspx
    4. http://msdn2.microsoft.com/en-us/sqlserver/aa336346.aspx
    5. http://msdn2.microsoft.com/pl-pl/beginner/bb308760(en-us).aspx
    6. http://msdn2.microsoft.com/pl-pl/security/bb896640(en-us).aspx
    7. http://www.ajaxonomy.com/2008/security/ajax-security
    8. http://blogs.msdn.com/webdevtools/
    9. http://code.google.com/apis/accounts/docs/AuthForWebApps.html

środa, lutego 20, 2008

Podpis cyfrowy

  1. http://www.asp.net/learn/security/?lang=cs
  2. Przykład weryfikacji podpisu XML - http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002AprJun/0006.html wraz z przykładami
  3. Inny on-line weryfikator - http://www.aleksey.com/xmlsec/xmldsig-verifier.html
  4. Współpraca różnych narzędzi do podpisywania - http://www.w3.org/Signature/2001/04/05-xmldsig-interop.html

Ciekaw strony:

  1. SideJacking - b. niebezpieczne zagrożenie wytypowane w pierwszej 5 zagrożeń 2007. Witryny zwykle szyfrują dane poufne, ale wysyłają "session-id" danej sesji w jawnym tekscie. Trzeba dokładnie poznać "zakamarki" protokołu HTTP/HTTPs oraz narzędzia Wireshark oraz Mozilla cookie editor. Ten obiekt jest przesłany w:
    1. URL jako losowo wybrane dane
    2. jako HTTP cookie, ciasteczka są wysyłane za każdym razem do serwera(chyba, że są zaznaczone jako prywatne)

Hacker może podejrzeć session-id i uzyskać dostęp do konta i np. odczytać zawartość poczty .

  1. Więcej na te tematy - http://blog.icir.org/2008/02/sidejacking-forced-sidejacking-and.html
  2. Uwaga: ciasteczka mogą być zaznaczone jako secure ) GX - wtedy należy stosować SSL (wymuszony jest)

Zasoby środowe:
  1. Ciekawy skrót (z ciekawego bloga):
    1. Things That Get People Excited (let's call them TTGPEs)
    2. KISS
    3. WIL (well I like it)
    4. WMSDT (well Microsoft do that)
    5. Duże ma też znaczenie też podejście "appeal to authority" (np Stefan and Mark Baker są autorytetami od REST)
  2. Trwa walka w standardzie usług webowych - REST (google) lub SOA (MS/IBM)
  3. Inny blog z BEA
  4. Quercus - cyrk na kółkach czyli PHP napisany w czystej Javie
  5. Przyjrzyj się tytanom VFP (Hsia i Rick) + ten rosyjski serwer o VFP.ru
  6. Świetny serwer cytatów (np. Einsteina)
  7. Serwer informacyjny - http://www.it-director.com/
  8. Przy tworzeniu i projektowaniu oprogramowania należy pamiętać o F. Brooks. Czyta to się jak Biblię "wszyscy to znają i czytają ale nikt nie przestrzega...". Są też tam idee spowalniające projekt np. "syndrom drugiego systemu", "mityczne pojęcie człowieko-miesiąca" (nie sumuje się wydajność od zatrudnienia większej ilości osób), "zamiast używania wielu wyspec. narzędzi lepiej używać jednego ale z wieloma dodatkami" , "zespół naczelnego chirurga" (wykonuje on najtrudniejszą część operacji, resztę kończą jego pomocnicy)....
  9. Super historia o Początkach technologii AJAX, która powstała w MS -Alex Hopmann
  10. Bezpieczeństwo - AJAX (a w zasadzie XMLHttpRequest) podlega zasadzie "ograniczenie dostęp do zasobów tej samej domeny" (same origin policy). Można to łatwo obejść ponieważ dostęp do dwóch innych zasobów w przeglądarce nie podlegają tym restrykcją (polityce bezp.). Mowa oczywiście o skryptach i obrazkach. I tu tkwi główne niebezpieczeństwo protokołu HTTP. Z drugiej strony mamy rozproszoną architekturę korporacyjną SOA tzn. wywołanie zdalnych procedur (usług). Często do realizacji usług webowych (WS) wykorzystuje się SOAP, i to działa. Ale w przypadku przeglądarki i lekkiego klienta to jest za ciężkie. Dlatego w architekturze Web 2.0 stosuje się lekki protokół REST. Oferuje on przejrzysty model REST budowanie usług webwych w oparciu o specjalnie zdefiniowany adres do zasobów podawanych w adresie HTTP w zwykłej przeglądarce. Zasada działania REST opiera się o trzy reguły:
    1. Usługa REST wyraża się poprzez URL np. jako adres - http://bea.com/content/getArticles?author=joe
    2. Trzeba podać operację (poprzez żądanie HTTP):
      1. GET odczyt,
      2. POST zapis,
      3. PUT aktualizacja
      4. DELETE usunięcie
    3. Zwracane są dane w formacie XML / JSON
  11. REST ma operacje takie same jak DML w standardzie SQL czyli jest to kolejny dowód na pożyteczność takiego podejścia
  12. Zasoby z powyższego serwisu (http://dev2dev.bea.com/pub/a/2007/05/google-mashups.html):
    1. http://dev2dev.bea.com/pub/a/2005/08/ajax_introduction.html
    2. http://dev2dev.bea.com/pub/a/2007/02/introduction-json.html
  13. Inny problem - dostęp do bazy danych w językach programowania. Nowoczesne języki obiektowe (a nawet dynamiczne jak Python) wymagają ścisłego typowania danych. Powoduje to problemy przy dostępie do danych w bazach relacyjnych i przesyłania ich do pól w językach programowania. Najczęściej wymagane jest mapowanie. I tutaj pojawiają się problemy jakimi narzedziami to opisać. Wyróżniamy generalnie dwa sposoby:
    1. Natywny
      1. zaszłościowy:
        1. przykładowo jak języki 4GL np. Informix 4GL (pożyteczne jest w nim odwzorowanie klasycznego problemu ORM z którym borykają się języki obiektowe np. Java czy C# struktur danych w rekordzie z bazy czy tabeli w pola i struktury w programie - DEFINE ... LIKE)
        2. VFP bardzo nowocześnie, dodatkowo istnieją funkcje do przejścia z bazy to XML (CURSORTOXML) i na odwrót (XMLTOCURSOR)
      2. nowoczesny poprzez ORM - Java Hibernate
      3. nowocześniejszy - poprzez LINQ w C# (wady: działa z natwynym MS SQL Serverem i brak mu automatu do adnotacji/translacji klas - trzeba to robić zewnętzrnym 'sqlmetal' na piechotę)
    2. Inny - np. obudowanie w specjalny wrapper składnie języka SQL jak to ma miejsce w dostępie ADO (ASP) czy ADODB (PHP), ale dane wysyłane i odbierane jako tekst, są też problemy z danymi binarnymi np. pochodzącymi z BLOB-ów.

wtorek, lutego 19, 2008

Zasoby Google API na poważnie:

  1. Strona rozbiegowa z wieloma łączami do API
  2. API w Pythonie - http://pygoogle.sourceforge.net/
  3. Strona główna koderów Google - http://code.google.com/
  4. UrbanMonk - jak przetrwać w chaosie - http://www.urbanmonk.net/258/change-your-thoughts-and-change-your-life-the-art-of-cognitive-reframing/

Inne:

  1. MVC w wiki
  2. Bezpieczeństwo w AJAX - http://www.ajaxonomy.com/2008/security/ajax-security

Zasoby do MS SQL Server Express -strona główna

Paltforma .NET:

  1. Blog dla twórców .NET
  2. Nauka .NET dla początkujących
  3. Oficjalna strona .NET w MS
  4. My learning track - ścieżka edukacyjna MS dla deweloperów

Kapitalne zasoby z IBM

  1. "Popularny Quiz 20 pytan" http://www.ibm.com/developerworks/xml/library/x-e4xpart1/?S_TACT=105AGX54&S_CMP=B0215&ca=dnw-906 - korzysta z EX4 (niestety)
  2. Super zasoby z tego artykułu:
    1. Live sample application: See and try the finished Twenty Questions application for this article.
    2. E4X specification (PDF file, 1.81 MB): Read the official syntax and semantics for ECMAScript for XML, a set of programming language extensions that add native XML support to ECMAScript.
    3. Ajax and scripting Web Services with E4X (Paul Fremantle and Anthony Elder, developerWorks, April 2005): In this article, find a more complex example of E4X and JavaScript combined to initiate Web services requests.
    4. Sample knowledge base: Download the latest version of the knowledge base the Twenty Questions application.
    5. 20q.net: Try a real implementation of Twenty Questions using a neural net.
    6. The Game of Twenty Questions: Learn strategies for playing Twenty Questions with humans.
    7. Binary search algorithm: On Wikipedia, learn more about this technique to find a particular value in a sorted list.
    8. Tutorial: Build apps using Asynchronous JavaScript with XML (Naveen Balani and Rajeev Hathi, developerWorks, November 2005): Learn to develop and design Web applications based on Asynchronous JavaScript with XML, or Ajax.
    9. Ajax and XML: Five Ajax anti-patterns (Jack Herrington, developerWorks, March 2007): Learn which common practices of Ajax coding to avoid in this article.
    10. Ajax and XML: Five common Ajax patterns (Jack Herrington, developerWorks, March 2007): Look at five common Ajax design patterns that you can use as a basis for your own work.
    11. Ajax for Java developers: Build dynamic Java applications (Philip McArthy, developerWorks, September 2005): Dig into this five-part series that introduces a groundbreaking approach to creating dynamic Web application experiences using Ajax.
    12. IBM XML certification: Find out how you can become an IBM-Certified Developer in XML and related technologies.
    13. XML technical library: See the developerWorks XML Zone for a wide range of technical articles and tips, tutorials, standards, and IBM Redbooks.
    14. developerWorks technical events and webcasts: Stay current with technology in these sessions.
    15. The technology bookstore: Browse for books on these and other technical topics
  3. http://www.ibm.com/vrm/newsletter_10731_2755_61225_email_DYN_5IN/urg35457530