U盾的原理很类似于双向认证的TLS(SSL)或者其它用到RSA的双向证书验证手段,以下步骤可能和U盾实际执行的有所区别,但本质相同:
--银行先给你一个"冲击",它包含了随机数,以及该随机数HASH,它们都由公钥加密,这样就可以保证只有你能解密这个"冲击"
--你计算该随机数的HASH,并和用私钥解出的HASH,两者相同后,便可确认银行的身份
--接下来,以一个只有你和银行知道的算法,利这个随机数和一些其它信息,生成"响应"和相应的HASH,再用私钥加密后发回银行。(此时银行也以相同的算法计算该"响应")
--银行用公钥解密,并验证HASH正确,接下来银行比较两个"相应"是否相同,相同的话客户的身份也确认了
至于私钥的保密性由U盾来完成。U盾的控制芯片被设计为只能写入证书,不能读取证书,并且所有利用证书进行的运算都在U盾中进行。所以,只能从U盾读出运算结果。
ps:
和平常登录>但是既然这个规律(公钥)已经被公布出来了,为什么还需要另一个规律(私钥)来解密,我们把给出的公钥进行反向一下不就可以解密了吗?为什么公钥解不凯密文?
首先公钥、私钥都可以加密的(只是加密的用途不同),而解密要两个混合才行
你所说的“公钥进行反向”不是很对,你学过化学 那鸡蛋加热后再冷却能成原来的样子吗? 并不是所有的都是可逆的
加密解密的过程是用到 两个很大的素数的乘积来因式分解(据我了解),具体方法我也不懂 那是三个很著名的数学家一起弄出来的 ,还因为这个得了诺贝尔奖 呵呵1 生成公钥
首先检查本机公钥:
$ cd ——/ssh
如果提示:No such file or directory 说明你是第一次使用git。如果不是第一次使用,请执行下面的 *** 作,清理原有ssh密钥。
$ mkdir key_backup$ cp id_rsa key_backup$ rm id_rsa
生成新的密钥:
$ ssh-keygen -t rsa -C “您的邮箱地址”
在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。
您可以在你本机系统盘下,您的用户文件夹里发现一个。ssh文件,其中的id_rsapub文件里储存的即为刚刚生成的ssh密钥。
2 添加公钥
登录CODE平台,进入用户“账户设置”,点击右侧栏的“ssh公钥管理”,点击“添加公钥”,将刚刚生成的公钥填写到“公钥”栏,并为它起一个名称,保存即可。
注意:复制公钥时不要复制多余的空格,否则可能添加不成功。
我碰到的一个项目:有些时候,需要在你生成的。ssh目录下,新建个config文件,然后里面写入user xxx
3 管理公钥
您也可以在“账户设置”——“ssh公钥管理”删除或者修改公钥。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)