Free TSA proporciona una autoridad de sellado de tiempo de uso libre y gratuito. Los sellos de tiempo forman parte de la infraestructura de clave pública X.509 y tienen como objetivo garantizar la integridad de una determinada información. Demuestran o evidencian que un determinado archivo se ha mantenido inalterado en el tiempo a partir de una determinada fecha.
$ openssl ts -query -data file.png -no_nonce -sha512 -cert -out file.tsq
Envía la solicitud a freeTSA.org y espera el sello de tiempo en forma de fichero tsr TimeStampResponse).
$ curl -H "Content-Type: application/timestamp-query" --data-binary '@file.tsq' https://freetsa.org/tsr > file.tsr
Con openssl se puede verificar el sello de tiempo (también se puede hacer online desde la web).
$ openssl ts -verify -in file.tsr -queryfile file.tsq -CAfile cacert.pem -untrusted tsa.crt
###########################################################
# 1. Crear un fichero solicitud de sellado (TimeStampRequest) usando SHA 512.
###########################################################
$ openssl ts -query -data file.png -no_nonce -sha512 -out file.tsq
# Utilizando -cert, FreeTSA incluye el certificado raiz cacert.pem en el fichero tsr devuelto. (Opcional)
# Si se ha utilizado "-cert" al crear el archivo tsq, la verificación del mismo no necesita de "-untrusted".
$ openssl ts -query -data file.png -no_nonce -sha512 -cert -out file.tsq
# Como sellar muchos ficheros fácilmente?
# Para realizar un sellado de multiples archivos se puede crear un listado con sus hashes SHA-512 y sellarlo.
# Empaquetar los ficheros en un archivo zip, rar, img, tar, etc y sellarlo sería otra opción igual de válida.
# Ejemplo: crear un listado con los hashes de todos los archivos del directorio /var/log/
$ find /var/log/ -type f -exec sha512sum {} + > compilation.txt
###########################################################
# 2. cURL: Realizar sellados de tiempo (HTTP / HTTPS / Tor).
###########################################################
$ curl -H "Content-Type: application/timestamp-query" --data-binary '@file.tsq' https://freetsa.org/tsr > file.tsr
# Utilizando la red Tor para sellar un fichero tsq.
$ curl -k --socks5-hostname 127.0.0.1:9050 -H "Content-Type: application/timestamp-query" --data-binary '@file.tsq' https://4bvu5sj5xok272x6cjx4uurvsbsdigaxfmzqy3n3eita272vfopforqd.onion/tsr > file.tsr
# tsget es útil para sellar multiples solicitudes (tsq): https://www.openssl.org/docs/manmaster/apps/tsget.html
$ tsget -h https://freetsa.org/tsr file1.tsq file2.tsq file3.tsq
###########################################################
# 3. Verificar sellos de tiempo.
###########################################################
$ wget https://freetsa.org/files/tsa.crt
$ wget https://freetsa.org/files/cacert.pem
# Información el sellado de tiempo (fichero tsr).
$ openssl ts -reply -in fichero.tsr -text
# Dos formas de verificar la autenticidad del sellado.
$ openssl ts -verify -data fichero -in fichero.tsr -CAfile cacert.pem -untrusted tsa.crt
$ openssl ts -verify -in fichero.tsr -queryfile fichero.tsq -CAfile cacert.pem -untrusted tsa.crt
Verification: OK
$ perl client.pl freetsa.org 318 file client: tsq file: file.tsq client: tsr file: file.tsr client: [Connected to freetsa.org:318] client: client: transfer of the file.tsq to the server completed client: 40 file.tsq # Por defecto el fichero TSQ exige una respuesta TSR con la cadena completa de certificados (raíz e intermedios). # Si no se desea incluir la cadena de certificados en las respuestas (ficheros tsr), se debe cambiar la linea 16 por la 15 en el script.
$ $ curl --data "screenshot=https://www.fsf.org/&delay=n" https://freetsa.org/screenshot.php > screenshot.pdf # Curl + HTTP 2.0: $curl --http2 $ curl --data "screenshot=https://www.fsf.org/" https://freetsa.org/screenshot.php > screenshot.pdf $ curl --data "screenshot=https://www.fsf.org/&delay=y" https://freetsa.org/screenshot.php > screenshot.pdf # (Voy a tener suerte) # REST API en Tor: Simplemente se deben agregar las opciones "-k --socks5-hostname localhost:9050". # Dominios ".onion" dentro de Internet. $ curl -k --data "screenshot=https://4bvu5sj5xok272x6cjx4uurvsbsdigaxfmzqy3n3eita272vfopforqd.onion/&delay=y&tor=y" https://freetsa.org/screenshot.php > screenshot2.pdf # Dominios ".onion" dentro de la red Tor. $ curl -k --socks5-hostname localhost:9050 --data "screenshot=https://4bvu5sj5xok272x6cjx4uurvsbsdigaxfmzqy3n3eita272vfopforqd.onion/&delay=y&tor=y" https://4bvu5sj5xok272x6cjx4uurvsbsdigaxfmzqy3n3eita272vfopforqd.onion/screenshot.php > screenshot2.pdf
# Certificate files. openssl ocsp -sha512 -CAfile cacert.pem -issuer cacert.pem -cert tsa.crt -url http://freetsa.org:2560 -resp_text openssl ocsp -sha512 -CAfile cacert.pem -issuer cacert.pem -cert cacert.pem -url http://freetsa.org:2560 -resp_tex # Serial number. openssl ocsp -sha512 -CAfile cacert.pem -issuer cacert.pem -serial "0xC1E986160DA8E982" -url http://freetsa.org:2560 -resp_text openssl ocsp -sha512 -CAfile cacert.pem -issuer cacert.pem -serial "0xC1E986160DA8E980" -url http://freetsa.org:2560 -resp_text
$ wget http://www.freetsa.org/crl/root_ca.crl $ openssl crl -in root_ca.crl -noout -text
## Normal DNS (Port 53): Any freeTSA IP (IPv4 or IPv6) will give you normal DNS resolution service. ## NTP Server: freetsa.org (IPv4 / IPv6) $ ntpdate freetsa.org ## Freetsa offers DoT on port 853 (IPv4 / IPv6). Systemd-resolved example: /etc/systemd/resolved.conf DNS=2607:f130:0:f8::8198:f3f4#www.freetsa.org 2607:f130:0:f8::817e:69c7#www.freetsa.org 2607:f130:0:f8::ca3e:d470#www.freetsa.org 2607:f130:0:f8::8418:ec2d#www.freetsa.org 2607:f130:0:f8::2e57:96b#www.freetsa.org # Don't use all the interfaces, choose one or two, for example the only IPv4 and some other IPv6 of your choice. ## Two DNSCRYPT FreeTSA servers (No logs, No DNSSEC, No anonymized DNS and No compatible with anonymization (https://github.com/DNSCrypt/dnscrypt-proxy/issues/1251)) Public server address: [2607:f130:0:f8::8418:ec2d]:553 Provider public key: d8ffbb42e031be7a79730b45568d496a4e8acb59aa8366fd6ab91e272a7d16e4 Provider name: 2.dnscrypt-cert.freetsa.org DNS Stamp: sdns://AQcAAAAAAAAAH1syNjA3OmYxMzA6MDpmODo6MzA4NTplOTYxXTo1NTMg2P-7QuAxvnp5cwtFVo1Jak6Ky1mqg2b9arkeJyp9FuQbMi5kbnNjcnlwdC1jZXJ0LmZyZWV0c2Eub3Jn Public server address: 142.171.183.141:553 Provider public key: d8ffbb42e031be7a79730b45568d496a4e8acb59aa8366fd6ab91e272a7d16e4 Provider name: 2.dnscrypt-cert.freetsa.org DNS Stamp: sdns://AQcAAAAAAAAAETE3My44Mi4xOC4yMzg6NTUzINj_u0LgMb56eXMLRVaNSWpOistZqoNm_Wq5HicqfRbkGzIuZG5zY3J5cHQtY2VydC5mcmVldHNhLm9yZw ## DNSCrypt client: https://github.com/DNSCrypt/dnscrypt-proxy
Aplicación de escritorio FreeTSA
Lo más fácil es crear mediante el navegador un enlace del tipo aplicación. Es simplemente ejecutar un comando.
### Firefox # Se debe activar primeramente SSB: En la barra de direcciones "about:config" > "browser.ssb.enabled true" # En Windows: Firefox > Page Actions (Tres puntos a la derecha de la barra de direcciones) > "Use this site in App Mode" crea directamente un enlace en el escritorio (No en GNU/Linux). # En sistema GNU/Linux se puede crear un enlace de escritorio / script con el siguiente comando: firefox --ssb https://freetsa.org/index_en_app.php ### Chromium / Chrome. chromium --app=https://freetsa.org/index_en_app.php chrome --app=https://freetsa.org/index_en_app.php
Direcciones IPv6 de FreeTSA
Estas direcciones IPv6 pueden ser usadas también para consultas DNSCRYPT (UDP/TCP), DoT (DNS over TLS), DNS normal y servidor NTP.
2607:f130:0:f8::8198:f3f4 2607:f130:0:f8::817e:69c7 2607:f130:0:f8::ca3e:d470 2607:f130:0:f8::8418:ec2d 2607:f130:0:f8::2e57:96b
Security based HTTP response headers
- HPKP ayuda a prevenir ataques MITM y certificados fake.
- HSTS fuerza el uso de HTTPS en el navegador y mitiga algunos ataques de hombre en el medio.
- CSP ayuda a prevenir ataques XSS mediante inyecciones de código.