使用 Charm Crypto 的 Web 应用程序
Web Application with Charm Crypto
我想做一个 web 应用程序,用户可以用用户名和密码登录这个平台(我想做一个 MySQL 数据库来查看用户名和密码)。
用户登录后,他从他的计算机中选择一个文件并将该文件发送到服务器。
我想将此文件加密给一组用户(我想使用 HybridABE 密码术和 Charm Crypto)。
现在我有这些 architectural/programming 个问题。
假设我们有这个程序:
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)
我在哪里可以保存主私钥和主 Public 密钥?在像文件这样的目录服务器上?在数据库上?
我在哪里可以保存用户的密钥?
基于属性的加密系统通常只创建一次并且只有一个主密钥和 public 个密钥对。
- 主密钥存储在生成用户密钥的服务器上。由于通常只有一个主密钥,您甚至可以生成它并将其放入服务器代码的源代码中。当然,你可以把它包含在服务器数据库中。
- 必须将用户密钥提供给用户。请记住为您的用户提供某种 (public) 标识符以及用户密钥,以便您可以管理特定用户在服务器端具有的属性列表。否则,当您尝试更新属性时,您会很头疼,因为您将需要用他们的新用户密钥联系用户。
- 主 public 键(通常称为 "public parameters" 或简称为 "public key")是 public。将它包含在您提供给用户的包中是个好主意。您还可以创建一个 API 端点,以便感兴趣的 "users" 可以向您的服务器请求 public 密钥。
我想做一个 web 应用程序,用户可以用用户名和密码登录这个平台(我想做一个 MySQL 数据库来查看用户名和密码)。
用户登录后,他从他的计算机中选择一个文件并将该文件发送到服务器。
我想将此文件加密给一组用户(我想使用 HybridABE 密码术和 Charm Crypto)。
现在我有这些 architectural/programming 个问题。
假设我们有这个程序:
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)
我在哪里可以保存主私钥和主 Public 密钥?在像文件这样的目录服务器上?在数据库上?
我在哪里可以保存用户的密钥?
基于属性的加密系统通常只创建一次并且只有一个主密钥和 public 个密钥对。
- 主密钥存储在生成用户密钥的服务器上。由于通常只有一个主密钥,您甚至可以生成它并将其放入服务器代码的源代码中。当然,你可以把它包含在服务器数据库中。
- 必须将用户密钥提供给用户。请记住为您的用户提供某种 (public) 标识符以及用户密钥,以便您可以管理特定用户在服务器端具有的属性列表。否则,当您尝试更新属性时,您会很头疼,因为您将需要用他们的新用户密钥联系用户。
- 主 public 键(通常称为 "public parameters" 或简称为 "public key")是 public。将它包含在您提供给用户的包中是个好主意。您还可以创建一个 API 端点,以便感兴趣的 "users" 可以向您的服务器请求 public 密钥。