Je suppose pour faire une application Web où les utilisateurs peuvent se connecter sur cette plate-forme avec nom d'utilisateur et mot de passe (je veux faire une base de données MySQL pour fixer nom d'utilisateur et mot de passe). Après que l'utilisateur est connecté, il sélectionne un fichier de son ordinateur et envoie ce fichier sur le serveurApplication Web avec charme Crypto
Je veux crypter ce fichier à un groupe d'utilisateurs (je veux utiliser la cryptographie HybridABE avec Charm Crypto).
Maintenant, j'ai cette question d'architecture/programmation.
Supposons que nous ayons ce programme:
from charm.toolbox.pairinggroup import PairingGroup,GT
from charm.adapters.abenc_adapt_hybrid import HybridABEnc as HybridABEnc
from charm.schemes.abenc.abenc_waters09 import CPabe09
group = PairingGroup('SS512')
cpabe = CPabe09(group)
hyb_abe = HybridABEnc(cpabe, group)
policy = '((ONE or THREE) and (TWO or FOUR))'
msg = "hello world this is an important message."
(master_secret_key, master_public_key) = hyb_abe.setup()
attr_list = ['THREE', 'ONE', 'TWO']
secret_key = hyb_abe.keygen(master_public_key, master_secret_key, attr_list)
cipher_text = hyb_abe.encrypt(master_public_key, msg, policy)
decrypted_msg = hyb_abe.decrypt(master_public_key, secret_key, cipher_text)
Où puis-je enregistrer le maître clé privée et le Maître Public Key? Sur un serveur de répertoire comme le fichier? Sur la base de données?
Où puis-je sauvegarder la clé secrète de l'utilisateur?
simplement et clair. Une chose: quand vous dites que les clés secrètes de l'utilisateur doivent être données à l'utilisateur, comment pouvez-vous envoyer ces clés? Et comment/où pouvez-vous stocker ces clés? Pouvez-vous me donner un exemple du point 2? – JLo
Une clé consiste généralement en plusieurs valeurs (par exemple des éléments du groupe d'appariement). Ceux-ci sont séparément sérialisables en octets et Charm fournit les [fonctions nécessaires pour le faire] (http://stackoverflow.com/a/34447301/1816580). Maintenant, le défi consiste à mettre les multiples valeurs sérialisées dans un format (fichier). Il y a d'innombrables façons de le faire. Vous pouvez placer les valeurs sérialisées dans un objet différent qui n'utilise que des types Python natifs, puis [pickle it] (https://docs.python.org/2/library/pickle.html). Vous pouvez écrire votre propre format de fichier. Vous pourriez utiliser quelque chose comme Protobuf. –
Pouvez-vous m'expliquer comment un utilisateur peut crypter le côté client de données avec la clé publique principale? Je suis en train de développer une application web, et je ne sais pas comment je peux chiffrer les données avec une clé sortie de Charm Crypto (côté serveur). Puis-je utiliser JavaScript? (Côté client, je ne peux pas utiliser Pyhton parce que c'est une application web). Merci pour le soutien de la tournée. – JLo