Web应用程序与魅力加密



我想做一个web应用程序,用户可以用用户名和密码登录这个平台(我想做一个MySQL数据库来盯着用户名和密码)。

当用户登录后,他从他的计算机中选择一个文件并将该文件发送到服务器。

我想加密这个文件给一组用户(我想使用HybridABE加密与Charm加密)。

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

假设我们有这样一个程序:

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)

主私钥和主公钥存放在哪里?在目录服务器上,比如文件?在数据库上?

用户的私钥保存在哪里

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

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

最新更新