FAME 和增强型基于属性的安全性

1. 引言

使用 CP-ABE(Cipher Policy — Attributed-Based Encryption,密文策略-基于属性的加密),可以根据策略和一组属性生成加密密钥。Shashank Agrawal 和 Melissa Chase 2017年论文《FAME: Fast Attribute-based Message Encryption》(发表于 2017 ACM SIGSAC Conference)中所提出的FAME算法,就是一种CP-ABE。

FAME 使用Type-III pairing groups(如 BNS256),这是最有效的密码学配对。FAME具有以下主要特点:

  • 对策略或属性集的大小没有限制。
  • 允许将任意字符串用作属性。
  • 仅需少量的配对即可解密。
  • 在标准硬度假设下满足自然安全性要求。

通过FAME,可创建一个密文策略以及一个公钥对:

 a := abe.NewFAME ( ) 
// 密钥对
pk, sk, err := a.GenerateMasterKeys ( )

接下来,可实施策略来生成 MSP(monotone span programs,单调跨度程序):

policy:="((Edinburgh AND NHS) OR (Glasgow AND SOCIAL)) AND GOV"
 
msp, err := abe.BooleanToMSP(policy, false)

在这种情况下,需要证明是“Edinburgh and part of the NHS”,或者“ Glasgow and part of social care (SOCIAL)”。除此之外,还需要证明“part of the government (GOV)”。然后可以使用该公钥和该策略加密一条消息 (msg):

 cipher, err := a.Encrypt(msg, msp, pk)

该密文只能使用私钥和正确的属性才能解密:

 gamma := strings.Split(attributes, " ")

 keys, err := a.GenerateAttribKeys(gamma, sk)

 msgCheck, err := a.Decrypt(cipher, keys, pk)

完整代码见https://asecuritysite.com/abe/go_abe02

package main

import (
 "fmt"
 "os"
 "github.com/fentec-project/gofe/abe"
 "strings"
)

func main() {

 policy:="((Edinburgh AND NHS) OR (Glasgow AND SOCIAL)) AND GOV"
 attributes:="Edinburgh NHS Glasgow GOV"
 msg:="Hello"

 argCount := len(os.Args[1:])

        if (argCount>0) { msg= (os.Args[1]) }
        if (argCount>1) { policy= (os.Args[2]) }
        if (argCount>2) { attributes= (os.Args[3]) }

 a := abe.NewFAME()

 // Key Pair
 pk, sk, err := a.GenerateMasterKeys()

 if err != nil {
  fmt.Printf("Failed to generate master keys: %v", err)
 }

 msp, err := abe.BooleanToMSP(policy, false)

 if err != nil {
  fmt.Printf("Failed to generate the policy: %v", err)
 }

 cipher, err := a.Encrypt(msg, msp, pk)

 if err != nil {
  fmt.Printf("Failed to encrypt: %v", err)
 }

 gamma := strings.Split(attributes, " ")

 // generate keys for decryption for an entity with attributes

 keys, err := a.GenerateAttribKeys(gamma, sk)
 if err != nil {
  fmt.Printf("Failed to generate keys: %v", err)
 }

 // decrypt the ciphertext

 msgRecovered, err := a.Decrypt(cipher, keys, pk)
 if err != nil {
  fmt.Printf("Failed to decrypt: %v", err)
 }
 fmt.Printf("Attributes: %v\nPolicy %v\n\n",attributes,policy)

 fmt.Printf("Message: %v\nRecovered %v",msg, msgRecovered)
}

对于正确的属性,有:

Attributes: Edinburgh Glasgow GOV
    Policy (Edinburgh OR Glasgow) AND GOV
Message: Hello
Recovered Hello

对于不正确的属性,有:

Failed to decrypt: provided key is not sufficient for decryption
Attributes: Edinburgh Glasgow
Policy (Edinburgh OR Glasgow) AND GOV
Message: Hello
Recovered

其它示例有:

参考资料

[1] Prof Bill Buchanan OBE FRSE 2024年11月18日博客 FAME and Enhanced Attributed-Based Security

《商业管理:利用FAME分析公司数据》《公司数据company information.pptx》是两份宝贵的资源,可以帮助你深入理解如何运用FAME数据库进行公司的财务分析行业分类。以下是详细步骤注意事项: 参考资源链接:[商业管理:利用FAME分析公司数据](https://wenku.csdn.net/doc/88pz45px8s?spm=1055.2569.3001.10343) 1. 访问FAME数据库:首先需要登录到FAME系统。如果是初次使用,可能需要通过商业管理机构或图书馆获取访问权限。 2. 搜索公司数据:在搜索栏中输入你想要分析的公司名称或使用SIC代码。SIC代码是根据公司业务活动分配的行业分类代码,可以帮助你按照特定行业找到公司列表。 3. 确定分析目标:明确你的财务分析目标是评估公司财务状况,还是寻找行业内的竞争对手、合作伙伴或潜在并购对象。 4. 分析公司基本信息:查看公司的基本信息,如公司规模、成立时间、地理位置等,这有助于确定公司在行业中的定位。 5. 财务数据分析:FAME提供了丰富的财务数据,包括资产、负债、营收、利润等。使用FAME的财务分析工具对这些数据进行深入分析,如计算财务比率,评估公司的盈利能力、偿债能力、运营效率等。 6. 行业分类对比:利用SIC代码,将目标公司与同行业内其他公司的财务数据进行对比,分析其在行业内的竞争地位财务表现。 7. 风险管理:在分析过程中,需关注可能的风险因素,比如行业发展趋势、法律政策变化、市场竞争情况等,并在分析报告中体现这些潜在风险。 8. 数据导出报告:将分析结果导出为Excel格式,以便进一步分析或制作详细的财务分析报告。 注意事项: - 在分析财务数据时,务必关注数据的时效性准确性,这将直接影响分析结果的有效性。 - 在比较不同公司时,确保使用相同的会计准则财务年度,以保证比较的一致性。 - 考虑到行业特殊性,需调整财务分析模型以适应不同行业的特点。 - 在进行风险管理时,要保持警觉,识别可能的市场变化外部环境对公司的影响。 通过以上步骤,你可以有效地使用FAME数据库来进行公司的财务分析,并基于SIC代码对行业进行分类。在学习应用这些知识的过程中,可以借助《商业管理:利用FAME分析公司数据》《公司数据company information.pptx》这两份资源,它们为你提供了全面的工具方法论,帮助你更好地理解掌握商业管理中的数据应用技巧。 参考资源链接:[商业管理:利用FAME分析公司数据](https://wenku.csdn.net/doc/88pz45px8s?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值