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