Bonjour à tous,
quelques précisions supplémentaires à propos de Tox Phone :
* API's
Le core du projet dispose d'une API officielle, écrite en C, et de trois
librairies wrapper respectivement en Java (jToxCore), en Python (PyTox)
et en Racket (libtoxcore-racket), toutes trois disponibles sur GitHub
(voir liens). L'API officielle est divisée en deux parties : toxcore et
libtoxkeys. La première gère les connexions entre les clients ainsi que
les communications, la deuxième est dédiée à la gestion des clés.
* Bootstrap et DHT
Lors du démarrage de Tox, la procédure afin de rentrer dans le réseau
DHT est la suivante :
- Recherche d'un autre serveur sur le LAN.
- Si il n'en trouve aucun, il se connecte en utilisant des serveurs
vérifiés, publiés sous forme de liste sur le site du projet.
* Sécurité et clés
La documentation indique l'implémentation et l'utilisation des jeux de
clé par un exemple :
Alice adds Bob to her friends list by adding his 32 byte public key
(client_id) to her friends list.
2 cases:
case 1: Alice adds Bobs public key and bob waits for Alice to attempt to
connect to him.
case 2: Bob and Alice add their respective public keys to their friends
list at the same time.
case 1: Alice sends a crypto request packet to bob with the encrypted
part containing the friends request like so
Bob receives the request and decrypts the message using the function
crypto_box_open()
If the message decrypts successfully (If Alice is already in Bobs
friends list => case 2), if Alice is not in Bob's friends list and the
nospam is good: Bob is prompt to add Alice. If Bobs accepts Alice's
friends request he adds her public key to his friends list.
case 2: Bob and Alice both have the others public key in their friends
list, they are ready for the next step
In the next step only crypto_box() is used for encryption and only
crypto_box_open() for decryption (just like in the last step.)
As soon as they connect they each generate a new keypair which will only
be used for the current connection (The session keys). They then send
themselves the following packet (the crypto handshake) (encrypted part
encrypted with the public nonce in the packet the public key of the
receiver and private key of the sender)
[char with a value of 02][Senders Public key (client_id) (32
bytes)][Random nonce (24 bytes)][Encrypted message containing: [random
24 bytes base nonce][session public key of the peer (32 bytes)]]
If the packet is decrypted successfully: Each start using the secret
nonce, the public key provided by the other and their own session
private key to encrypt data packets (adding to it + 1 for each packet.)
Each node sends themselves an empty data packet (data packet with 4
encrypted zero bytes) Data packet:
[char with a value of 03][Encrypted data]
Each data packet received is decrypted using the secret nonce sent to
the other (with +1 added for the first packet +2 for the second, etc...)
along with the private session key of the receiver. Every data packet
sent is encrypted using the secret nonce we received (with +1 added for
the first packet +2 for the second, etc...), the session public key of
the receiver and the session private key of the sender.
* Dépendances et librairies utilisées
Le build et l'installation de ToxCore nécessitent plusieurs librairies
et outils. La liste d'installation pour un OS Debian-Like est la suivante :
* Librairies
- libsodium
- libopus
- libvpx
- libtoxav
- openal
- ffmpeg
- sdl
- swscale
- libconfig
- ncurses
* Outils
- build-essential
- libtool
- autotools-dev
- automake
- checkinstall
- git
- check
- yasm
Une procédure d'installation et de compilation complète pour différentes
plate-formes est disponible dans le repo de ToxCore
(https://github.com/irungentoo/ProjectTox-Core/blob/master/INSTALL.md).
* Fonctionnalités
Les appels vocaux et vidéos sont en fait déjà fonctionnels, mais ne sont
implémentés que sous le client "Toxic".
* Liens
http://api.libtoxcore.so/index.html
http://wiki.tox.im/Crypto
https://github.com/Tox/
Bonne fin de journée !
_______________________________________________
SFLphone mailing list
[email protected]
http://lists.savoirfairelinux.net/mailman/listinfo/sflphone