piątek, marca 09, 2007

Dywagacje na temat certyfikatu
  1. Czy można korzystać z certyfikatu kwalifikowanego (podpisu) nie instalując do w repozytorium (np. gdy ma się go na karcie)
  2. W naszej firmie i innych, które nam ufają warto postawić serwer PKI. Można wtedy wystawiać certyfikaty własne (trzeba im wtedy zaufać). Zbyszek mi przygotuje środowisko
  3. To samo w odniesieniu do Kerberosa
  4. Sprawdzanie ważności certyfikatu to jest niełatwa sprawa, trudno tu bez przygotowania zrobić coś poprawnie. Można jednak pokusić się o jakieś rozwiązanie:
    1. Użytkownik dostaje dane podpisane certyfikatem jakiegoś innego użytkownika. Jak możne zweryfikować jego ważność?
    2. Weryfikacja może być:
      1. online - poprzez sprawdzenie listy CRL:
        1. ze strony poprzez usługę OCSP - niektóre firmy wystawiające certyfikat jej nie świadczą
        2. poprzez kontakt ze stroną zawierającą CRL - zapamiętaniu jej lokalnie
      2. offline - poprzez weryfikację na liście CRL w cache repozytorium. Do repozytorium ściągnąć aktualną listę można poprzez automatyczą aktualizację po kliknięciu na stronę zawierającą listę crl.
    3. Może na podstawie certyfikatu lub danych podpisanych "wyciągnąć" unikalny numer seryjny użytkownika tego certyfikatu
    4. Co jeszcze można "wypruć" z certyfikatu/podpisanego dokumentu. Ten ostatni jest lepszy, nie musimy "zdobywać" certyfikatu?
  5. Ciąg dalszy nastąpi...
  6. Można usługę wystawiania certyfikatów i podpisu zaoferować KHW
  7. Linki (praca):
    1. Szukaj informacji na forum dyskusyjnym - microsoft.public.security.crypto
    2. http://groups.google.com/group/microsoft.public.security.crypto/index/browse_frm/month/2004-12?_done=%2Fgroup%2Fmicrosoft.public.security.crypto%2Fbrowse_frm%2Fmonth%2F2004-12%3F&
    3. http://www.derkeiler.com/Newsgroups/microsoft.public.platformsdk.security/2004-12/0043.html -capicom / cryptoapi certificate chain verification error 0x80092004

Date: Fri, 03 Dec 2004 18:16:28 +0100

Hello,
I was trying to use capicom from VB6 code to verify the validity of a
certificate, but Kelvin Yiu from MS posted a message
(news://msnews.microsoft.com:119/eV9j2id0EHA.1392@tk2msftngp13.phx.gbl)
in which he says "There is no way to use CAPICOM to access the CRLs used
to validate the chain. You must call the Win32 API".

Then, David Cross suggested to use capimon to trace the error. Such
trace (see previous post "meaning of
CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN or the attached capimon output)
shows the error 0x80092004.

I didn't write any code to access the api directly yet, I just want to
understand what is this error: the description "Cannot find object or
property." does not mean anything to me.
David suggested it could be a problem with CRL, but the certificate I'm
trying to validate incudes a reachable CRL Distribution Point (via http;
it also has other 2 DP, SMB and HTTP wich are not reachable, but the
third is).

Actually, If I access the distribution point with a browser I can
download the CRL, so that I believe this is not the problem.
Can anybody help me understanding?

thanks,
al.


    1. Sprawdzenie OCSP (skrypt):#!/bin/sh
      ##
      ## Copyright (c) 1998-2005 Unizeto Technologies S.A. All rights reserved.
      ##
      ## Online Certificate Status Protocol
      ##

      # Config default for openssl 0.9.7

      VAFILE="/usr/share/ssl/ocsp.pem" # http://www.certum.pl/keys/vs.pem
      ISSUER="/usr/share/ssl/CA.pem" # http://www.certum.pl/CA.pem

      URL="http://ocsp.certum.pl"

      if [ "$1" = "" ]; then
      echo -e "Usage: $0 serialn"
      echo -e "tserial:tSerial number to checkn"
      exit 0
      fi

      openssl ocsp
      -issuer "$ISSUER"
      -serial "$1"
      -url "$URL"
      -resp_text
      -respout /dev/null
      -VAfile "$VAFILE"
      exit 0

    2. http://support.microsoft.com/kb/304298 -How To Perform CRL Checking with CAPICOM
    3. http://files.redfoxuk.com/Shared%20Files/CAPICOM%20Interface%20Definition.HTML#class115 - CAPICOM interfejs, opis wszystkich stałych
    4. http://www.derkeiler.com/Newsgroups/microsoft.public.platformsdk.security/2003-10/0431.html - How to force CAPICO for CRL checking + lista dyskusyjna
    5. JENSIGN -świetny
    6. http://www.tutorials-se.com/platformsdksecurity/verify-certificate/ - How to verify certificate with CAPICOM + Impersonate + lista dyskusyjna + list programu (http://www.tutorials-se.com/platformsdksecurity/CAPICOM-documentation/)!
    7. Kod z powyższego źródła:
      Impersonating access to AzMan Policy Store 

      I have a console app that runs under the identity UserA. UserB has
      access to AzMan and ADAM.

      Whenever I try to impersonate UserB for the call to the
      AuthorizationStore, I get the exception: ArgumentException: "Value does
      not fall within the expected range"

      However, if I right click on the app and "Run As" UserB, everything
      works fine.

      I am verifying in code (using WindowsIdentity.GetCurrent()) that the
      impersonation is acutally succeeding. Has anyone had this issue?

      Here is my code:



      [DllImport("advapi32.dll")]
      public static extern int LogonUserA(String lpszUserName, String
      lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider,
      ref IntPtr phToken);
      [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError
      = true)]
      public static extern int DuplicateToken(IntPtr hToken, int
      impersonationLevel, ref IntPtr hNewToken);
      [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError
      = true)]
      public static extern bool RevertToSelf();
      [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
      public static extern bool CloseHandle(IntPtr handle);

      private void button1_Click(object sender, EventArgs e)
      {
      try
      {
      WindowsImpersonationContext ctx =
      ImpersonateValidUser("UserB", "domain", "password");
      AzAuthorizationStoreClass authorizationStore = new
      AzAuthorizationStoreClass();
      Console.WriteLine(WindowsIdentity.GetCurrent().Name);
      authorizationStore.Initialize(0,
      "msldap://techarch2:389/CN=Company, DC=compan,DC=com", null);
      ctx.Undo();

      }
      catch(Exception ex)
      {
      Console.WriteLine(ex.Message);
      }
      }

      private static WindowsImpersonationContext
      ImpersonateValidUser(String userName, String domain, String password)
      {
      WindowsImpersonationContext impersonationContext;
      WindowsIdentity tempWindowsIdentity;
      IntPtr token = IntPtr.Zero;
      IntPtr tokenDuplicate = IntPtr.Zero;

      if (RevertToSelf())
      {
      if (LogonUserA(userName, domain, password, 2, 0, ref
      token) != 0)
      {
      if (DuplicateToken(token, 2, ref tokenDuplicate) !=
      0)
      {
      tempWindowsIdentity = new
      WindowsIdentity(tokenDuplicate);
      impersonationContext =
      tempWindowsIdentity.Impersonate();
      if (impersonationContext != null)
      {
      CloseHandle(token);
      CloseHandle(tokenDuplicate);
      return impersonationContext;
      }
      }
      }
      }
      if (token != IntPtr.Zero)
      CloseHandle(token);
      if (tokenDuplicate != IntPtr.Zero)
      CloseHandle(tokenDuplicate);
      return null;
      }

    8. A oto wyciąg z MS: 
      Chain.Status

      The Status property retrieves the validity status of the chain or a specific certificate in the chain.

      Property Status( _
      ByVal Index As Long _
      ) As Long

      Parameters

      Index
      Index of certificate, or chain, to check validation. The default value is zero. The following table shows the possible values.
      Value Meaning
      0 Returns the status of the entire chain.
      1 Returns the status of the end certificate.
      i Returns the status of the Certificates.Item[i] certificate.
      Certificates.Count Returns the status of the root certificate.

      Property Value

      A LONG value that represents the validity status indicator of the chain or the specified certificate. The following table shows the possible values. This property will contain zero if the chain or specified certificate is valid. Otherwise, this property will contain a combination of one or more of the following values.

      CAPICOM_TRUST_IS_NOT_TIME_VALID
      &H00000001
      This certificate or one of the certificates in the certificate chain is not time valid.
      CAPICOM_TRUST_IS_NOT_TIME_NESTED
      &H00000002
      Certificates in the chain are not properly time nested.
      CAPICOM_TRUST_IS_REVOKED
      &H00000004
      Trust for this certificate or one of the certificates in the certificate chain has been revoked.
      CAPICOM_TRUST_IS_NOT_SIGNATURE_VALID
      &H00000008
      The certificate or one of the certificates in the certificate chain does not have a valid signature.
      CAPICOM_TRUST_IS_NOT_VALID_FOR_USAGE
      &H00000010
      The certificate or certificate chain is not valid for its proposed usage.
      CAPICOM_TRUST_IS_UNTRUSTED_ROOT
      &H00000020
      The certificate or certificate chain is based on an untrusted root.
      CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN
      &H00000040
      The revocation status of the certificate or one of the certificates in the certificate chain is unknown.
      CAPICOM_TRUST_IS_CYCLIC
      &H00000080
      One of the certificates in the chain was issued by a certification authority that the original certificate had certified.
      CAPICOM_TRUST_INVALID_EXTENSION
      &H00000100
      One of the certificates has an extension that is not valid.
      CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS
      &H00000200
      The certificate or one of the certificates in the certificate chain has a policy constraints extension, and one of the issued certificates has a disallowed policy mapping extension or does not have a required issuance policies extension.
      CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS
      &H00000400
      The certificate or one of the certificates in the certificate chain has a basic constraints extension, and either the certificate cannot be used to issue other certificates, or the chain path length has been exceeded.
      CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS
      &H00000800
      The certificate or one of the certificates in the certificate chain has a name constraints extension that is not valid.
      CAPICOM_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT
      &H00001000
      The certificate or one of the certificates in the certificate chain has a name constraints extension that contains unsupported fields. The minimum and maximum fields are not supported. Thus minimum must always be zero and maximum must always be absent. Only UPN is supported for an Other Name. The following alternative name choices are not supported:

      • X400 Address
      • EDI Party Name
      • Registered Id
      CAPICOM_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT
      &H00002000
      The certificate or one of the certificates in the certificate chain has a name constraints extension, and a name constraint is missing for one of the name choices in the end certificate.
      CAPICOM_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT
      &H00004000
      The certificate or one of the certificates in the certificate chain has a name constraints extension, and there is not a permitted name constraint for one of the name choices in the end certificate.
      CAPICOM_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT
      &H00008000
      The certificate or one of the certificates in the certificate chain has a name constraints extension, and one of the name choices in the end certificate is explicitly excluded.
      CAPICOM_TRUST_IS_OFFLINE_REVOCATION
      &H01000000
      The revocation status of the certificate or one of the certificates in the certificate chain is either offline or stale.
      CAPICOM_TRUST_NO_ISSUANCE_CHAIN_POLICY
      &H02000000
      The end certificate does not have any resultant issuance policies, and one of the issuing CA certificates has a policy constraints extension requiring it.
      CAPICOM_TRUST_IS_PARTIAL_CHAIN
      &H00010000
      The certificate chain is not compete.
      CAPICOM_TRUST_CTL_IS_NOT_TIME_VALID
      &H00020000
      A CTL used to create this chain was not time valid.
      CAPICOM_TRUST_CTL_IS_NOT_SIGNATURE_VALID
      &H00040000
      A CTL used to create this chain did not have a valid signature.
      CAPICOM_TRUST_CTL_IS_NOT_VALID_FOR_USAGE
      &H00080000
      A CTL used to create this chain is not valid for this usage.
    9.  Sprawdź czy coś nie tak (poniżej)
    10. Checking Certificate Revocation Status

      CAPICOM does not enable certificate revocation checking by default. However, certificate revocation checking can be enabled programmatically for a particular certificate through the IsValid.CheckFlag property of a Certificate object. After the appropriate value of CheckFlag has been set, accessing the Certificate object's IsValid.Result property or building the certificate's verification path using a Chain object's Build method forces revocation checking.

      _language="Visual Basic">

      In the following example, cert has been instantiated as a valid CAPICOM certificate.

      Dim cert As Certificate
      Dim LocalStore As New Store

      ' Open the My store.
      LocalStore.Open LocalStore.Open CAPICOM_CURRENT_USER_STORE, _
      CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_WRITE

      ' Get the first certificate in the My store.
      set cert = LocalStore.Certificates.Item(1)

      cert.IsValid.CheckFlag = CAPICOM_CHECK_TRUSTED_ROOT Or _
      CAPICOM_CHECK_TIME_VALIDITY Or _
      CAPICOM_CHECK_SIGNATURE_VALIDITY Or _
      CAPICOM_CHECK_ONLINE_REVOCATION_STATUS
      If cert.IsValid.Result Then
      'CERTIFICATE IS VALID!
      Else
      Dim chain As New Chain
      chain.Build (cert)
      If CAPICOM_TRUST_IS_REVOKED And chain.Status Then
      'AT LEAST ONE CERTIFICATE IN THE CHAIN HAS BEEN REVOKED
      End If
      If CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN And chain.Status Then
      'THE REVOCATION STATUS COULD NOT BE DETERMINED
      End If
      End If

      The preceding applies to an individual certificate, no matter how it was obtained. Performing revocation checking on the certificates in a SignedData object is no different because the SignedData object's Verify method cannot be used for this purpose because enabling CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE does not cause CRL checking.

      _language="Visual Basic">

      Instead, the CheckFlag must be set for each signer's certificate. Consider the following example where sData has been instantiated as a valid CAPICOM SignedData object.

      Dim cert As Certificate
      Dim chain As New Chain

      ' sData is an existing SignedData object.

      For I = 1 To sData.Certificates.Count
      set cert = sData.Certificates(I)
      cert.IsValid.CheckFlag = _
      CAPICOM_CHECK_TRUSTED_ROOT Or _
      CAPICOM_CHECK_TIME_VALIDITY Or _
      CAPICOM_CHECK_SIGNATURE_VALIDITY Or _
      CAPICOM_CHECK_ONLINE_REVOCATION_STATUS
      If cert.IsValid.Result Then
      'THE CERTIFICATE IS VALID!
      Else
      chain.Build cert
      If CAPICOM_TRUST_IS_REVOKED And chain.Status Then
      'AT LEAST ONE CERTIFICATE IN THE CHAIN HAS BEEN REVOKED
      End If
      If CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN And chain.Status Then
      'THE REVOCATION STATUS COULD NOT BE DETERMINED
      End If
      End If
      Next I
KISS - to nie na dzień kobiet

David Chappell - znany ewangelista technologii MS pisze:
  • Dlaczego firmy chcą za stworzenie aplikacji w J2EE ok. 30% więcej niż w .NET? - http://www.davidchappell.com/blog/2006_12_01_weblog.htmlWiększe trudności w pracy w środowisku J2EE, które z założenia było stworzone dla zawodowców, podczas gdy .NET przeznaczony jest dla amatorów (byłych programistów VB 6.0). Specyfikacja standardów J2EE jest niespójna, tworzona przez otwartą społeczność, w przpadku MS tworzy ją jedna firma.
  • J2EE 5 jest platformą zunifikowaną, ale piekielnie SKOMPLIKOWNĄ. Do uproszczenia tego podchodzą dwa obozy SUN (poprzez JCP - otwarcie procesu tworzenia nowych funkcji poprzez dyskusję i głosowanie ze środowiskiem deweloperów najczęściej z otwartej społeczności) i IBM (Oracle, BEA i inni poprzez zamknięcie w SCA , tak zamknięcie tego procesu i stworzenie spójnej ramy technologicznej bez wkładu OBCYCH zdolnej do uruchomienia rozwiązań zainteresowanych firm).
  • Wiele wysiłku twórcy J2EE (od niedawna przemianowanej na po prostu JEE) wkładają w uproszczenie wykorzystania mnogości technologii wchodzących w skład tego standardu. Z drugiej strony firmy komercyjne (IBM, Oracle, BEA), nierzadko rywalizujące ze sobą, zaangażowane w wykorzystanie w swych rozwiązaniach JEE same dochodzą do wspólnego zdania i publikują SCA (Service Component Architecture ). Promują SCA jako alternatywę do Java EE. (http://www.davidchappell.com/blog/2006_08_01_weblog.html). A wszystko po to żeby zwiększyć stopień wykorzystania raz stworzonych gotowców, tych pochodzących z SCA lub przy jego pomocy stworzonych.
  • Tak naprawdę motywy stworzenia SCA są proste: stworzyć przeciwwagę firmie SUN polegającej na rozwijaniu Java przy pomocy metod demokratycznych JCP (Java Community Process) oraz wyjść na przeciw inicjatywie MS - stworzyć analog patformy WCF (Windows Communication Foundation)
  • Stosowanie WCF znacząco usprawnia i upraszcza proces stworzenia oprogramowania w środowisku .NET (które sądząc po ilości klas - namespaces zawiera wiele skorelowanych ze sobą technologii). Tego brakowało Javie.
  • SOA i WS zmniejszyły wagi i znaczenia platformy uruchamiającej serwerową część aplikacji, to co ma znaczenie to precyzyjnie zdefiniowany interfejs. Implementacje jego przy pomocy XML i HTTP stanowi wspólny mianownik każdego takiego rozwiązania. Nie potrzeba do tego jak twierdzą zwolennicy JEE skomplikowanych technologii, ani zunifikowanej platformy uruchomieniowej, to co "chodzi" na serwerze jest nieważne, liczy się jedynie interface między usługami (http://rss.techtarget.com/80.xml + "Analysts see Java EE dying in an SOA world").
  • WCF to UNIFIKACJA - Introducing WCF (MS) + Introducing the .NET 3.o framework.
  • Porównanie WCF z SOA - polegają na WS-* w zakresie bezpieczeństwa. To ważne. Przeglad bezpiecznych WS - tu.


środa, marca 07, 2007

Podpis cyfrowy ciąg dalszy
====================
  1. http://www.pki-page.org/ - rozbiegówka na temat OCSP i Sigillum
  2. http://www.inza.com/pki.html - info
  3. http://www.certum.pl/certum/cert,oferta_kwalifikowane_OCSP.xml - sposoby sprawdzenia statusu certyfikatu kwalifikowanego
  4. http://www.openssl.org/docs/apps/ocsp.html - openssl to prawdziwy kombajn, też może sprawdzić OCSP
  5. http://www.openvalidation.org/en/info/requests.html - Artykuł - stosowanie OCSP w aplikacjach końcowych
  6. http://www.microsoft.com/technet/security/guidance/cryptographyetc/tshtcrl.mspx - sprawdzenie statusu certyfikatu
  7. http://msdn2.microsoft.com/en-us/library/system.net.security.remotecertificatevalidationcallback.aspx - sprawdzenie certyfikatu SSL
  8. https://www.certum.pl/certum/cert,certyfikaty_oprogramowanie.xml - darmowy certyfikat testowy
  9. https://www.certum.pl/services/ocsp.html?status=0&serial=37A6D - sprawdzanie statusu mojego certyfikatu (marek.wawrzynczyk)
  10. http://www.art-bit.pl/content/view/84/100/= ALE TYLKO NIEKWALIFIKOWANEGO w Certum usługa sprawdzenia statusu CLR poprzez OCSP jest bezpłatna. Majc openssl - należy stosować adres: http://ocsp.certum.pl. Jeżeli posiadają Państwo jedną z aplikacji: Netscape 6.0, iPlanet, Certum OCSP lub OpenSSL 0.9.7 w celu automatycznego weryfikowania statusu certyfikatów, powinno się wysyłać żądania do: http://ocsp.certum.pl .

Sprawdzanie CRL poprzez "ściąganie" listy z serwera dostawcy:
  1. Uruchomić na serwerze internetowym IIS procesu "ściągającego" co godzinę dane z wirtyny dostawcy i zapisujący do pliku "ca1.crl" i przetworzenie go do formatu .txt.
  2. Program kliencki odpytywuje stronę na tym serwerze podając jako parametr numer seryjny certyfikatu klienta. Wtedy:
    1. program na serwerze szuka w pliku tekstowym tego numeru, jeżeli jest to certyfikat klienta jest nieważny
    2. program serwera sprawdza czy nie należy przypadkiem ściągnąć najnowszą wersję listy z serwera dostawcy certyfikatów.
Inny sposób - wykorzystać bibliotekę Sigillum i odpytać poprzez ich funkcje OCSP jak to jest z CRL

wtorek, marca 06, 2007

Bezpieczeństwo WS
Jak to jest z tym bezpieczeństwem? Jest wiele rozwiązań. Właściwie przynajmniej trzy:
  • W3C ma swoje dokumenty na temat ochrony XML i SOAP. Trzy standardy:
    • XML Encryption - szyfrowanie (za kodowanie całości lub części XML odpowiada <EncryptionMethod>),
    • XML Signature - podpisywanie jest to podpis cyfrowy (skrót),
    • SOAP Security Extension: Digital Signature (http://www.w3.org/TR/SOAP-dsig/)
  • OASIC (Organization for the Advancement of Structured Information Standards) wydało w 2001 r najnowszą wersję SAML (Security Assertion Markup Language) członkowie - Boeing, Citrix, HP, IBM, Microsoft, Netscape, and Sun. Korzysta z XML Signature oraz SSL/TLS i wymaga nakładów na PKI.
  • a w kwietniu 2002 WS-I (Web Services Interoperability Organization) - IBM i MS - opublikowała początkową specyfikację WS-Security (Web Services Security Language). Członkowie - IBM, Microsoft, and VeriSign. Brak SSO oraz nie wymagaja infrastruktury kluczy, zabezpieczają pojedyńczą tranzakcję. Nagłówek zawiera element z tokenem zawierajacym informacje o autentykacji (X.509 lub żeton Kerberosa), autoryzacji wystawcy, może być również podpisany.
Porównanie: SAML zapewnia SSO, ale jest wolniejszy i wymaga infrastruktury, WS-Security chroni pojedyńczy komunikat.
Implementacje również wybierają różne rozwiązania np. Liberty Alliance (http://www.projectliberty.org/) posługuje się SAML, podczas gdy MS wybrał w swym rozwiązaniu TrustdBridge (http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnwebsrv/html/wsfederate.asp?frame=true) WS-Security.
Cel całej tej zabawy zapewnienie komunikatom SOAP:
  1. integrity,
  2. confidentiality,
  3. authentication,
  4. authorization
Uwaga: samo SSL nie wystarcza kiedy przesyłamy komunikaty poza scenariusz point-to-point. Szyfrowanie z kolei, dostępne poprzez standardy lub S/MIME lub PGP nie są wystarczające, gdyż szyfrują całość komunikatu a tu chodzi o szyfrowanie fragmentów, inne fragmenty są widoczne np. dla osób weryfikujacych przesyłkę. Dlatego wymyślono XML Encryption.
Inne linki:
  1. http://www.onjava.com/pub/a/onjava/2005/02/09/wssecurity.html - wstęp z punktu widzenia Java i w oparciu o standardu, które wszyscy mają gdzieś.
  2. http://www.onjava.com/pub/a/onjava/2005/03/30/wssecurity2.html?page=1 - cz.2
  3. Coraz więcej mówi się o współdziałaniu MS .NET i Java
  4. Jak rozwiązuje to Google w swoim API
  5. The Project The XML Security project is aimed at providing implementation of security standards for XML. Currently the focus is on the W3C standards :XML-Signature Syntax and Processing; and XML Encryption Syntax and Processing. Once these are implemented, XML Key Management is likely to be the next focus for the project. Two libraries are currently available. A Java library, which includes a mature Digital Signature implementation. Encryption is currently under development. A C++ library is also now available. Functionality is currently more basic than that provided by the Java library. http://xml.apache.org/security/
  6. http://xml.apache.org/security/faq.html - świetne wprowadzenie
  7. Klasyka:
    1. http://www.w3c.org/Signature
    2. http://www.w3c.org/Encryption
    3. http://www.cacr.math.uwaterloo.ca/hac/ Applied Cryptography
    4. http://www.w3c.org/Signature
    5. http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/xml_security.html -bezpieczeństwo XML
    6. http://webservices.xml.com/pub/a/ws/2003/01/15/ends.html -
  8. http://forum.java.sun.com/index.jspa - świetna strona początkowa do forum Java (na różne tematy)
  9. http://pywebsvcs.sourceforge.net/ -pyhon też ma, ale co z implementacją bezpieczenstwa?
  10. Googel/yahoo - search: securing WS/webservice/AJAX/zope/php/python/AHAH tez
  11. Z drugiej strony po co szukać w starociach, lepiej przyjrzeć się nowością implementowanym w JSE 1.6 i NetBeans
  12. http://java.sun.com/products/plugin/1.3/docs/jsobject.html - interakcja applet - javascript
  13. http://java.sun.com/docs/books/tutorial/networking/ -sieciowanie w Javie
  14. http://forum.webcity.pl/index.php?s=e46b296c82f1dedc085ee20ce27dc2bf&showtopic=4433&pid=29711&st=0&#entry29711 - ajax uproszczony
  15. http://advajax.anakin.us/index-pl.htm
  16. http://www-128.ibm.com/developerworks/views/webservices/libraryview.jsp?search_by=python+web+services+developer
  17. http://www.javaworld.com/cgi-bin/mailto/x_java.cgi - Bardzo ważny przykład szyfrowanie/deszyfrowania XML przy pomocy Java i JSR od IBM
  18. http://www.javaworld.com/javaworld/jw-10-2002/jw-1011-securexml.html?page=1
  19. http://webservices.xml.com/pub/a/ws/2003/01/15/ends.html - przykłady XML Signature
  20. http://digger.computerworld.pl/
  21. http://www.javaworld.com/javaworld/jw-09-2006/jw-0911-jsf.html
  22. http://xml.sys-con.com/read/307584.htm

niedziela, marca 04, 2007

Niedziela 4 marca
  1. https://www14.software.ibm.com/iwm/web/cc/earlyprograms/ibm/java6/?ns=7307 - nowa maszyna JVM od IBM (ale dostępna na razie tylko dla Linux i Aix) -IBM SDK for Java 6
  2. Ochrona danych w węzłach XML

    After the structure has been created, we can add data between the XML node elements. This data will be used to display in the corresponding parts of the accordion component. Accepting HTML in any node element will make this component much more flexible and can be very easily achieved by simply adding CDATA tags between the content elements. Here is an example of how easy this is to accomplish:

    <content><![CDATA[<b>html text goes here</b>]]></content>
    Adding CDATA tags allows us to use any HTML that we would like to display in any given panel. We could display everything from complex tables, images, and even other components.
  3. http://www.informit.com/articles/article.asp?p=686162&rl=1 - implementing internet communication in Python
  4. Mocny Python. Odczyt skrzynki -
    import poplib
    import getpass

    mServer = poplib.POP3('mail.sfcn.org')

    #Login to mail server
    mServer.user(getpass.getuser())
    mServer.pass_(getpass.getpass())

    #Get the number of mail messages
    numMessages = len(mServer.list()[1])

    print "You have %d messages." % (numMessages)
    print "Message List:"

    #List the subject line of each message
    for mList in range(numMessages) :
    for msg in mServer.retr(mList+1)[1]:
    if msg.startswith('Subject'):
    print 't' + msg
    break
    mServer.quit()
  5. Google kontra MS kto wygra? Ostatnia oferta płatnej usługi edytora i arkusza od Google wywołała spore ozywienie na rynku usług. Po raz pierwszy G wszedł w sposób otwarty na terytorium MS - tzw. produkty wspomagające pracowników biurowych. Czy mu się uda? Wiele firm (AOL, Yahoo, Oracle, Sun) próbowało zmienić swoją linię biznesową na produkcję oprogramowania uniwersalnego jak to robi MS. Obecna oferta G przypomina podrecznikowy scenariusz technologii rozłamowej (disruptive technology) - "lider rynku tak opanował sytuację, że jego produkt osiągnął stan nasycenia funkcjonalnością i zaczyna sprawiać wrazenie przesytu formy (over serve). Użytkownicy mają wrażenie ociężałości pracy z tak przeładowanym pakietem, dlatego widząc na rynku produkt prostszy i szybszy zwracają się ku niemu, zawsze mając śwaidomosc posiadania w zanadrzu "kombajnu" funkcyjnego choć z niego coraz rzadziej korzystają. Na poczatku ta sytuacja nie niepokoi lidera, gdyż jego pakiet używają klienci korporacyjni znani z wysokich wymagań i potrzeb oraz poziomu wsparcia. Ale wraz z nakręcającą się spiralą wzrostu funkcjonalności, obsługa pakietu ulega takiej komplikacji, że nawet ci "power userzy" chcą czegoś "świeżego". I tu mamy przykłady firm "spiących gigantów" jak DEC, Sears, AOL, które przespały zmiany i musiały odejść jak dinozaury (coś w tym jest, ponieważ w filmach reklamowych MS Office 2007, występują pracownicy z głowami tych starożytnych gadów). Oczywiście oficjalne komunikaty MS będą wszystkiemu zaprzeczać, przecież MS jest od dawna liderem aplkacji on-line, ale oferując je traci na sprzedaży swych aplikacji desktopowych. Z drugiej strony G ryzykuje nie tylko porażką w segmencie aplikacji biurowych, ale może stracić pierwszeństwo w swych podstawowym biznesie - wyszukiwaniem informacji. Sprzedaż reklam a świadczenie usług to są dwie różne rzeczy i wymagają wyspecjalizowanych służb i biur marketingowych - http://www.forbes.com/2007/02/23/microsoft-google-software-oped_cx_0223blodget.html?partner=tentech_newsletter

  6. Percepcja konsumenta - Jeszcze do niedawna wydawało się, że produkt obsługujacy dwie rzeczy jest lepszy od produktu obsługującego pojedyńczą funkcję. Ostatnie badanie wykazały jednak paradoks, produkty reklamujące się jako "all-in-one" postrzegane są jako gorsze użytkowo od wyspecjalizowanych. Na tej fali pojawiają się produkty wyspecjalizowane na obsługę jednej funkcji ale robiącej to doskonale (po co komu kombajn - radio, telefon i aparat cyfrowy, kiedy żadena z tych funkcji nie jest wykonywana perfekcyjnie, lepiej kupić taniej tylko telefon, który w swych przeznaczeniu doskonale realizuje swoje funkcje). Ryzyko firmy zaczynajacej od produktu jednofunkcyjnego i zmierzajacego do wielofunkcjonalności jest duże (firma Montblanc - od producenta piór do producenta luksusowych dóbr, czy Porsche od samochodów sportowych do pomocniczych). Czasami może to się udać np. iPhone (apple) czy kombajn (drukarka+faks+scanner+cos tam jeszcze) HP. Jednakże badania rynku wykazują nieufność konsumenta do takich produktów (szczególnie łączących tak różne obszary technologiczne) i obawa i poprawne działanie wszystkich elementów. Drugim utrudniem jest wybór ceny takiego produktu. Propozycja cenowa HP, który wycenił kombajn na poziomie zwykłej drukarki wzbudza nieufność klienta (jak? za tą samą cenę mamtrzy razy więcej możliwości?). Jest wyjatek - rynek oprogramowania - percepcja odbiorcy produktów softwarowych jest taka, że dostaje tę samą technologię różniącą się jedynie WARTOŚCIĄ DODANĄ tj. ludzkim IP (intelectual property). Dlatego powyższa reguła nie działa w stosunku do oprogramownia. Tu działa natomiast prawo, byle nie za tanio ponieważ coś może być zrobione po "łebkach" (ponieważ nie starczyło czasu i pieniędzy choćby na testowanie i projektowanie) - http://www.forbes.com/2007/02/16/all-in-one-inferior-biz_cx_ee_0219papers.html?partner=tentech_newsletter
  7. http://www.mindomo.com/main.php - online mind mapping