密码学原理

比特币被称作是加密货币,但实际上加密货币是不加密的,区块链上所有的交易内容都是公开的,包括账户的地址、转账的金额等等。比特币中主要用到密码学中的两个内容:哈希签名

哈希

密码中的哈希函数被称作:cryptographic hash function,它有两个重要的性质:collision resistance和 hiding 。

collision resistance

其中的collision是指哈希碰撞,什么是哈希碰撞?

若有哈希函数H(),假设两个输入 x , y 且 x 不等于 y ,使得H(x) = H(y),则称为哈希碰撞。

collision resistance 的解释是:Collision resistance is a property of cryptographic hash functions: a hash function H is collision resistant if it is hard to find two inputs that hash to the same output; that is, two inputs a and b such that H(a) = H(b), and a ≠ b.

it is hard to find 意思是很难找到两个不同的输入使得二者的哈希值相等,也就是说想要人为地制造哈希碰撞是非常难的,但哈希碰撞是客观存在的,例如当我们使用哈希表的时候,不同的输入可能会被映射到哈希表中的同一个位置,因为输入空间大于输出空间。

那么collision resistance这个性质有什么用呢?

它可以用来对一个massage求digest,例如有一个massage  m ,取它的哈希值H( m )作为digest 用来检测m是否被篡改,因为当m被篡改时,它所对应的哈希值H(m)就会发生变化,而根据collision resistance性质可以知道,很难找到另一个输入m '  使得H( m ' ) =H( m ),因此想要篡改内容而不被检测出来几乎是不可能的。

举个例子:你想要把一个文件存到云存储服务上,当你某一天要用需要下载回来的时候,如何确定下载的文件就是当初保存的那份文件呢?这时就可以用到哈希函数的collision resistance性质,在上传的时候用文件的内容作为输入算一个哈希值出来,保存到本地,将来取文件的时候再算一个哈希值出来,与原先本地的哈希值进行比较,如果一致则说明文件没有被篡改。

但需要注意的是,哈希函数的 collision resistance 这一性质从理论上是无法证明出来的,它是由实践经验得出的,而有的哈希函数则可以人为地制造哈希碰撞,很著名的一个例子就是MD5,它之前是一个很流行的哈希函数,当初人们认为它很安全,但是现在已经能够人为地制造哈希碰撞了。

hiding

这一性质是指哈希函数的计算过程是单向的、不可逆的。

意思是给定一个输入 x ,可以算出它的哈希值H(x),但无法根据哈希值H(x)反推出原来的输入x ,也就是说,哈希值H(x)没有泄露有关输入 x 的任何信息。

但是仔细一想,真的就没有办法通过H(x)反推出 x 吗?其实是可以通过蛮力求解的方法得出输入 x 的,只要把输入所有可能的取值遍历一遍,将每一个取值的结果与目标H(x)作比较,直到找到相同的结果就可以知道对应的输入了。

因此,hiding这一性质成立的前提是输入空间要足够的大,使得上述这种蛮力求解的方式行不通,而且输入的分布要比较均匀,各种取值的可能性是差不多的。这一点很好理解,因为即使输入空间足够大,但是如果常用的输入都比较集中在某一些值,那么也是可以通过蛮力破解的。

hiding这一性质有什么用呢?

hiding可以和collision resistance 这一性质结合在一起用来实现 digital commitment,有时候也把它称作 digital equivalent of a sealed envelope,直译过来可以理解为 数字加密信封。

举个例子来说明下sealed envelope(加密信封)在现实生活中的意义:比方说有一个人,他想要预测第二天的股票是否会涨,那么如何来证明他的预测是否是准确的呢?

一种方法是,他提前一天对外公布第二天的某某股票会涨,等到第二天的结果出来后再判断他的预言是否准确,那么这种方法是否存在问题呢?如果这个人是股票界的权威人士,那么他的预测势必会直接影响到第二天股票是否会涨,可能使得原本不会涨的股票反倒涨了。

这说明预测结果不能公开,那如果预测结果不公开,等到第二天结果出来后再公开,那又如何保证预测的结果是否被篡改过呢?这就需要用到sealed envelope,将预测结果写下来,放入一个信封,把信封交由第三方公证机构保管,等到第二天结果出来后再验证预测是否准确。这就是现实生活中sealed envelope的用处。

那在电子世界中,如何实现一个digital sealed envelope呢?

将预测结果作为输入 x 算出一个哈希值,将这个哈希值公布出去,由于hiding这个性质,只知道公布的哈希值是无法反推出输入,也就是预测结果;而又由于collision resistance性质,使得输入无法被篡改,因为输入一旦篡改,得出的哈希值就会和当初公布的不一样。这就起到了digital sealed envelope的功能。

但在实际操作中有一些细节需要注意,因为hiding性质的前提是输入空间要足够大,分布要比较均匀,而在上述股票预测的例子中,它的输入空间却不是足够大,因为股票的支数是有限的。常用的解决方法是:在输入后面拼接一个随机数作为整体取哈希,来保证拼接之后的输入足够随机,分布足够均匀。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容