属性加密技术及基于属性的ABE算法的访问控制技术介绍

属性加密技术

基于身份的加密体制简介

  • 基于身份的加密体制可以看作一种特殊的公钥加密,它有如下特点:系统中用户的公钥可以由任意的字符串组成。这些字符串可以是用户在现实中的身份信息,如:身份证号码、用户姓名、电话号码、Email地址等,因为用户的公钥是通过用户现实中的相关信息计算得到的,公钥本质上就是用户在系统中的身份信息,所以公钥真实性问题和证书管理问题在基于身份加密的系统中就不再需要。

基于身份加密体制的优势在于

  • 用户的公钥可以是描述用户身份信息的字符串,也可以是通过这些字符串计算得到的相关信息。
  • 不需要存储公钥字典和处理公钥证书。
  • 加密消息只需要知道解密者的身份信息就可以进行加密,而验证签名也只需要知道签名者的身份就可以进行验证。

基于属性的加密体制的研究背景和意义

  • Sahai和Waters两位密码学家为了改善基于生物信息的身份加密系统的容错性能,在2005年欧洲密码年会上发表了《模糊基于身份加密方案》一文,并在这篇文章中首次提出了基于属性加密(Attribute-Based Encryption  ABE)的概念。  在基于属性加密的体制中用属性集合表示用户的身份,这是与基于身份加密(Identity-Based Encryption,IBE )根本的区别。在基于身份加密系统中,只能用唯一的标识符表示用户的的身份。而在基于属性加密系统中,通过属性集合表示用户的身份,其中的属性集合由一个或多个属性构成。从用户身份的表达方式来看,基于属性加密的属性集合比基于身份加密的唯一标识符具有更强、更丰富的表达能力。
  • 基于属性加密可以看作是基于身份加密的扩展和延伸。基于属性加密把基于身份加密中表示用户身份的唯一标识,扩展成为由多个属性组成的属性集合。从基于身份加密体制发展到基于属性加密体制,这不仅是用户身份的表达形式从唯一标识符扩展到多个属性,还将访问结构融入到属性集合中,使公钥密码体制具备了细粒度访问控制的能力(如:通过密文策略和密钥策略来限制用户对密文的访问和解密能力)。
  • 从唯一标识符扩展成属性集合,不仅是用户身份信息表示方式上的改变,而且属性集合能够非常方便地和访问结构相结合,实现对密文和密钥的访问控制。属性集合同时还可以方便地表示某些用户组的身份(即:实现了一对多通信),这也是基于属性加密方案所具备的优势。
  • 密文和密钥中引入访问结构,这是基于属性加密体制的一大特征,也是与基于身份加密体制本质区别之处。访问结构嵌入到密钥和密文中的好处在于:系统可以根据访问结构生成密钥策略或者密文策略,只有密文的属性集合满足了密钥策略,或者用户的属性集合满足了密文策略,用户才能解密。这样一方面限制用户的解密能力,另一方面也保护了密文。在基于属性加密系统中,密钥生成中心(负责生成用户的密钥)由于用户的身份信息通过属性集合表示,而用户组也具备一些相同属性也可以用属性集合表示。因此在基于属性加密方案中属性集合既可以表示单独的用户,也可以表示多个用户组成的用户组。密文和密钥也是根据属性集合生成的,相对应地密文的解密者和密钥的接收者既可以是单独的用户也可以是用户组。在基于属性加密方案中,可以通过描述用户身份信息的具体或概括,来灵活调整属性集合是代表单独用户还是某个用户组。
  • 在Sahai和Waters方案中引入了秘密共享的门限访问结构,如果一个用户能够解密一个密文,当且仅当该用户的属性集和密文的属性集合共有属性的数量达到门限要求。在基于属性加密方案中加密密文需要在属性集合参与下才能进行,参与加密的属性集合所表示的身份信息就是解密者的身份,也是解密密文需要满足的条件。在上述过程中,由于用户的私钥和密文都是根据各自属性集合生成的,因此在基于属性加密方案中,一方面密文是在属性集合参与下生成的,这个属性集合隐含地限定了解密者所要满足的条件。另一方面,一个用户私钥也是根据属性集合生成的,这个属性集合也隐含地确定了用户可以解密的范围,如果密文是以这个属性集合生成的,那么用户就可以解密文。

例子

  • 假设系统中门限为3的门限结构,因此只有用户的属性集合中至少有3个属性与密文属性集合相同,用户才能解密。设a,b…h;表示系统中的属性,若系统中有三个用户分别为:A(a,b,c,d,e)、B(b,c,e,f)、C(a,d,g)他们从认证中心获取各自的私钥。现有一个密文,其密义的属性集合为(b,c,d,f)。因为系统的门限是3,这就要求解密用户的属性集合至少含其中三个或三个以上的属性。从ABC三个用户的属性集合可以看出A和B满足条件,他们的属性集合满足了解密条件,能够解密密文。而用户C属性集合不满足要求,因此不能解密。
  • 通过上面的例子可以看出,基于属性加密方案中加密和解密具有动态、灵活的特性,能够实现对系统中用户的解密能力和密文的保护方而的细粒度控制,因此属性加密方案有着广阔的应用前景。

基于属性加密的研究现状

基于属性的密钥策略加密方案

过程:

①系统初始化:

  • 系统初始化只需要一个隐含的安全参数作为输入参数,不需要其它输入参数。输出系统公共参数PK和系统主密钥MK 。

②消息的加密:

  • 以消息M,系统的公共参数PK和一个属性集合S为输入参数。输出消息M加密后的密文E。

③密钥的生成:

  • 以一个访问结构A,系统的公共参数PK和系统的主密钥MK为输入的参数。生成一个解密密钥D。

④密文的解密:

  • 以密文E,解密密钥D和系统的公共参数PK为输入参数,其中密文E是属性集合S参与下生成的,D是访问结构A的解密密钥。如果S∈A,则解密并输出明文M。

现状

  • 在基于属性的密钥策略加密的方案中,通过引入访问树结构,将密钥策略表示成一个访问树,并且把访问树结构部署在密钥中。密文仍然是在一个简单的属性集合参与下生成的,所以如果一个用户能解密密文当且仅当该密文的属性集合满足用户密钥中的密钥策略。通过访问树的引入,非常方便地实现了属性之间的逻辑与和逻辑或操作,增强了密钥策略的逻辑表达能力,更好地实现细粒度的访问控制。
  • 2007年,Ostrovsky等提出了一个可以实现逻辑非的基于属性加密方案(属性之间的逻辑关系可以表达逻辑非),丰富了保护策略的逻辑表达能力,完善了文献不能表示逻辑非的空白。该方案中不但构成一个完整的逻辑表达系统,而且也将基于属性加密方案中的访问结构从单调的扩展成非单调的。
  • 该方案中访问结构的功能相当于一个线性秘密共享方案的访问结构。另外该方案的安全性证明是在选择属性集合的攻击模型和基于判定双线性困难问题下完成的。
  • 基于属性的密钥策略加密方案可以应用在服务器的审计日志方面。服务器的审计日志是电子取证分析中的一个重要环节。通过基于属性的密钥策略加密方案中的方法,可以使取证分析师只能提取与目标有关的日志内容,从而避免了日志中全部内容的暴露。基于属性的密钥策略加密方案的另一个用途就是有针对性的广播加密,特别是在一些收费的电视节目中,用户可以根据个人喜好制定接受的节目。

基于属性的密文策略加密方案

  • 2007年,Bethencourt等首次提出了基于属性的密文策略加密方案。在该方案中,用户的私钥仍然是根据用户的属性集合生成,密文策略表示成一个访问树并部署在密文中,这种部署方式和基于属性的密钥策略加密方案相反。当且仅当用户的属性集合满足密文中密文策略时,用户才能解密密文。

过程

  • 系统初始化:以一个隐含的安全参数为输入,而不需要其它输入参数,输出系统公共参数PK和系统主密钥MK。
  • 消息的加密:以加密消息M,系统的公共参数PK和访问结构A为算法的输入参数,其中A是在全局属性集合上构建的。该算法的输出消息M用A加密后的密文CT。
  • 密钥的生成:以一个属性集合S,系统的公共参数PK和系统的主密钥MK作为算法的输入参数。该算法输出私钥SK。
  • 密文的解密:以密文CT,系统的公共参数PK和解密密钥SK作为算法的输入参数,其中密文CT包含访问结构A,SK是S的解密密钥。如果属性集合S满足访问结构A,则解密密文。

现状

  • 根据以上描述,可以看出基于属性的密文策略加密和广播加密非常相似。该方案还支持密切代理机制,即:如果用户A的访问结构要包含用户B的访问结构,那么A可以为B生成私钥。另外,该方案中通过cp-abe程序包,对方案的性能和效率进行了实验分析。但方案的缺陷在于:方案的安全性证明是在通用群模型和随机预言模型下完成的。

基于属性的双策略加密方案

  • 2009年,基于属性的双策略加密方案由Attrapapdung等首先提出,该方案是基于属性的密钥策略加密方案和基于属性的密文策略加密方案的组合。即:方案中的加密消息同时具备两种访问控制策略,在密钥和密文中同时部署两种策略。密文的两种访问控制策略一个表示加密数据自身客观性质的属性,另一个表示对解密者需要满足条件的主观性质属性。密钥的两种访问策略一个表示用户凭证的主观属性,另一个表示用户解密能力的客观属性。只有当用户的主观属性和客观属性满足了密文的主观属性和客观属性时,用户才能解密密文。

过程:

  • 系统初始化:以一个隐含的安全参数作为输入,而不需要其它输入参数。输出系统公共参数PK和系统主密钥MK。
  • 消息的加密:以输入消息M,系统的公共参数PK,一个主观的访问结构S和一个客观的属性集合。为输入参数。输出密文CT。
  • 密钥的生成:这是个随机化算法,以系统的公共参数PK,系统的主密钥MK,一个访问结构O和一个主观的属性集合为输入参数。输出一个解密密钥D。
  • 密文的解密:以系统的公共参数PK,解密密钥D和与密钥对应的访问结构O和属性集合,密文CT以及密文对应的访问结构s和属性集合作为输入参数。如果密钥的属性集合必满足密文的访问结构S,同时密文的属性集合。满足密钥的访问结构,则解密密文输出消息M。

现状

  • 因为基于属性的双策略加密方案可以看做是基于属性的密钥策略加密方案和基于属性的密文策略加密方案的结合,所以基于属性的双策略加密方案可以根据实际需要转换成单个策略的基于属性加密方案(KP-ABE或CP-ABE )。另外该方案的安全性证明是基于判定双线性Diffie-Hellman指数困难问题完成的。( Bilinear Diffie-Hellman Exponent  BDHE)。

其它相关研究

  •     Pirretti等提出一种新的安全信息管理体系结构,该系统对基于属性加密方案的实际应用做了专门的研究。该文通过基于属性加密系统作为核心组件,构建了一个安全的信息系统。同时还优化了基于属性加密方案中加密算法和解密算法,明显提高了算法的运行效率。另外,该文还实现了基于属性加密的两个重要应用。

基于属性的访问控制技术

基于属性的访问控制介绍

  • 基于属性的加密(Attribute-Based Encryption, ABE),又称为属性基加密,是公钥加密和基于身份加密(Identity-Based Encryption, IBE)的一种扩展,由Sahai和Waters两位密码学家在2005年欧洲密码年会上提出,他们为了解决基于生物特征的身份认证系统的容错问题,基于双线性对困难问题,提出了基于模糊身份的加密方案《Fuzzy identity based encryption》一文,在该文献中,基于属性加密的概念第一次被提出。在该方案中,用属性集合描述用户身份信息特征,打破了以往的身份“完全匹配”关系,这也是它区别于基于身份加密的特征之一
  • 一个基于属性的加密机制一般包含四个实体:密钥生成中心(权威Authority) ,加密者(数据所有者DataOwner, DO)、解密者(用户User)和数据存储服务器,具体如下图所示。密钥生成中心负责产生公共参数PK和主密钥MK。当有用户User发出请求时,为其分配属性,生成与权限索引相关的解密钥SK。数据所有者DO根据密文索引A和自己要共享的数据Data的安全需要生成密文C,然后发送给数据存储服务器。User想获取某个被共享的数据时,向服务器发起请求,服务器为User发送请求访问的密文数据C。当用户User满足A的要求时,可以利用Authority分配的解密钥SK和收到的密文C,得到授权并获得Data。

 

  • 在属性加密体制中,访问结构被引入到密文和密钥中,密文和密钥根据属性集合生成,即用户私钥与属性集关联,密文与访问结构关联,或者用户私钥与访问结构关联,而密文与属性集关联,用户的解密能力通过用户属性集与访问结构之间的匹配关系确定,从而实现数据拥有者对密文和密钥的访问控制。数据拥有者无需要为每一用户分发属性密钥,只需要通过访问结构进行权限管理,大幅度地降低了权限管理的复杂度,提供了更加灵活的访问控制,从功能上实现了“一对多”的加密文件访问控制,解决了这一应用瓶颈问题。由于用户的身份信息表示为属性集合,由两个或以上的用户组成的用户组也可以具备相同的属性集,所以既可以用属性集合表示单独的用户,也可以表示多个用户组成的用户组,因此可以通过对用户身份信息的全方位描述,灵活调整属性集合,让其表示一个单独的用户还是一个用户组,即单独的用户和用户组都可以成为属性密钥的接收者和对应密文的解密者,这也是基于属性加密方案所具备的优势。所以,基于属性加密的属性集合具有更强、更丰富表达能力。
  • 在属性加密机制中,不仅用户权限的可描述性和加密策略的灵活性被极大地丰富了,加解密模式也被从以往的一对一模式扩展成了一对多模式,而且,它还具有下述四个卓越的特点:
  • 高效性,加解密计算花费和密文长度与系统中用户的数量无关,只与相应属性个数相关;
  • 动态性,用户的解密能力仅取决于他的属性集合是否满足密文的访问策略,而与他在密文生成之前或之后加入这个系统无关;
  • 灵活性,该类方案中的访问策略支持复杂的访问结构;
  • 隐私性,数据所有者在加密数据时无需获悉解密者的身份信息。

属性加密方案的形式化定义和安全模型

属性加密方案的形式化定义

一个属性加密方案包含以下四个基本算法:

  • Setup(K, U):该算法输入安全参数K和系统属性全集U,输出公共参数Params和主密钥MK。
  • KeyGen(MK,X):该算法输入主密钥MK和一个权限索引X,输出一个密钥skx。
  • Enc(Params, Y, M):该算法输入公共参数Params,一个密文索引Y和一个要加密的消息M,输出一个密文CTy。
  • Dec(Params, skX, C界):该算法输入公共参数Params,密钥skx和密文CTy,输出解密结果M'。

如果一个属性加密方案是正确的,当且仅当对任意用户权限X和密文索引Y,且X满足Y,则

  • Dec(Params, KeyGen(MK, X), Enc(Params, Y,M))=M
  • 其中,公共参数Params和主密钥MK都是正确生成的。
  • 在CP-ABE方案中,X表示用户的属性集合,密文索引Y表示一个访问结构,X满足Y当且仅当X是Y的授权集;在KP-ABE方案中则反过来了,即Y表示一个属性集合,X表示一个访问结构,y满足X当且仅当Y是X的授权集。

属性加密方案的安全模型

  • 在公钥密码方案中,根据要实现的安全目标不同,密码体制通常被分为四类:语义安全性(Semantic Security, SEM)、不可区分性(Indistinguishablity, IND)、不可展性(Non-malleable, NM)和明文可意识性(Plaintext-aware, PA)。当前公钥密码方案的证明一般都采用的形式化模型为不可区分性的安全模型,属性密码学中的方案证明也在此基础上进行。
  • 基于属性加密系统的安全性,一般由一个攻击者和一个挑战者之间的交互游戏来刻画。当且仅当任意多项式攻击者的优势都是可忽略的,则称一个属性加密方案是自适应安全的。但是,在实际证明中,由于在属性加密方案中,其属性集的空间要比基于身份的身份空间大很多,复杂性比较高,所以通常会考虑一种弱化了的安全模型,称为选择模型。在选择安全模型中,通常要求攻击者必须提前选择自己的攻击目标,即挑战权限索引X,在此模型下的安全则称为选择安全。
  • Init:攻击者选择自己的攻击目标,即挑战权限索引X;
  • Setup:挑战者运行属性加密的Setup算法,将生成的公共参数发给攻击者;
  • Phase 1:攻击者对权限索引X进行私钥询问,
  • Challenge:攻击者提交两个等长的消息M0和M1。挑战者进行随机掷币b,并根据密文索引Y加密Mb,然后把密文发送给攻击者。
  • Phase 2:重复Phase 1中的步骤;
  • Guess:攻击者输出对b的猜测b'。
  • 在上述游戏中,如果不存在多项式时间的攻击者以不可忽略的优势攻破上述游戏,则一个基于属性加密方案在选择模型下是安全的。

访问结构

  • 在属性密码学中,访问结构用于描述访问控制策略的逻辑结构,占有很重要的位置。访问结构定义为:
  • 定义访问结构):设P={P0,p1…pn}一个用户集。集合A包含于2{p0,p1..,pn}是单调的,如果B, C:如果B∈A且B包含于C,则C∈A。一个访问结构(单独地,单调的访问结构)是{P1,p2, ..., Pn}的一个非空子集A(单独地,单调的访问结构)。
  • 属性密码系统中,一般采用一些访问结构表示访问策略,比如门限访问结构、基于树的访问结构、基于正负属性值的“与,门结构、基于多属性值的“与”结构、支持通配符的基于多属性值的“与’,门结构和线性访问结构。基于门限的访问结构实际表达的含义是:拥有不同属性集的用户可以通过不同的路径到达该门限所在节点的路径的数目;在基于树的访问结构中,树的每一个非叶子节点由一个门限值和它的孩子节点来描述,而树的每一个叶子节点都对应一个属性;在基于正负属性值的“与”门结构中,如果一个用户拥有某个属性,则表示为正属性,如果不用有某个属性,则表示为负属性。

访问树的构造

  • 在CP-ABE方案中,访问树用于隐藏源数据的加密密钥,其形状结构如其名一样,是一棵树。其叶子节点为数据所有者设定的属性和属性值以及父节点传于此节点的秘密值,并对其加密处理,只有数据访问者拥有此属性方可解密出此节点的秘密值;非叶子节点为门限节点,数据访问者需满足此门限最低值方可解密此节点秘密值,例如门限为3/5,此节点有5个子节点,数据访问者需至少满足3个子节点才能解密出秘密值。

例子

  • 如下图所构造的访问树,能解密此访问树加密的源数据,数据访问者需满足的属性是:第一种:(“计算机学院” 且 “硕士” 且 “研二”)和 “教师”(此属性结合可能不存在,因为教师和研二不存在且关系) ,第二种:“教师” 和(“网络实验室” 或 “云实验室”),第三者:(“计算机学院” 且 “硕士” 且 “研二”)和(“网络实验室” 或 “云实验室”);否则无法访问。

如何构造这样的一棵访问树

  • 从根节点开始,其门限值为2,孩子节点有3个,随机生成一个多项式,其最高次数为门限值少1,故根节点的最高次数为1,然后将常数项设置为秘密数(秘密数为需要秘密保存的数);如此根节点随机的多项式为f(x)=5+3x,秘密数为5。此外,将根节点的孩子节点从左至右依次标记为1,2,3,.....,将节点标记值代入f(x)函数中,所得值(即生成新的秘密值)传给该标记的孩子节点秘密保存;故“3/3”节点(左边第一个节点)标记为1,传给“3/3”节点的秘密值f(1)=5+3*1=8,中间“教师”节点(中间节点)标记为2,传给“教师”节点的秘密值f(2)=5+3*2=11,“1/2”节点(右边节点)标记为3,传给“1/2”节点的秘密值为f(3)=5+3*3=14。
  •  “3/3”节点和“1/2”节点在接收到父节点传来的值后,按照上述方式生成随机多项式,将常数项设置为父节点传来的值,此外也按照上述方式生成新的秘密值并将它传给子节点,数据如图所示(对于非叶子节点,都按照此方式进行)。对于叶子节点,在接受到父节点的秘密值后,用此叶子节点的属性对秘密值进行加密处理。
  • 至此,访问树已构造完成!

从访问树中解密出访问树的秘密数

  • 数据访问者需满足访问树方可解密出访问树的秘密值,对于上述访问树,数据访问者需满足以下属性集中的一个:(计算机学院、硕士、研二、教师(此属性结合可能不存在,因为教师和研二不存在且关系))、(计算机学院、硕士、研二、网络实验室)、(计算机学院、硕士、研二、云实验室)、(教师、网络实验室)、(教师、云实验室)。若上述属性集中某一个或多个(至少一个)为数据访问者属性集的子集,则能解密出秘密值,下面开始解密处理。
  • 对于叶子节点,在数据访问者属性集中寻找出和此节点属性与属性值一致的属性,用找出的属性解密出此节点的秘密值(即公式1),当然不能完全解密出,他是秘密值和加密时对此属性设置的加密值的乘积。
  • 解密出叶子节点后,开始解密其父节点(非叶子节点),在解密出叶子节点后,即可得到多对值;如在上述访问树的“3/3”节点,其孩子节点解密出三个值19,44,83(推理过程忽略随机数),在生成这三个数时,f(1)=19,f(2)=44,f(3)=83,其中f(x)=8+4x+7x^2(解密时并不知道此多项式,只知道后面的三个点),因此在f(x)上有三个点是(1,19),(2,44),(3,83);因为此节点存储的秘密值是多项式的常数项,即f(0)=秘密值,故我们需要根据这三个点得到0所对应的值是多少,根据拉格朗日公式就能求出0所对应的值,即解密出秘密值(即公式2);对于非叶子节点均可按照上述方式解密出秘密值,在根节点处解密出整个树所隐藏的秘密值(是秘密值和加密时对此属性设置的加密值的乘积,所有节点解密出的秘密都存在一个随机数,解密出的值都是随机数和秘密值的乘积,只是讲述过程中为了方便忽略了随机数,最后根节点解密出的随机数在最后的解密过程中会抵消掉(公式3))。
  • 另外需要说明的是“3/3”节点是一个3个孩子节点、门限值为3的节点,相当于且关系,数据访问者需解密出所有的孩子节点方可用拉格朗日公式解密出常数项(即秘密值);“1/2”节点是一个2个孩子节点、门限值为1的节点,故为或关系,数据访问者只满足其中一个孩子节点即可解密出秘密值(秘密值就是孩子节点解密出的秘密值,因为根据随机多项式生成规则,多项式的最高次数为门限值少1,门限值为1,故最高次数为0,即常数项);若如“2/3”这样的节点,既非且关系,也非或关系,3个孩子节点,门限值为2,若需解密出此节点的秘密值,数据访问者需解密出三个孩子节点中的两个节点即可解密出孩子节点。

参考链接

  • 属性加密技术及基于属性的访问控制技术
  • 线性秘密共享方案构造与解密
  • 密文策略基于属性加密(CP-ABE)访问树构造与解密
  • 一种基于属性加密技术(ABE)的轻量级数据共享方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于属性加密的ABE算法的应用场景思考展望

ABE算法先前使用在云计算场景中,和区块链存在交叉应用场景,具体问题体现在 数据的异地存储、云服务器提供商的不可信、管理员能否对自身数据拥有足够的控制能力以及如何保证数据的安全有效共享都是亟需解决的问题。 研究背景: 云计算越来越…

面经:设计模式

什么是接口隔离原则(Interface Segregation Principle) 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。概括的说就是:建立单一接口,不要建立臃肿庞大的接口。&…

区块链、密码和银行之间的衍生关系

银行场景中密码服务 设置密码 用户在注册的时候,如果使用弱密码,系统会检测出来。我的猜测是将弱密码的hash运算和用户输入的密码hash比对,如果一致,禁止用户注册。 1、不要设置简单密码,您设置的密码必须符合中信银…

AIgorand区块链中VRF随机函数的应用

VRF(Verifiable Random Function) 可验证随机函数可以看作是一个随机预言机,即可以通过任意的一个输入,获得一个随机数输出:输出的结果(Output)是一个随机数,其数值会均匀分布在值域…

C++学习笔记 简单部分

C 数据类型 使用变量来存储各种信息,变量保留的是它所存储的值的内存位置。这意味着,当创建一个变量时,就会在内存中保留一些空间。这段内存空间可以用于存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型…

terminate called after throwing an instance of ‘std::logic_error‘ what(): basic_string::_M_constr

terminate called after throwing an instance of ‘std::logic_error’ what(): basic_string::_M_construct null not valid 用0初始化字符串 编译不报错

密钥协商(密钥交换)机制的讲解

国标文件涉及密钥协商算法的函数 生成密钥协商参数并输出计算会话密钥产生协商数据并且计算会话密钥 密钥协商(交换)算法及其原理 密钥交换/协商目的 “密钥协商机制”是:(在身份认证的前提下)规避【偷窥】的风险。…

基于ECC算法的秘钥协商

基于ECC算法的衍生算法 ECDH(ECCDH)RSAECDHE(ECCDHE) ECDH密钥协商(ECCDH) 椭圆曲线密码学是属于非对称密码学的,其私钥的计算公式如下: 私钥是一个随机数d,取值范围在1……n-1,其中n是子群的阶公钥是点HdG&#xff…

C++11 多线程相关知识的学习

C多线程类Thread(C11) C11中std命名空间将Boost库中的Thread加入,Boost的多线程从准标准变为标准,这里将其用法整理复习,以demo的形式复习,还是喜欢看我自己写的东西,符合我的个人逻辑头文件为…

C++11 explicit关键字的作用

explicit 在C中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。因为无参构造函数和多参构造函数本身就是显示调用的。再加上explicit关键字也没有什么意义…

C++11学习 virtual(虚函数)的用法

Virtual虚函数 在面向对象的C语言中,虚函数(virtual function)是一个非常重要的概念。因为它充分体现了面向对象思想中的继承和多态性这两大特性,在C语言里应用极广。多态性:其含义就是多种形式;将具有继承…

c++ const

函数名称不单单是函数名 const 补充内容 还有 const 参数类型 函数后头const 只能在成员函数如果const对象 但是我没通过const成员函数 就会报错

手撕源码 alloc

怎么有效的手撕代码呢? gnu gcc 2.9 的 内存池 把代码跑起来把代码一个片段拿出来使用画出代码运行的流程图一行一行的搬运在看源码的情况下写出类似的demo 第三步: 第五步: // 这个头文件包含一个模板类 allocator,用于管理内存的分配、…

针对Algorand所使用的密码相关技术细节进行介绍

关键概念 VRF: 可验证随机函数。简单来说是:vrf,Proof VRF(sk,seed),sk为私钥,seed为随机种子;通过Verify(proof,pk,seed)验证vrf的合法性。cryptographic sorition: 根据用户本轮的VRF值,自身的权重以及公开的区块链…

对于Algorand的介绍

介绍 Algorand具有能耗低、效率高、民主化、分叉概率极低、可拓展性好等优点,旨在解决现有区块链项目存在的“不可能三角”(高度可扩展的、安全的、去中心化)问题。Algorand由MIT教授、图灵奖得主Silvio Micali发起,拥有MIT区块链…

C++学习 高级编程

C 文件和流 到目前为止,目前使用最为广泛的是 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。以下将介绍从文件读取流和向文件写入流。这就需要用到 C 中另一个标准库 fstream,它定义了三个新的数…

内存池中的嵌入式指针

嵌入式指针 可以union改struct 内存分配后 next指针就没用了 直接作为数据空间比较省内存 因为对指针指向的内存存储的时候 编译器是不管你是什么类型的 &#xff0c;这里有道练习题可以对指针的概念稍微理解一下&#xff1a; #include <iostream> using std::cout; us…

内存池的实现4 alloc内存池

alloc 内存池 优点: &#xff1a;本质是定长内存池的改进&#xff0c;分配和释放的效率高。可以解决一定长度内存分配的问题。 缺点 &#xff1a;存在内碎片的问题&#xff0c;且将一块大内存切小以后&#xff0c;申请大内存无法使用&#xff0c;别的FreeList挂了很多空闲的内存…

c语音的一些特殊关键字

PRETTY_FUNCTION C语言中获取函数名 C语言中的__LINE__用以指示本行语句在源文件中的位置信息