本文首发于 2017-10-31 10:21 原地址:http://www.blockchainbrother.com/article/86
密码学的用途就是解决各种难题(当然,这也是计算机的主要用途)。密码学解决的各种难题围绕机密性、鉴别、完整性和不诚实的人。你也许对各种算法和技术有一定了解,但除非其能够解决某些问题,否则其只是理论而已,这也就是为什么要先对协议进行了解的原因。区块链技术当中一个很重要的组成部分就是密码学,作为从事区块链研究的工程技术人员,应该对密码学有一定的了解。现我想分享一些密码学的基本概念以供交流学习,大家共同学习,更加充实对区块链技术的理解。
协议概述
密码学的用途就是解决各种难题(当然,这也是计算机的主要用途)。密码学解决的各种难题围绕机密性、鉴别、完整性和不诚实的人。你也许对各种算法和技术有一定了解,但除非其能够解决某些问题,否则其只是理论而已,这也就是为什么要先对协议进行了解的原因。
协议(protocol)是一系列步骤,其包括两方或者多方,设计它的目的在于完成一项任务。这个定义说明了:“一系列步骤”意味着协议是从开始到结束的一个序列,每一步必须依次执行,在前一步完成之前,后面的步骤都不能够执行;“包括两方或多方”意味着完成这个协议至少是需要两个人的,单独的一个人是无法构成协议的,当然一个单独的人可以采取一系列步骤去完成一项任务(例如做一顿丰盛的晚餐),但这不是协议(必须有另外一些人参与才能构成协议,比如家里的其他人共同享用了这顿晚餐);最后,“设计其的目的是要完成一项任务”意味着协议必须做一些事。有些事物看起来很像是协议,但若其不能完成一项任务,那也不是协议。
协议的其他特点:
1)协议中的每个人都必须了解协议,并且预先知晓所要完成的所有步骤。
2)协议中的每个人都必须同意并遵循它。
3)协议必须是清楚明晰的,每一步都必须有明确的定义,不能引起误解和歧义。
4)协议必须是完整的,对每一种可能的情况必须规定具体的动作。
我们现约定,协议安排成一系列步骤,并且协议是按照规定的步骤线性进行执行,除非我指定它转到其他的步骤。每一步至少要做下列事件中的一件,即由一方或者多方计算,或者在各方中传递信息。
密码协议(cryptographic protocol)是使用密码学的协议。参与该协议的各方可能是友人和完全信任的人,也可能是敌人和相互完全不信任的人。密码协议包含某种密码算法,但通常协议的目的不仅仅是为了简单的秘密性。参与协议的各方可能为了计算一个数值想共享他们各自的秘密部分,共同产生随机系列,确定相互的身份或者同时签署合同。在协议中使用密码的目的是防止或者发现欺骗和窃听者。若你之前没有了解过协议,那么它会改变你的思想,相互不信任的各方也是能够在网络上完成这些协议的。
在某些协议中,参与者中的一个或几个有可能欺骗其他人,而也可能存在窃听者并且窃听者可能暗中破坏协议或获悉一些秘密信息。某些协议之所以会失败,是因为设计者对需求定义的不是很完备,还有一些原因是由于协议的设计者分析的不够充分。这就好比算法,证明其不安全远比证明其安全容易的多。
相信学习密码学的朋友,或者对通信和计算机协议有一定了解的朋友都对Alice和Bob不陌生。在此,我也将继续携手Alice和Bob和大家谈协议,他们将完成所有的两人协议。在此依旧规定Alice发起所有协议,Bob响应协议。当然,为了进一步学习协议,我还将补充几个人,现约定如下:
以后若无特殊情况,将不再对人名及其对应的角色进行说明。
于中阳 Mercina-zy