Ahoj,

na overovani platnosti zpravy v danem obdobi ma slouzit prave casove
razitko. Tusim, ze teoreticky je to digitalni podpis (hash), ktery je z
hashe zpravy a casoveho razitka.

A aby bylo razitko nejak garantovane, je treba mit nejakou autoritu, ktera
vydava razitka. Ta potom garantuje, ze byl dokument v danem case platny.

Kdyz jsem ve sve dobe hledal nejake informace ohledne tohohle, tak byla
situace celkem tristni. Bylo spusteno (tehda tusim jedine) overovani
garantovene MICRem, viz http://www.micr.cz/scripts/detail.php?id=3089.

Treba se situace uz trosku zlepsila :) 

S pozdravem
  Tomáš Polešovský

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
> Behalf Of Martin Kuba
> Sent: Monday, December 18, 2006 12:05 PM
> To: Java
> Subject: Re: Nastroje na overovani retezcu certifikatu
> 
> Lukas Zapletal wrote:
> > Dobry den,
> >
> > jake mechanismy ma Java pro overovani retezcu certifikatu? Rekneme ze
> > jsem podepsal dokument nejakym certifikatem a nyni bych potreboval
> > korektne overit platnost podpisu timto certifikatem. Predevsim:
> >
> > - zda je certifikat platny (casove)
> > - projit cely retezec od ROOT autority az po konkretni (podpisovy)
> > certifikat a overit platnost
> > - nasledne zkontrolovat platnost vlastniho digitalniho podpisu (otisku)
> 
> Delejte to v opacnem poradi, tj. nejdriv overit korektnost digestu zpravy,
> a pak platnost certifikatu.
> 
> Platnost certifikatu se overuje takhle (beru z jednoho sveho starsiho
> zdrojaku,
> upravte si to):
> 
> import java.io.File;
> import java.io.IOException;
> import java.security.InvalidAlgorithmParameterException;
> import java.security.NoSuchAlgorithmException;
> import java.security.NoSuchProviderException;
> import java.security.cert.*;
> import java.util.ArrayList;
> import java.util.Arrays;
> import java.util.HashSet;
> import java.util.Set;
> /**
>  * Keeps certificates of trusted Certification Authorities.
>  *
>  * @author Martin Kuba [EMAIL PROTECTED]
>  */
> public class TrustedCAs {
> 
>     /**
>      * Instance of X509 certificate factory.
>      */
>     protected CertificateFactory certFact;
>     /**
>      * Instance of PKIX certificate path validator.
>      */
>     protected CertPathValidator certPathValidator;
>     /**
>      * Set of [EMAIL PROTECTED] java.security.cert.TrustAnchor TrustAnchor}s.
>      */
>     protected Set<TrustAnchor> cas = null;
>     protected PKIXParameters params = null;
>     static final String BOUNCYCASTLE = "BC";
>     /**
>      * Creates trusted CAs from supplied set of TrustAnchors.
>      *
>      * @see java.security.cert.TrustAnchor
>      */
>     public TrustedCAs(Set<TrustAnchor> cas) throws CertificateException,
> NoSuchAlgorithmException, NoSuchProviderException {
>         this.cas = cas;
>         //must use BC provider so that X509Certificates from SMIMESigned
> can be verified
>         certFact = CertificateFactory.getInstance("X.509",BOUNCYCASTLE);
>         certPathValidator =
> CertPathValidator.getInstance("PKIX",BOUNCYCASTLE);
>     }
>    /**
>      * Validates a certificate chain.
>      * Builds a CertPath from the chain and validates it.
>      *
>      * @return certificate of the matching CA
>      */
>     public X509Certificate validateCertChain(X509Certificate[] chain)
> throws CertPathValidatorException, CertificateException,
> InvalidAlgorithmParameterException {
>         CertPath path = certFact.generateCertPath(Arrays.asList(chain));
>         return validateCertPath(path).getTrustedCert();
>     }
>     /**
>      * Validates a certificate path.
>      *
>      * @return matching CA
>      */
>     public TrustAnchor validateCertPath(CertPath path) throws
> CertPathValidatorException, InvalidAlgorithmParameterException {
>         if (this.params == null) {
>             this.params = new PKIXParameters(this.cas);
>             this.params.setRevocationEnabled(false);
>         }
>         return ((PKIXCertPathValidatorResult)
> certPathValidator.validate(path, params)).getTrustAnchor();
>     }
> }
> 
> Pro overovani musite pouzivat stejny Security Provider, ktery vyrobil
> certifikaty, coz ja jsem musel mit BouncyCastle, neb certifikaty
> jsem bral z S/MIME podpisu z e-mailu. Ale staci parametr vynechat,
> aby to vzalo default provider.
> 
> > A jeste bych mel jeden dotaz - kdyz musim dokument archivovat nekolik
> > let, jak se potom resi overovani podpisu takoveho dokumentu, ktery byl
> > podepsan jiz neplatnym -- tj expirovanym -- (ale v dobe podpisu
> > platnym) certifikatem? Mam na mysli to, ze kdyz bych chtel treba po 10
> > letech znovu overit, zda byl dokument opravdu spravne podepsan, tak
> > nemam tu moznost.
> 
> To IMHO nejde. Cele PKI je delane na kratkodobe veci, protoze
> podstatnou soucasti bezpecnosti certifikatu je, ze neuplynul
> dostatecne dlouhy cas, aby ho nekdo zlomil silou.
> 
> Dodnes nechapu, jak si autori zakona o elektronickem podpisu
> predstavuji, ze budou overovat treba el. podpis na kupni smlouve
> na dum po dvaceti letech.
> 
> Makub
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Supercomputing Center Brno             Martin Kuba
> Institute of Computer Science    email: [EMAIL PROTECTED]
> Masaryk University             http://www.ics.muni.cz/~makub/
> Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
> --------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Odpovedet emailem