基于密钥策略的属性加密算法的软件实现1200

基于密钥策略的属性加密算法的软件实现(KPABE)aminadab

要求

  1. 基于密钥策略的属性加密算法的软件实现;KPABE
  2. 时间:3天;
  3. 注释占代码量30%;

4.流程:

设置 这是一个随机算法,除了隐藏的安全参数没有输入。输出公开参数PK和一个主密钥MK。

加密 这是一个随机算法,输入一个消息m,一组属性γ,公开参数PK.输出密文E。

密钥生成 这是一个随机算法,输入一个访问结构A,主密钥MK,公开参数PK。输出一个解密密钥D。

解密 算法输入:基于属性组γ加密的密文E,对应访问结构A的解密密钥D,公开参数PK。

如果γ∈A输出X消息M。

5.提供以下算法,但不要求一定按照此算法;

算法

设G1是素数阶P的一个双线性群,设g是G1的生成。此外,设e : G1 × G1 → G2表示双线性映射。安全参数k将决定组的大小。我们还定义了拉格朗日系数对于i ∈ Zp,以及一组在Zp 中的元素:我们将每个属性与中一个独特的元素相关联。我们的建设如下。

设置 定义属性的域U = {1, 2, . . . ,n}.对于每一个属性i ∈ U,均匀随机的从Zp选择一个数字。最后,从Zp均匀随机的选择y。已发布的公开参数PK是

主密钥MK是:

加密 (M,γ,PK) 根据一组属性的γ选择一个随机值s ∈ Zp,加密一条消息M ∈ G2。并发布密文:

密钥生成(T ,MK) 该算法输出一个密钥,它使用户能够根据一组属性γ对加密的消息进行解密,当且仅当T (γ) = 1. 该算法如下进行。首先在树T中为每个节点X(包括叶子)选择一个多项式。这些多项式以下面的方式在自顶向下方式被选择,从根节点r开始。

对于树中的每一个节点x, 设置多项式qx的程度dx为比该阈值kx少一个 ,即

现在,对于根节点r,设和其他点的多项式完全随机的定义它。对其他任何节点X,设并选择其他点完全随机的定义。

一旦多项式被决定,对于每一个叶子节点x,我们给出如下的秘密值给用户:

上述秘密值的集合是解密密钥D。

解密(E,D)  我们指定我们的解密过程作为一个递归算法。为了便于说明,我们提出最简单的解密算法的形式,并讨论在下一小节中潜在的性能改进。我们先定义一个递归算法:

DecryptNode(E,D, x),作为输入的密文,私钥D(我们假定访问树T被嵌入在专用密钥中),树中的节点x。它输出G2的一组元素或者⊥.

设i = att(x).如果节点x是一个叶子节点,那么:

我们现在考虑当x是一个没有叶子节点时的递归情况。该算法DecryptNode(E,D,X)进行如下:对于所有的节点?都是X的孩子,它会调用 DecryptNode(E,D, x)并把输出保存为Fz.

假设SX 是任意KX大小的集合的子节点Z,使得Fz不等于 ⊥。如果没有这样的设定存在,那么该节点不满足条件, 该函数返回⊥。

否则,计算:

并返回结果。

既然我们已经定义了函数解密节点,那么解密算法简单的在树的根部调用该函数。我们观察到当且仅当所述密文满足树时,DecryptNode(E,D, r) =。以前,

这个解密算法简单的划分出Ys并恢复了消息M。

时间: 2024-10-16 04:25:51

基于密钥策略的属性加密算法的软件实现1200的相关文章

C#基于RSA加密算法实现软件注册实战演练

一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理和完善此系列课程! 今天给大家带来的分享课程是探索一下RSA加密算法在我们实际工作中的应用,了解RSA加密算法的特点和原理,并实战演练一下C#基于RSA加密算法如何实现软件注册功能. 1.1.本次分享课学完后我们要达到学习的目标和成果?1). RSA加密算法之RSA加密和解密(公钥加密.私钥解密)实战演练 .

ssh &nbsp; sshd &nbsp; scp &nbsp; 基于密钥认证登陆 双机互信

telnet :远程登陆 TCP/23 远程认证是明文的 :数据传输是明文的:不实用 ssh:Secure SHell TCP/22    协议 v1 v2  v1基本不使用的 实现了将认证过程加密 Openssh:是ssh的开源版 ssh不仅是一个软件,也是一种协议 ssh加密认证的机制 基于口令:默认为口令 基于密钥:事先在服务器端的用户里放入客户端的公钥,然后链接过来的时候对暗号 netstat -tnl  查看服务器端打开了等待别人访问的服务 LISTEN监听 ssh 和sshd的配置文

openssh远程登录服务器端和基于密钥的认证机制

ssh服务的最佳实践方案:1.更换服务端口,不要使用默认的22号端口:2.禁止使用sshv1:3.合理的设置登录用户的黑名单和白名单:4.设置空闲会话的超时时间,将其改的短一些:5.需要利用防火墙来配合设置ssh的安全访问规则:6.监听固定的IP地址而不是0.0.0.0:7.如果必须使用口令认证机制,则需要使用足够复杂的密码:~]# tr -dc A-Za-z0-9 < /dev/urandom | head -c 30 | xargs~]# openssl rand -base64 30 |

四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享 哎,又过春节了,同志们又要抢票回家了,这票卖的可真快啊,瞬间的功夫就没有票了,一票难求啊! 这两天闲着没事,刚好又要抢春节的票了.就把原来写的抢票软件给打开试了一下,发现居然不能查票了.于是就又改了一下. 事实上是改了两下,一是:让原来的程序能够用起来(适应新接口),而是加上了水平

基于WiFi的Android局域网即时通讯软件

基于WiFi的Android局域网即时通讯软件,通过自建WiFi热点的方式与其他移动设备进行通信,实现了文字聊天.语音留言.文件互传等功能,满足基本的日常使用需求. 下载地址:http://www.devstore.cn/code/info/670.html 运行截图:     

scp 是我小看了你---基于密钥传输!

原因:公司用的是基于密钥登陆,虽然有防火墙等设备,而且不允许root直接登陆和不允许密码登陆.由于公司的网不好,有一次需要拷贝一次2个多G的数据到别的服务器.我当时想的就是scp(虽然也有其它命令工具)但是,我却忘记了现在不允许密码登陆.虽然有其它方式(比如lrzsz或者winscp ftp等),但是如果先下载再上传必然需要太多时间.毕竟走服务器的局域网才是最快,要是走公司,然后再上传,那就太麻烦了.于是看看scp --help发现有一个-i 参数.所以是支持密钥的方式的.仔细研究一番,确实好用

基于密钥的认证机制(ssh)

网络中的两台服务器需要经常进行通信,而频繁的输入账号和密码既繁琐又不安全,所以需要使用基于密钥的认证,这种使用在服务器集群配置中非常的常用.下面以CentOS服务器系统为例简单介绍下配置方法(服务器必须安装SSH). 1.客户端首先生成一对密钥,包括公钥和私钥     ssh-keygen -t rsa 生成的一对密钥存放在当前用户目录下隐藏目录.ssh中,私钥叫id_rsa,公钥为id_rsa.pub 2.将生成的公钥上传到远程服务器那个需要登陆的用户家目录下隐藏目录.ssh中     ssh

基于密钥库和数字证书的加密解密和签名验证操作

package com.szzs; import java.io.FileInputStream; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.cert.Certif

如何在 Linux 中配置基于密钥认证的 SSH

什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在无安全网络上发送数据,它都会在源系统上自动地被加密,并且在目的系统上解密.SSH 提供了四种加密方式,基于密码认证,基于密钥认证,基于主机认证和键盘认证.最常用的认证方式是基于密码认证和基于密钥认证. 在基于密码认证中,你需要的仅仅是远程系统上用户的密码.如果你知道远程用户的密码,你可以使用 ssh