Zeitstempeldienst der DFN-PKI
Im Rahmen der DFN-PKI kann ein Zeitstempeldienst verwendet werden.
Der Zeitstempeldienst des DFN dient dazu, den status quo einer Datei zu einem bestimmten Zeitpunkt durch eine vertrauenswürdige Instanz (hier DFN-PKI) zu bescheinigen.
Der DFN Zeitstempeldienst kann im Rahmen der DFN-Satzung für nicht gewerbliche Zwecke verwendet werden.
Ein eigenes/gesondertes Zertifikat ist hierfür nicht nötig.
Der Zeitstempelserver ist über die URL http://zeitstempel.dfn.de zu erreichen - eine Abfrage diese URL im Browser ist nicht möglich!
Verwendet werden können Programme wie Adobe Acrobat oder openssl (ab Version 1.0, sie nachfolgend) aber auch Komponenten von Microsoft bzw. Java.
Zudem steht für Java und C# die Bibliotheken BouncyCastle zur Verfügung bzw. mit BouncyCastlePP ein Port von BouncyCastle für C++.
Laut Information des DFN soll openssl (>= 1.1.xx) funktionieren - ggf. muss aber openssl selber gebaut werden
openssl selber bauen |
cd ~ git clone https://github.com/openssl/openssl.git cd openssl ./Configure linux-x86_64 ./config --prefix=${HOME}/opt/openssl --openssldir=${HOME}/opt/openssl make make test export OPENSSL=${HOME}/opt/openssl export C_INCLUDE_PATH=$OPENSSL/include export LIBRARY_PATH=$OPENSSL/lib export LD_LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH export OPENSSL_PREFIX=${OPENSSL} echo ${OPENSSL} echo ${C_INCLUDE_PATH} echo ${LD_LIBRARY_PATH} echo ${OPENSSL_PREFIX} ${HOME}/opt/openssl/bin/openssl OpenSSL> version OpenSSL 1.1.1-pre5-dev xx XXX xxxx OpenSSL> |
[[ -f ${HOME}/opt/openssl/bin/openssl ]] && (export MYOPENSSL="${HOME}/opt/openssl/bin/openssl") || (export MYOPENSSL="openssl") |
Beispiel-Code erzeugen |
echo -e "#\!/usr/bin/env bash\n\n#© by ra@rwth-aachen.de\n\n echo 'hello dfn timestamp world'\n\n#########\n# EOF" > dfn-timestamp-test.sh chmod 750 dfn-timestamp-test.sh ./dfn-timestamp-test.sh hello dfn timestamp world |
Erzeugen des "timestamp request" |
${MYOPENSSL} ts -query -data dfn-timestamp-test.sh -cert -sha256 -no_nonce -out dfn-timestamp-test.tsq |
Den "timestamp request" an der Zeitstempel-Server übermittel |
curl -s -S -k -H "Content-Type: application/timestamp-query" --data-binary @dfn-timestamp-test.tsq "http://zeitstempel.dfn.de" -o dfn-timestamp-test.tsr |
Verifikation des Zeitstempels |
wget https://pki.pca.dfn.de/dfn-ca-global-g2/pub/cacert/chain.txt ${MYOPENSSL} ts -verify -in dfn-timestamp-test.tsr -data dfn-timestamp-test.sh -CAfile chain.txt ${MYOPENSSL} ts -verify -queryfile dfn-timestamp-test.tsq -in dfn-timestamp-test.tsr -CAfile chain.txt |
wget https://info.pca.dfn.de/doc/timestampverifier-latest.tar.gz |
tar zxvf timestampverifier-latest.tar.gz cd timestampverifier-1.1 |
sed -i 's/request=req.tsq/request=$1/' verify.sh sed -i 's/java -cp/echo -e "\\n#############################################\\n\\n"\njava -cp/' verify.sh |
./verify.sh ../dfn-timestamp-test.tsq |
Hier sollte dann "Data in response matches data in request." |
${MYOPENSSL} ts -reply -in resp.tsr -text |
Verifizieren der "timestamp response" |
openssl ts -reply -in dfn-timestamp-test.tsr -text Status info: Status: Granted. Status description: Operation Okay Failure info: unspecified TST info: Version: 1 Policy OID: 1.3.6.1.4.1.22177.300.22.1 Hash Algorithm: sha256 Message data: 0000 - 79 ae 3e 21 6f 52 92 ea-f0 00 78 73 fe 95 06 2b y.>!oR....xs...+ 0010 - ce 0c 26 29 89 8f e2 62-dd 9c 06 a5 3a 1f b9 dc ..&)...b....:... Serial number: 0x840AA89C8C03C5373E2680B1A2F61CBE132EBBF1 Time stamp: Nov 30 08:50:24 2016 GMT Accuracy: unspecified Ordering: no Nonce: unspecified TSA: unspecified Extensions: |
Weitere Informationen:
- RFC 3161 - " Internet X.509 Public Key Infrastructure Time-Stamp Protocol "
- Verordnung (EU) Nr. 910/2014 des europäischen Parlaments und des Rates über elektronische Identifizierung und Vertrauensdienste für elektronische Transaktionen im Binnenmarkt und zur Aufhebung der Richtlinie 1999/93/EG
- Bundesdruckerei: "D-TRUST Zeitstempel - Informationen zu den Leitlinien der Public-Key-Infrastruktur (PKI) "
- Ruhr-Uni-Bochum: "Kryptografie mit Bouncy Castle"
- Wikipedia: Comparison of cryptography libraries
- Microsoft: CryptRetrieveTimeStamp function
- BSI:
- "Elektronische Signaturen, Siegel und Zeitstempel"
- eIDAS-Verordnung über elektronische Identifizierung und Vertrauensdienste
- DFN-PKI
- Die Sectigo PKI bietet folgenden Zeitstempel Dienst an https://www.sectigo.com/resource-library/time-stamping-server