使用Charm Crypto的Web应用程序

时间:2016-09-14 14:44:30

标签: web-services cryptography charm-crypto

我想创建一个Web应用程序,用户可以使用用户名和密码登录此平台(我想创建一个MySQL数据库来查看用户名和密码)。

用户登录后,他从计算机中选择一个文件,然后在服务器上发送该文件。

我希望将此文件加密到一组用户(我希望将HybridABE加密与Charm Crypto一起使用)。

现在我有这些架构/编程问题。

假设我们有这个程序:

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)

我在哪里可以保存主私钥和主公钥?在像文件这样的目录服务器上?在数据库?

我可以在哪里保存用户的密钥?

1 个答案:

答案 0 :(得分:0)

基于属性的加密系统通常只创建一次,并且只有一个主密钥和公钥对。

  • 主密钥存储在生成用户密钥的服务器上。由于通常只有一个主密钥,您甚至可以生成它并将其放入服务器代码的源代码中。当然,您可以将其包含在服务器数据库中。
  • 必须向用户提供用户密钥。请记住为用户提供某种(公共)标识符以及用户密钥,以便您可以管理某个用户在服务器端具有的属性列表。否则,当您尝试更新属性时,您会很头疼,因为您需要使用新的用户密钥与用户联系。
  • 主公钥(通常称为“公共参数”或简称“公钥”)是公共的。将它包含在您提供给用户的包中是个好主意。您还可以创建API端点,以便感兴趣的“用户”可以向服务器请求公钥。