0

我想制作一个 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)

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

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

4

1 回答 1

0

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

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