-
Notifications
You must be signed in to change notification settings - Fork 10
21.账号
传统信息系统的账号是建立在服务提供方对个体识别的基础上。
识别的3种方式:
- Something you know
- Something you have
- Something you are
识别要素包括:口令、验证码(短信、语言、邮件)、密码设备(U盾、令牌卡等)、生物特征(指纹、虹膜、体重、步态等)、使用习惯(登录IP、设备指纹)等。
如果有个体提供这些识别要素的答案,系统就认为是该个体是账号的主人,放行相关权限的操作。
至于掌握识别要素的个体是否是真正对应账号的个体,系统是不能确认的。
这种模式主要有2个弊端:
- 由于系统掌握所有账号识别要素的答案,一旦系统被攻破,所有账号都遭受损害。
A的账号除了A知道以外,系统也是知道的,B是从哪里盗取的账号,是说不清的。
A再X系统、Y系统...使用的识别要素(口令、验证码等)可能是相同,X系统被攻破,可能导致A在其他系统的账号被滥用。
近年来,百万千万甚至上亿账号的被盗屡见不鲜,都是由于系统集中掌握了识别要素的答案。 - 个体要否认一个操作是很难的,一切以系统为准。
A本人用A的账号给B转账100块,C盗用A的账号给B转账100块,在系统上留下痕迹是一样的。
甚至系统的管理人或特权用户可以直接使用A的账号执行相关操作,这是显然的,并且痕迹与A自己操作是一样的。
首先要承认纯粹的机器识别个体,在方向上就是错误的。机器识别的是特征,不是人。
基于这一点基本认知,系统不识别个体,只识别账号。
要回避以上两个弊端,必须做到系统不能知道任何一个账号识别要素的答案。
识别方式3是方向错误,首先被否决。
识别方式1,系统和个体都知道答案,也不行。
识别方式2,something you have,而且这件something,要个体自己生成,而不能像U盾、令牌卡等设备由系统或其他实体发放。
个体本地设备生成,系统还要能够识别。
能做到这一点的只有非对称算法,并且已有BTC、Ripple等钱包账号的成功案例。
账号从生成的那一刻开始,始终不离开个体控制的计算设备。
照抄BTC等区块链项目的钱包账号的生成方式和算法,生成个体账号。
这里摒弃用户账号的说法,个体是账号的主人,是本地系统的主人,而不是系统的一个用户。
具体方法:
使用种子seed(默认随机生成)按椭圆曲线(当前为secp256k1)算法分离出公钥pk和私钥sk
对公钥pk使用散列算法并进行编码生成账号地址address
对种子seed进行编码生成编码后的种子seed
address形如oeZELFBq5mbE4y5XdvG1f3DsW85FM7HHGM
seed形如xpQthz8SovHw3DF8CtmLw71VA7RhR
推导关系如下:
seed ==> (pk,sk)
pk ==> address
address ≠≠> seed
注意:
种子seed就是一切,应该妥善保存,防止泄漏。
账号地址只依赖于公开算法,可以公开给其他个体,用于标识个体。
男朋友会欺骗你,闺蜜会背叛你,算法不会,它就是不会。