SM2 proxy signature with NAPS
算法设计 一个代理签名方案至少需要三种不同类型人的参与,即原始签名人,代理签名人(Agent)和代理签名的验证人 这篇文章分别用A,B,C代表上述三个身份 初始化参数: 椭圆曲线参数:$G$是椭圆曲线中阶为$n$的基点。 A私钥为$d_A\in[1.n-2]$,公钥为$P_A=d_AG$,私钥保密 $m_\omega$:授权证书信息(可以包含原始签名者和代理者的身份信息、代理签名者的权限等) 代理授权 B进行如下操作 用随机数生成器生成随机数$k_b\in[1,n-1]$,计算椭圆曲线上的点$G_b=k_bG$ B将$G_b$发送给A A收到信息后进行如下操作 用随机数生成器生成随机数$k_a\in[1,n-1]$,计算椭圆曲线上的点$G_a=k_aG$ 计算椭圆曲线上的另一个点$G_{ab}=(x_1,y_1)=k_aG_b$ 计算$r_{ab}=x_1\pmod n$($r_{ab}=0$,重新计算) 计算$e_0=H(m_\omega||r_{ab})$ 计算$s_A=$$k_...
SM2代理签名
基于椭圆曲线的代理签名代理签名 一个代理签名方案至少需要三种不同类型人的参与,即原始签名人,代理签名人和代理签名的验证人 这篇文章分别用A,B,C代表上述三个身份。 一个代理签名方案又至少包括四个过程 即:初始化过程,数字签名权力的委托过程,代理签名的产生过程和代理签名的验证过程 书本上定义的椭圆曲线 椭圆曲线数字签名初始定义: 签名算法 1)密钥对产生: 选取正整数$k_A$(random)($0<k_A<n$),作为用户A私钥 然后计算$P_A=k_AP$(用户A的公钥) 2)签名的产生: 对任意消息$m(0<m<n)$,用户A首先选取随机数k,计算$kP=(x,y)$,其中$x,y \in F$ 用户A用自己私钥$k_A$计算: $r\equiv x\pmod n$ $s\equiv k^{-1}(m+k_Ar)\pmod n$ 签名为($m,r,s$) 3)签名验证: 对系统中任意用户C收到($m,r,s$)后,C首先获取A的公钥然后计算, $c\equiv s^{-1}\pmod n$ $u_1\equiv m...
SM9 algorithm design
SM9Setup(系统建立) KGC 选择双线性群 ($BP = (G_1, G_2, G_T, e, N))$,生成元 $(P_1 \in G_1, P_2 \in G_2)$ 选主私钥 ($\alpha \in [1, N-1]$),计算主公钥 ($P_{pub}$ =$ \alpha P_2 \in G_2$) 计算 (g = e($P_1$, $P_{pub}$) $\in$ $G_T$) 输出:主公钥 (mpk = ($BP, P_1, P_2, P_{pub}, g, H_1, H_2, hid$)),主私钥 (msk =$ \alpha$) KeyGen(用户私钥生成) 给定用户标识 ($ID$),KGC 计算: ($t_1 = H_1(ID \parallel hid, N) + \alpha \pmod N$) ($t_2 = \alpha \cdot t_1^{-1} \pmod N$) ($sk_{ID}$ = $t_2 $$\cdot $$P_1$)(群 ($G_1$) 中的...
Proxy Signature for AI Agent Identity Based on SM9(Initial)
核心三部分 SM9签名体制 身份基代理签名 NAPS(N-1次签名机会) 算法搭建:根据划分的三部分来搭建 1、SM9 Foundation基于第二类非对称双线性群$ \mathcal{BP} = (\mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T, e, N)$ SM9的私钥$sk_{ID} = \dfrac{\alpha}{H_1(ID)+\alpha} \cdot P_1$ 主私钥$\alpha$,系统公钥$P_{pub}=\alpha P_2$ 2、Proxy Delegation生成委托书($m_\omega$),含Agent身份($ID_P$),授权范围,有效期和N次签名限制标记 原始签名生成: 原始签名人O使用标准SM9对$m_\omega$签名,生成委托凭证$\omega=(h_\omega,S_\omega)$ 这里需要添加一个辅助元素$T_{dpk}$ 存在问题: ID based密钥: $d_{ID} = s \cdot H_1(ID)$ 3、NAPS Me...
GitHub入门(五)
更新操作确保本地分支正确 1git branch 这个再第三篇里面有讲到 12git add .//输入想更新的文件 再查看状态 1git status 然后缓存 1git commit -m "更新内容描述" 最后再推送到GitHub上 12//可以先 git pull origin maingit push origin main 图片上传问题我选择一种图床方式 PicGo下载PicGo下载链接 找到对应想要的版本下载就行。 配置图床 在GitHub上创建一个仓库用于存放图片 去 GitHub → Settings → Developer settings → Personal access tokens → 生成一个 token,勾选 repo 权限(选带classic那个) 然后配置PicGo里面的GitHub图床 12345填入:仓库名:你的用户名/blog-images分支:mainToken:刚才生成的存储路径:imgs/(可选) 5.配置Typora 12345Typora → 偏好设置 → 图...
ID-Based Proxy Signature Using Bilinear Pairings
主要记录一下Technicla Foundations和The Proposed Scheme两个部分 Technicla Foundationsknowledgekeypoint:(Bilinear Pairings) 三个性质: 这里提到了两个配对(简要了解一下):1、Weil-pairing 2、Tate-pairing Weil-pairing性质 destination:定义在$E[r]$上,$E[r]={P:rP=O}$(r-torsion subgroup) 双线性:$e_W(aP,bQ)=e_W(P,Q)^{ab}$ 反对称:$e_W(P,Q)=e_W(Q,P)^{-1}$->$e_W(P,P)=1$ 非退化:if$e(P,Q)=1$对于所有$Q$都成立->$P=O$ Tate-pairing 定义:$e_T:G_1× G_2→F_{q^k}^*$(k为嵌入度) 也就是配对结果进入括域 GDH(这个之前也没有特别清楚只知道有这么一个东西Gap具体Gap啥也是不知道) 先讲...
Github入门(四)
本地与远程仓库交互SSH配置Gitbash自带SSH 如果输入ssh,返回这样的界面就是可以的 然后输入ssh-keygen -t rsa(指定RSA算法),接着连续三个回车键(不需要输入密码)然后就会生成两个文件id_rsa(密钥)和id_rsa.pud(公钥) 划线的就是了 添加SSH keynext step 把id——rsa.pub添加到Github上,这样本地的id_rsa和Github上的id_rsa.pub公钥进行配对,授权成功才可以提交代码 打开Github点击头像选择setting有一些别的博主的我也尝试了一遍是可以的 验证绑定 到此ssh配置完毕可以进行远程仓库交互了 通过Git下载代码 法一:仓库界面code按钮可以找到一个按钮Download ZIP下载一个压缩包到指定目录 法二:git clone clone with HTTPS clone with SSH 推荐还是git clone,为什么呢? git是版本管理工具,用它就是为了记录提交历史,可以回溯到之前的文件(download当然就没办法这样了) 如果只是为了学习别人仓库的知识...
Github入门(三)
Git基础由于Git安装我早已完成就没有进行记录这个博客里面有记录如何下载 既然已经装好了Git我们主要就是学习它的语法了 12git --version//可以看到版本信息 Git自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。 在Windows系统中,Git会查找HOME目录下(一般为C:\UsersUSER)的.gitconfig文件 需要配置的信息一般是用户信息(用户名和邮箱) 也可以配置默认文本编辑器,当Git需要你输入信息是会调用它。如果没有配置,Git会使用操作系统默认的文本编辑器。 第一步先查看配置 1git config --list 我的使用用户名和邮箱的。 如果没有的话可以这么配置 12git config --global user.name "用户名"git config --global user.email 邮箱地址 再次运行git config –list 123git co...
Github入门(二)
仓库操作创建仓库可以理解为一个文件夹 个人界面的仓库页面可以新建 主界面也可以 任选一个就行,进入后就是这样 创建好后可以看到项目界面 仓库名为 Hello World,包含 1 个commit,也就是我们通过勾选 Initialize this repository with a README,创建了一个初始化提交文件 README.md,其中文件后缀为 .md,表示文件为 Markdown 格式;包含 1 个branch,为master分支,即主分支;包含 1 个contributor,为贡献者,也就是我们自己。 再打开个人界面就能看到仓库了,同理主界面也能看到 提交修改 导读:这部分试着修改README文件,并提交这次修改 点击那支笔就可以进入编辑模式我们可以看到markdown源文件 进行修改 点击 Preview changes 预览更改 在页面底部,输入一条简短、有意义的提交消息,描述你对文件所作的更改。如果不写这条消息,以后回顾的时候不好追踪。写好之后点击提交。 提交后刷新页面,可以看到README的标题不一定和仓库名一样可修改。 随着仓库更新REA...
Github入门(一)
由于使用Github一段时间了,但是除了发发博客感觉啥也不会,准备好好研究一下。 Git和GithubGit是一个软件/工具/系统 Github是一个网站/平台(使用Git) Git Git是一个分布式版本控制器,像数据库会记录所有对项目文件的更改(比如对一个文件加了三段文字,删了一段话,改了几个词都能保存) 功能:使用版本控制可以协同合作(多人编辑文件或者代码不出错),版本存储(之前改动的每一版都会)文件备份(本地和服务器都有完整的历史版本,如果服务器坏了本地还有一份完整的历史记录) GithubGithub是通过Git进行版本控制的软件代码托管服务平台,可以理解成放代码的place,往上放代码时用Git进行版本控制。也就是Github使用Git完成版本控制 功能 代码托管:可以把它当作一个网盘放代码,同时使用 Git 功能记录你的代码历史。当然除代码外还能放其他文件。 学习优秀的开源项目:学习别人优秀的源码,写代码之前看别人是怎么写的(比如写作业的时候参考参考),看论文也可以上 GitHub 找源代码,还能找一些开源的软件,插件用。 多人协作...









