sito-hackit-19/talks/tomb/res/slides.sent.txt
2019-06-04 17:30:35 +02:00

246 lines
5.2 KiB
Text

Tomb - el sepulturero criptográfico
Jaromil @ Dyne.org
Hackmeeting 2019
NextEmerson CSA
Firenze
https://dyne.org/software/tomb
https://github.com/dyne/tomb
https://files.dyne.org/tomb
http://freshcode.club/projects/tomb
Una Tomba consiste di:
- File .tomb che e' il file grande con i dati
- File .key che e' la chiave per accedere ai dati
- Password da memorizzare per attivare la chiave
l'estensione non e' obbligatoria,
puo' essere una qualsiasi
Scava una tomba di 100 MiB:
:
tomb dig -s 100 loculo.tomb
Forgia una chiave (e scegline la password)
:
tomb forge -k loculo.key
Sigilla la tomba con la chiave
:
tomb lock -k loculo.key loculo.tomb
A questo punto il file `loculo.tomb`
puo' essere aperto solo in
presenza della chiave `loculo.key`
e conoscendone la password.
Apri loculo.tomb
su /media/loculo
usando loculo.key
:
tomb open -k loculo.key loculo.tomb
Per chiuderla
tomb close loculo
oppure solo
tomb close
C'e' altro:
tomb resize
tomb index
tomb search
tomb list
tomb ps
tomb slam
...
!Quiz!
l'algoritmo crittografico
che protegge la chiave
con una password
e' simmetrico o asimmetrico?
Fully compliant with the FIPS 197 advanced encryption standard
published by NIST and with the following industry standards:
Information technology -- Security techniques -- Encryption algorithms
ISO/IEC 18033-1:2015 -- Part 1: General
ISO/IEC 18033-3:2010 -- Part 3: Block ciphers
Tomb implementation is known to address at least partially issues raised in:
Information technology -- Security techniques -- Key management
ISO/IEC 11770-1:2010 -- Part 1: Framework
ISO/IEC 11770-2:2008 -- Part 2: Mechanisms using symmetric techniques
ISO/IEC 27005:2011 Information technology -- Security techniques
-- Information security risk management
ISO/IEC 24759:2014 Information technology -- Security techniques
-- Test requirements for cryptographic modules
Usi un po' piu' avanzati di Tomb
Per la sicurezza dei dati
e' molto importante
tenere la chiave
separata dalla tomba
su differenti supporti fisici:
memorie di massa,
chiavette usbe o server online.
Con Tomb e' anche possibile
nascondere la chiave dentro
una JPEG
:
tomb bury -k loculo.key sorrento.jpeg
tomb open -k sorrento.jpeg loculo.tomb
Per tenere la chiave su un server
e usarla senza mai salvarla in locale
:
scp loculo.key io@casa.dyndns.net
wipe loculo.key
ssh io@casa.dyndns.net 'cat ./loculo.key' |
tomb open loculo.tomb -k -`
Nuova feature di Tomb: l'Oracolo della Sfinge!
Tomb usando l'oracolo di sphinx
Libsphinx e' un'implementazione libera
del "Password-authenticated key agreement"
anche detto "PAKE"
https://github.com/stef/libsphinx
https://github.com/stef/pwdsphinx
Fatti coraggio, clona Tomb ed entra nell'anfratto
git clone https://github.com/dyne/tomb
Se sei un hipster e usi docker basta fare
:
cp -v extras/test/Dockerfile .
docker build -t dyne/tomb .
docker run -it --privileged dyne/tomb /bin/bash
Istalla le dipendenze di sistema
:
apt-get update -y -q && apt-get install -y -q \
zsh cryptsetup gawk libgcrypt20-dev steghide qrencode \
python python2.7 python3-pip python3-dev libsodium-dev \
libssl-dev make gcc g++ sudo gettext file bsdmainutils
:
per sphinx servono `python python2.7 python3-pip
python3-dev libsodium-dev`
eppoi il pacchetto wheel in pip3
:
pip3 install setuptools wheel
Compila ed istalla sphinx
:
set -ex
git clone https://github.com/stef/libsphinx
cd libsphinx
git submodule update --init --recursive --remote
cd src
sed -i 's|/usr/local|/usr|' makefile
make
sudo make install
ldconfig
pip3 install pwdsphinx
sudo mkdir -p /etc/sphinx
Istalla la configurazione di sphinx da dentro tomb
:
cp test/sphinx.cfg /etc/sphinx/config
[client]
verbose = False
address = 127.0.0.1
port = 2355
datadir = /tmp/.sphinx/
[server]
verbose = False
address = 127.0.0.1
port = 2355
datadir = /tmp/.sphinx/
keydir = /tmp/.sphinx/
[websphinx]
pinentry=/usr/bin/pinentry
log=
Fai partire l'oracolo di sphinx (un demone in python)
:
oracle &
usa il client sphinx per creare, ritrovare e cambiare le password
:
echo 'password principale'
| sphinx create utente https://example.com ulsd 0
ulsd sono delle flags:
- `u` lettere maiuscole
- `l` lettere minuscole
- `s` simboli
- `d` numeri
Get
:
echo 'password principale'
| sphinx get username https://example.com
Change + Commit
:
echo 'password principale'
| sphinx change username https://example.com
echo 'password principale'
| sphinx commit username https://example.com
Delete
:
sphinx delete username https://example.com
Proviamo a fare una tomba con sphinx
:
docker run -it --privileged dyne/tomb /bin/bash
Scava una tomba di 10MiB
:
tomb dig -s 10 test-sphinx.tomb
Crea una chiave usando l'oracolo di sphinx
:
tomb forge --sphx-user jaromil --sphx-host https://dyne.org
Blocca la tomba con la chiave nell'oracolo di sphinx
:
tomb lock --sphx-user jaromil --sphx-host https://dyne.org \
-k test-sphinx.key test-sphinx.tomb
Apri la tomba con la chiave nell'oracolo di sphinx
:
tomb open --sphx-user jaromil \
--sphx-host https://dyne.org \
-k test-sphinx.key test-sphinx.tomb
Domande?
Risposte?
!Quiz!
:^)
,--.
( o O)
\|||
,--.
( x o)
\|||
,--.
( x x)
\|:|