Archive for the ‘CAPICOM’ Category

Certyfikaty i bezpieczeństwo w .NET   Leave a comment

Autor: Alejandro Campos Magencio. Bardzo ciekawy blog na temat bezpieczeństwo i certyfkatów (od strony technicznej) – alejacma. Lub artykuł jak wykryć certyfikaty na karcie (i je wylistować) – http://blogs.msdn.com/b/alejacma/archive/2010/12/15/how-to-enumerate-all-certificates-on-a-smart-card-powershell.aspx. Niedostatki funkcjonalności bibliotek .NET wynikają z tego, że są owijką do natywnych bibliotek MS CryptoAPI, a one potrafią nie za dużo. O ile w Javie jest już znaczny postęp w implementacji algorytmów bezpieczeństwo o tyle w .NET temat ten jest potraktowany po macoszemu i trzeba się uciekać do bibliotrk typu Bouncy Castle lub Bonnie.

Wykorzystanie WebRequest przy walidacji podpisu – http://blogs.msdn.com/b/mattlind/archive/2006/10/10/validating-xml-digital-signatures-with-references-using-unrecognized-uri-prefixes.aspx poprzez przeciążenie HTTPWebReq (tam jest przykład http://support.microsoft.com/kb/812409/EN-US/. Inny przykład to sprawdzenie certyfikatu – http://blogs.msdn.com/b/alejacma/archive/2009/12/02/httpwebclientprotocol-clientcertificates-and-pfx-files.aspx

Ważne kanały informacyjne do nauki .NET (C#):

  1. Channel 9
  2. How do I … video – http://windowsclient.net/learn/videos.aspx
  3. MS nuggtes – szukaj screencasty od Mike Taulty
  4. All-in-One code

Jak wykorzystać certyfikat użytkownika do uwierzytelnienia sesji – http://msdn.microsoft.com/en-us/library/system.web.services.protocols.httpwebclientprotocol.clientcertificates.aspx – z artykułu – http://blogs.msdn.com/b/alejacma/archive/2009/12/02/httpwebclientprotocol-clientcertificates-and-pfx-files.aspx – wniosek taki, certyfikat i tak musi być w repozytorium windows.

Posted 31 października 2011 by marekwmsdn in .NET, C#, CAPICOM

Sprawa certyfikatów   Leave a comment

Certyfikatów jest wiele, m.in. komercyjny i kwalifikowany. W Polsce inne rodzaje certyfikatów są mało popularne no chyba jeszcze certyfikat na serwer internetowy i SSL. U nas z certyfikatów najczęściej korzystają PRZEDSTAWICIELE firm. Ciekawa sprawa, jeżeli ktoś dostał od firmy certyfikat kwalifikowany to nigdzie nie jest napisane, że nie może się nim posługiwać prywatnie (JEST on wystawiony na OSOBĘ). Taki certyfikat z nazwiskiem jego posiadacza jest jego niejako elektronicznym dowodem osobistym. To, że ma tam gdzieś nazwę firmy oznacza, że kiedyś w niej pracował – zresztą miejsce pracy nie jest takie ważne, dzisaj tu, jutro tam – chyba, że firma taki certyfikat unieważni. Zresztą wypróbowana praktyka w dokumentach papierowych jest taka, że podaje się dane osób UPOWAŻNIONYCH lub PRZEDSTAWICIELI do składania podpisu. Podpisując dokument z nazwiskiem osoby upoważnionej pozwala sprawdzić czy ona właśnie podpisała ten dokument elektroniczne – to taki double-check.

Dla firm trudno raczej certyfikat uzyskać, kwalifikowany jest dla osób fizycznych tylko. Co robić? Można wystosować zapytanie do naszych trzech wystawców certyfikatów lub zwrócić się do uznanych firm zagranicznych jak Thawte lub Verisign (lub mniej znanych jak GlobalSign a na pewno nie do DigiNor – ta firma po skandalu z wyciekiem certyfiaktów i brakiem należytej kontroli nad procesem obsługi życia certyfikatu słusznie zresztą upadła). Poszukałem trochę w sieci – CERTUM daje certyfikat niekwalifikowany, podobnie KIR, inna definicja niezależna. Ale chyba najlepiej precyzuje różnice między tymi dwoma certyfiaktami stowarzyszenie PEMI:

  • certyfikat kwalifikowany może być używany jedynie do składania/weryfikacji podpisu elektronicznego. Ustawa zabrania używania go do innych celów takich jak logowanie, szyfrowanie. Certyfikaty kwalifikowane mogą być używane tylko z „bezpiecznymi aplikacjami” czyli takimi które posiadają oświadczenie producenta o zgodności z wymogami ustawy o podpisie elektronicznym
  • certyfikaty niekwalifikowane nie posiadają ograniczeń pod względem ich użytecznośc
  • certyfikaty niekwalifikowane mogą być przechowywane na komputerze użytkownika lub na urządzeniu kryptograficznym (karta mikroprocesorowa, etoken itp). Użytkownik ma pełna swobodę w wyborze nośnika certyfikatu
  • podpis elektroniczny weryfikowany przy pomocy certyfikatu niekwalifikowanego wywołuje skutki prawne podpisu odręcznego jeśli obie strony zawarły wcześniej umowę. W umowie powinny być zawarte zapisy o wzajemnym uznaniu podpisów weryfikowanych przy pomocy certyfikatów niekwalifikowanych
  • certyfikaty niekwalifikowane mogą wydawać Centra Certyfikacji niekwalifikowane i kwalifikowane
  • skutki prawne –  jeśli obie strony (wymieniające podpisane elektronicznie dokumenty) zawarły wcześniej umowę. W umowie (tak zwanej komunikacyjnej) powinny być zawarte zapisy o wzajemnym uznaniu podpisów weryfikowanych przy pomocy certyfikatów niekwalifikowanych oraz identyfikatory tych certyfikatów np. „nr seryjny”

PEMI jest na tyle “dobre”, że oferuje przedsiębiorcom usługę pod nazwą e-Firma (raczej ją mgliście przedstawia) ale daje certyfiakty min do podpisywania kodu. Wszystko za darmo. Podpis elektroniczny w Polsce wg. PEMI:

    • Centra kwalifikowane:
      – PWPW Sigillum
      – TP Internet Signet (zawieszona działalność)
      – KIR
      – Unizeto Certum
    • Centra niekwalifikowane:
      – Polcert
      – Energocert
      – PCC EuroPKI

Podobne szerokie kompendium wiedzy na temat podpisu jest tu na stronach IPSEC.

Inna sprawa to wykorzystanie certyfiaktów do podpisywania kodu. Microsoft zawiera szereg programów wspierających ten proces – opis code signing jest tu. Ich lista znajduje się tu i można je pobrać ze strony Windows SDK (trzeba je ściągnąć), wsród nich jest signtool do podpisywania kodu certyfikatami. Innym poleceniem jest certmgr. Uwaga – ten polecenia certmgr.exe i inne wykonywać w katalogu z SDK (c:\program files\microsoft SDKs\Windows\v7.0A\bin)! W przeciwnym wypadku pojawi się wersja przystawkowa (msc). Certmgr.exe jest ważna ponieważ pozwala zarządzać CRL – tutaj na MSDN mamy opis. Powyższe programy wchodzą w skład “miękkiej” części Windows Client (klienckiej) – narzędzi do tworzenia oprogramowania. Z kolei z innej bajki jest równie pomocne polecenie certutil. Wchodzi w skład Serwera Windows 200X (a dokładnie jego komponentu tzw. Certificate Services) – a więc jest skierowane dla administratorów. Zarówno certutil jak i certmgr pozwalają na zarządzanie CRL (najbardziej interesujące jest odszyfrowanie formatu CRL i “wydruk” listy odwołanych certyfikatów). Można też samemu “odszyfrować” ten format – jest to ASN.1 (Abstract Syntax Notation 1).

Nierozerwalnie ze sprawami certyfikatów wiąże się karta inteligentna tzw. smartcard. Microsoft wybrał implementację PC/SC – to zresztą standard na komputery PC. Architektura programowa obsługi SC jest opisana tutaj na stronach MSDN.

Podpis można opatrzeć znacznikiem czas z bezpłatnego serwera publicznego – http://time.certum.pl.

Ciekawostka – usługi dodatkowe świadczone przez CERTUM: Notarius oraz sprawdzenie stanu certyfikatu w trybie on-line. Trzeba też sprawdzić ofety KIR, Sigillum i Mobitrust – na komórkę / Mobicert. Zagraniczne rozwiązania mają firmy: Aloha, Eldos a w odniesieniu do PDF – GlobalSign. Firma ta jest partnerem Adobe w projekcie CDS (Certified Document Services) – mówi o tym ten dokument. Jej oferta jest droga i różni się technicznie od naszgo podpisu z CERTUM tym, że głównym urzędem certyfiakcyjnym jest w tym przypadku nie polski urząd a sama firma ADOBE (ale za to każe sobie słono płacić). Przypomina się tam też, że PDF nie jest zamkniętym formatem –  a standardem ISO 32000-1. Kolejny standard ETSI/ESI Technical Standard (TS) 102 778 (w skrócie PAdES) – stanowi odpowiedź na spełnienie wymogów dyrektywy unijnej – 1999 EU Signature Directive.

Podobnie funkcje podpisywania dokumentów PDF ma biblioteka KIR napisana w języku Java.

Linki   Leave a comment

Moje z Toshiby Oli   Leave a comment

  1. Video on JSON
  2. Turorial do JS
  3. C#:
    1. Standard kodowania
    2. Abstrakcyjna fabryka
  4. Stosowanie certutil do sprawdzania certyfikatów
  5. WCF w implementacji POP3 
  6. Blog Mike Taulty
  7. Best practices z C# – blog moustlucid.net
  8. Blog Billa Wagnera
  9. Blog visualstudiomagazine
  10. Blog Andy Kramka
  11. Blog o programowaniu funkcjonalnym (po rosyjsku) :
  12. var list = new List<int>(); 
     
    foreach (var e in arr) 
        if (e < 0) 
            list.Add(e); 

    Na

var list = arr.Where(e => e < 0);

Posted 27 kwietnia 2011 by marekwmsdn in C#, CAPICOM, JavaScript, WCF

Ciekawe   Leave a comment

  1. Operacje na składnicy certyfiaktów w .NET – http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509store.remove(v=vs.80).aspx
  2. Crockford o bezpieczeństwie JS i HTML5 – http://answers.oreilly.com/topic/1483-doug-crockford-discusses-javascript-html5-security-issues/
  3. Kolejna ciekawa ksiażka – JQuery cookbook a tam wykorzystanie .data() – “How to attach objects and data to DOM with jQuery.data to avoid memory leak issues” np. do uniknięcia przecieków pamięci i ustawienia zegara
  4. Stosowanie Module pattern w jS – do organizaowania kodu – http://answers.oreilly.com/topic/2177-how-to-use-the-module-pattern-in-javascript/
  5. Obok jQ jest wiele innych frameworków: The following won’t help you much to make a choice, because it’s just a plain list of options–but at least it will help you see some of the most popular options. I copied this list right from Chapter 19 of Learning PHP, MySQL, and Javascript by Robin Nixon.
    1. ASP.NET Ajax Framework, http://asp.net/ajax/
    2. Clean Ajax, http://sourceforge.n…ects/clean-ajax
    3. Dojo Toolkit, http://dojotoolkit.org
    4. jQuery, http://jquery.com
    5. MochiKit, http://mochikit.com
    6. MooTools, http://mootools.net
    7. OpenJS, http://openjs.com
    8. Prototype, http://prototypejs.org
    9. Rialto, http://rialto.improv…logies.com/wiki
    10. script.aculo.us, http://script.aculo.us
    11. Spry Framework, http://labs.adobe.co…chnologies/spry
    12. YUI, http://developer.yahoo.com/yui
  6. Np. Rico – http://rialto.improve-technologies.com/wiki/ – ze wsparciem dla GWT, Javy i .NET
  7. Kolejne sztuczki z jQ na podstawie artykułu na O’Reilly na temat książki JQuery Pocket book:
    1. zamiast $(documentt).ready() można stosować $().
    2. Aby stworzyć element można skorzystać z $(tagname) a jako drugi parametr przekazać obiekt zawierający właściwości przekazane do attr(), dodatkowo jeżeli te właściwości będą maiły nazwy atrybutów DOM to zostaną zarejestrowane jako handlery:
    3. ar image = $("<img>", {
                        src: image_url,
                        alt: image_description,
                        className: "translucent_image",
                        click: function() {$(this).css("opacity", "50%");},
                        css: { border: "dotted red 3px" }
                     });
  8. Procesory zdarzeń to np. click() lub change(), jest bardziej ogólny procesor (handler) zwany bind() np.
$('a').bind('mouseover.myMod', f);
  1. Wtedy możliwe jest:
// Unbind all mouseover and mouseout handlers
// in the "myMod" namespace
$('a').unbind("mouseover.myMod mouseout.myMod");
// Unbind handlers for any event in the myMod namespace
$('a').unbind(".myMod")
  1. Mozliwe jest też kolejkowanie animacji:
  2. $("img").fadeIn(500)
            .animate({"width":"+=100"},
                     {queue:false, duration:1000})
            .fadeOut(500);

    I na koniec sprytne wykorzystanie zdarzeń startu i zakończenia operacji AJAX do włączania i wyłączania elementu animacji:

    $("#loading_animation").bind({
        ajaxStart: function() { $(this).show(); },
        ajaxStop: function() { $(this).hide(); }
    });

    A to wszystko pochodzi z serwisu O’Reilly – answers

    Stosowanie przestrzenie nazw w JS, nic trudnego:

    Since these are home-made javascript libraries, this isn’t too hard.
    You can assign an object to a variable, and combine your libraries within this object. You can repeat the process within the object to achieve multiple levels as well.
    e.g.
    var mycompany = {
    ‚utilities’: {
    ‚removeEmail’: function(string) {
    // Code to remove all email addresses
    return newString;
    },
    },
    ‚display’: {
    ‚defaultSize: [100, 100],
    ‚showBox’: function(x, y, sizex, sizey) {
    // do some stuff create stylized div for box, etc.
    return boxDivElement;
    },
    },
    ‚var1’: ‚foo is at foo@bar.com’,
    ‚func1’: function() { return ‚bar is at bar@foo.com’; }
    }
    // Example usage
    var myString1 = mycompany.var1;
    var myString2 = mycompany.func1();
    var someFunction = mycompany.func1;
    var myString3 = someFunction(); // myString3 == mySting2;
    var parsedString = mycompany.utilities.removeEmail(mystring1);
    var divBox = mycompany.display.showBox(400, 500, 200, 300);
    divBox.innerHTML = parsedString;
    Now, I haven’t actually tested the above code, so there may be numerous errors, and even some basic JS logic problems as it’s been a little while since I wrote any functional JS, but the general theory is sound.
    P.S. there’s more complex and complete ways to get namespaces in JS, but this should suffice for combining a few home-made libraries.

Posted 14 stycznia 2011 by marekwmsdn in CAPICOM, e-Booki, JavaScript, jQuery, Kryptografia, Web 2

Linki we wtorek 21.12   Leave a comment

  1. http://ntt.cc/2008/02/13/the-most-complete-ajax-framework-and-javascript-libraries-list.html
  2. Kolejna biblioteka obsługi grid-a w jQuery – jqGrid. Obsługuje dane w JS i dla niego jest darmowa.  Wesja dla PHP i .ASP są płatne. To już druga siatka danych obok wcześniej wspominanej FlexiGrid. Porządny blog deweloperski codecapers.com, ma wiele tematów zebranych na liście umiezczonej tu. Cała grupa tematów o jQuery. Ciekawy jest “Using JqGrid with ASP.NET MVC”. Templatki do jQ zasługa MS.
  3. Doskonały artykuł na betanews na temat połączenia pracy z domem jak to robi Soma Somasegar v-ce przydent działu deweloperskiego MS. Robi to po ludzki w ciepłych słowach i nie zadziera nosa. Jednocześnie krytyka wielbicieli Mac-a (Apple) traktujących wszystkich z góry i z pogardą.
  4. Sesje z PDC są tutaj – narzeszcie – http://player.microsoftpdc.com/schedule/sessions
  5. MS uporządkował blogi swoich pracowników i można tam znaleźć niejedną perełkę, np. blog http://blogs.msdn.com/b/alejacma zawiera wiele informacji o implementacji kryptografii:
    1. Jak stworzyć ActiveX aby opakować niewspierany już w Windows 7 Capicom
    2. Śmierć Capicom w Windows 7
    3. Poprzez blog na Twitter – http://twitter.com/alejacma/statuses/14970519262593024 – “How to enumerate all certificates on a smart card (PowerShell)
    4. Potwierdzenie smutnego losu Capicom, ale jest światło w tunelu, przynajmniej na chwilę – “At the same time, the Redmond company continues to offer them the possibility to work with CAPICOM. However, the component will have to be accessed independently of the Windows SDK, especially the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA. “If you need to use CAPICOM.dll, you can download it separately. [The] download contains the redistributable files for CAPICOM 2.1.0.2 and samples of its use, I inne znamienne słowa “CAPICOM.dll has been removed from the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA and should be considered a deprecated component. You can find information on alternatives to using CAPICOM here – http://msdn.microsoft.com/en-us/library/cc778518(VS.85).aspx.”
    5. A oto co daje MS w zamian “CAPICOM.dll Removed from Windows SDK for Windows 7”:
  6. Ale za to MS głosi swoją otwartość – http://www.interoperabilitybridges.com/
  7. Ciekawe z VFP – http://leafe.com/dls/vfp

Przyszłość CAPICOM raz jeszcze   Leave a comment

Na stronach blogu MS “Ascend slowly, breathing normally” – jest artykuł o braku wsparcia dla CAPICOM w Windows 7, teraz trzeba ten pakiet samemu sobie zainstalować. Oto cytat:

CAPICOM.dll has been removed from the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA and should be considered a deprecated component. You can find information on alternatives to using CAPICOM here – http://msdn.microsoft.com/en-us/library/cc778518(VS.85).aspx. This MSDN article tells how to use the .NET Framework to implement security features for the following:

If you need to use CAPICOM.dll, you can download it separately from http://www.microsoft.com/downloads/details.aspx?FamilyID=860EE43A-A843-462F-ABB5-FF88EA5896F6. This download contains the redistributable files for CAPICOM 2.1.0.2 and samples of its use.

Dla CAPI COM jest znana ścieżka przejścia na platformę .NET – http://msdn.microsoft.com/en-us/library/cc778518%28VS.85%29.aspx#_crypto2_digital_signature_objects – jest tam tabelka porównująca “stary” sposób i sugestie nowego podjścia. Można również rozszerzyć rozwiązania o wykorzystanie P/Invoke do łączenia CAPICOM z .NET. – http://msdn.microsoft.com/en-us/library/ms867087.aspx.

Mimo tych groźnych ostrzeżeń CAPICOM w środowisku Windows 7 działa dobrze

Posted 9 kwietnia 2010 by marekwmsdn in CAPICOM