Bonjour à tous.
Je suis en train d'élaborer un programme personnel de vidéo-surveillance crypté via une architecture réseau client/serveur.
En gros, il y a un serveur d'authentification qui gère la distribution des clés avec RSA, un serveur de chiffrement qui effectue l'acquisition vidéo, chiffre la vidéo à l'aide d'un chiffrement par flux (ici A5/1 aussi utilisé dans les conversations GSM) permettant à plusieurs client qui d'ouvrir une session au serveur via et récupérer la vidéo chiffré via TCP la déchiffrer et l'afficher à l'écran.
Seul la partie client est développé en Java. Le reste en C.
J'ai développé mon A5/1 en C et il est fonctionnel. J'ai également développé l'acquisition vidéo manuellement (le serveur sera hébergé sur une Debian, du V4L donc.).
Le principe est le suivant, je récupère un tableau à un canal d'unsigned char* représentant l'image en claire. J'ai ma suite chiffrante de 228 bits fraîchement moulu par mon A5/1.
Le but est de de faire un XOR bit à bit entre les 228 bits de ma suite chiffrante et le tableau d'unsigned char*.
Une fois fais, on relance A5/1 qui fournit à nouveau 228 bits et on continue le chiffrement bit à bit avec les 228 autres bit du tableau d'unsigned char* et ceci jusqu'à ce que le tableau soit entièrement chiffré.
La suite chiffrante de 228 bits n'est rien d'autre qu'un tableau à 228 cases (je n'ai pas pu faire autrement malheureusement. Et assembler 64 bits par 64 bits est un casse tête monstrueux).
Le problème est simple, comment partitionner mon tableau pour pouvoir effectuer les xor bit à bit ? On m'a dit qu'il était possible de dévier le problème en transformant les char en code ASCII mais je ne vois vraiment pas comment faire.
Avez vous une idée?
Merci : )