0

ユーザーがユーザー名とパスワードを使用してこのプラットフォームにログインできる Web アプリケーションを作成するとします (ユーザー名とパスワードを監視する MySQL データベースを作成したい)。

ユーザーがログに記録された後、ユーザーは自分のコンピューターからファイルを選択し、このファイルをサーバーに送信します。

このファイルをユーザー グループに対して暗号化したい (Charm Crypto で HybridABE 暗号化を使用したい)。

今、これらのアーキテクチャ/プログラミングの質問があります。

次のプログラムがあるとします。

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

通常、属性ベースの暗号化システムは 1 回作成され、マスター秘密鍵と公開鍵のペアは 1 つだけです。

  • マスター秘密鍵は、ユーザー秘密鍵を生成するサーバーに保管されます。通常、マスター シークレット キーは 1 つしかないため、それを生成してサーバー コードのソース コードに入れることもできます。もちろん、サーバー データベースに含めることもできます。
  • ユーザー秘密鍵をユーザーに与える必要があります。特定のユーザーがサーバー側で持っている属性のリストを管理できるように、ユーザーの秘密鍵と共にある種の (公開) 識別子をユーザーに与えることを忘れないでください。そうしないと、属性を更新しようとすると頭が痛くなります。新しいユーザーの秘密鍵をユーザーに連絡する必要があるからです。
  • マスター公開鍵 (通常は「公開パラメーター」または単に「公開鍵」と呼ばれます) は公開されています。ユーザーに提供するパッケージに含めることをお勧めします。関心のある「ユーザー」がサーバーに公開鍵を要求できるように、API エンドポイントを作成することもできます。
于 2016-09-14T18:44:15.963 に答える