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 > --------------------------------------------------------------
smime.p7s
Description: S/MIME cryptographic signature
