LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > BoHr中文版白皮书②——技术框架

BoHr中文版白皮书②——技术框架

2021-01-27 MiningCity开采BTCV 来源:区块链网络

技术框架

3.1 设计理念

Bohr 是一种全新的区块链体系架构,定位为易用的高性能区块 链平台,旨在实现分布式应用的性能扩展,以满足现实世界的真实商 业需求。这是通过创建一个可以构建应用程序的类似操作系统的架构 来实现的。该体系架构提供帐户、身份与授权管理、策略管理、数据 库、异步通信以及在数以千计的 CPU、FPGA 或群集上的程序调 度。

该区块链为一个全新的体系架构,通过低延时高并发硬件加速技 术,可实现每秒支持数百万个交易,且达到秒级确认。 该体系架构定义包含两部分,硬件体系架构及与之配合 的 软 件 体 系 架 构 , 是 一 个 融 合 HPC ( High Performance Computing)及云计算概念的高性能区块链架构,硬件体系由 具有 HPC 硬件支撑的分布式核心节点、通用通讯网络及具有 HPC 硬件支撑的云终端构成。

除了标准区块链软件体系架构下的核心节点上支持的网络管理、 共识算法以及区块链任务处理功能,核心节点引入了与加速硬件匹配 的软件加速引擎,通过 TOE 技术、共识算法加速、数据压缩、数据 加密等技术实现支持每秒百万级用户接入。 该架构下的云终端可以是传统的 PC、智能终端等,同时可以是具备硬件加速特性的终端设 备。

3.2 技术方案

3.2.1 技术优势 Bohr 通过构建一个需求导向、奖励数据贡献、分包实现数据结 构化的社群网络,打造一个安全、高效、可溯源、无数据沉淀、可再 深度开发的数据交易平台,通过数据竞赛和数据去中心化交易来系统 化地解决上述痛点。结合区块链网络与数据价值发掘、交换的需求, Bohr 的构架设计遵循如下基本原则: ? 交易可信 事务历史记录进入区块链并永久存证,交易双方低成本信任交易 网路,这要求网络兼具可靠性与私密性,同时规避数据沉淀等中介问 题。

? 激励相容 经济体系设计促进网络节点发布数据,基于数据开发衍生价值发 掘功能,同时参与整个生态开发促进数据价值发掘、交换成本不断下 降。

? 精细化交易模式 通过网络机制设计促进数据资产交易更趋性细化。

? 支持高并发交易 打造高性能拓展公共区块链支持高并发量数据交换,实验室网络环境可达百万级,成为未来 海量人工智能、物联网、机器人进行大规模数据采集、交换、边缘计 算结果交换等能力的基础设施。

? 支持数据质量验证 支持对数据进行采样、交叉比对、格式比对、类型识别、范围识 别等自动化验证手段,在保障交易安全的同时,默认提供多种数据质 量验证的能力设置。

? 支持衍生数据服务 支持对数据进行可编程模型计算的功能,支持开发者采用通用语 言编制更复杂的数据分析工具并接入 Bohr,支持接入 Oracle 网络 提升智能合约功能范围。

? 支持跨链区块链服务 支持在数据存储、计算能力方面具有成熟解决方案的区块链服务 接入 Bohr。

3.2.2 整体框架 Bohr 遵循成熟的六层技术架构,自上而下分别为:数据层、网 络层、共识层、激励层、合约层、应用层。

1)数据层 / Data Layer 数据层是整个 Bohr 区块链技术中最底层的数据结构,主要描述 Bohr 区块链的最基本的物理形式,是一个区块+链表的数据结构, 包括有:Bohr 的区块数据、哈希函数、merkel 数、非对称公私钥 数据加密技术、时间戳技术等内容。

2)网络层 / Network Layer Bohr 区块链网络本质是一个 P2P(Peer-to-peer 点对点) 的网络,网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,而无需中间环节或中心化的服务器介 入。每一个节点既接收信息,也产生信息,节点之间通过维护一个共 同的区块链来同步信息,当一个节点创造出新的区块后便以广播的形 式通知其他节点,其他节点收到信息后对该区块进行验证,并在该区 块的基础上去创建新的区块,从而达到全网共同维护一个底层账本的 作用。所以网络层会涉及到 P2P 组网机制、数据传播机制、数据验 证机制等的设计,而这些设计都能影响到区块信息的确认速度,所以, 网络层是如何突破区块链技术可扩展这个瓶颈的重要研究方向。

3)共识层 / Consensus Layer Bohr 共识层封装了共识算法和共识机制,能让高度分散的节点 在去中心化的区块链网络中高效地针对区块数据的有效性达成共识, 是区块链的核心技术之一,也是区块链社群的治理机制。它的主要作 用是决定了谁来进行记账,而记账的方式又影响整个系统的安全性和 可靠性。

4)激励层 / Actuator Layer 激励层就是大家常说的挖矿机制,它将经济因素集成到区块链技 术体系中来并设计出一套经济激励模型,鼓励节点来参与区块链的安 全验证工作,包括经济激励的发行机制和分配机制等。 激励层主要出现公链当中,因为公有链必须激励参与记账的几 点,并且惩罚不遵守规则的节点,才能让整个系统朝着良性循环的方 向发展。而在私有链当中,则不一定需要进行激励,因为参与记账的 节点,往往是在链外完成了博弈,通过强制或自愿,来要求参与记账。

5)合约层 / Contract Layer 合约层主要包括各种脚本、代码、算法机制及智能合约,是区块 链可编程的基础。将代码嵌入区块链或是令牌中,实现可以自定义的 智能合约,并在达到某个确定的约束条件的情况下,无需经由第三方 就能够自动执行,这是区块链去中心化、信任机器的基础。 关于合约方面,第一代区块链并不完善,如比特币本身只具有简 单脚本的编写功能,只能进行交易,无法用于其他的领域或是进行其 他的逻辑处理(当然,当初中本聪对比特币的定义仅仅是点对点的支 付系统,并没有想让比特币成为一个操作系统)。而以以太坊为代表 的第二代区块链则极大的强化了编程语言协议,实现了图灵完备,理 论上可以实现任何功能的应用。Bohr 基于以太坊进行优化升级,任 何人都可以上传和执行任意的应用程序,并且程序的有效执行能得到 保证。

6)应用层 / Application Layer 应用层是区块链的展示层,封装了区块链的各种应用场景和案 例,类似于电脑操作系统上的应用程序、互联网浏览器上的门户网站、 搜寻引擎、电子商城或是手机端上的 APP 等等。搭建在 Bohr 链上 的各类 DAPP 应用等,未来的可编程金融和可编程社会也将会是搭 建在应用层上。

3.2.3 智能合约

智能合约的理念可以追溯到1995年,几乎与互联网(world wide web)同时出现。因为比特币打下基础而受到广泛赞誉的密码学家尼 克·萨博(Nick Szabo)首次提出了"智能合约"这一术语。从本质上 讲,这些自动合约的工作原理类似于其它计算机程序的 if-then 语句。 智能合约只是以这种方式与真实世界的资产进行交互。当一个预先编 好的条件被触发时,智能合约执行相应的合同条款。

区块链技术本?是?个?向交易的数据的分布式存储?案。但是 具体在应?中,以交易基础可以衍?出?常?泛的应?。在这些应? 的实现?式,可以通过?系列的程序运?来实现。这样的程序,称为 智能合约。由于智能合约的实现是与加密货币?起出的,所以通常算 作区块链技术的?部分,但是其作为区块链的应?层更加合适。智能 合约其实应该称为傻?合约,因为它的执?是通过代码定义,然后程 序????代码执?实现的。所以并不是合约本?有智能,?是指合 约的编写可以通过代码的形式预先编写。?旦代码运?,执??法? 预。

为了实现智能合约的功能,加密货币通常需要在共识机制??添 加?持。?般实现的?式可以是脚本语?或者是图灵完备的程序语 ?。后者通常需要单独的虚拟机执?来隔绝与其他模块的相关性。 Bohr 的的智能合约执行引擎 BohrVM 采用模块化可拔插的设 计方式,首先开发的是支持 Java 语言的执行引擎 BohrJVM,后 续会提供了支持 Solidity 语言的执行引擎 Bohr EVM。Bohr JVM是为了最大程度利用开源社区在智能合约技术和经验方面的积累,提 高智能合约的重用性而借鉴了以太坊的 EVM 的虚拟机。Bohr VM 的智能合约实现完全兼容 Ethereum 的智能合约规范,使用 JAVA 作为智能合约的开发语言,通过微服务的架构设计以及多重安全检查 机制为原生 Java 智能合约执行提供了一个高性能安全的执行沙 盒。

Bohr 拥有非图灵完备的声明式智能合约,这种智能合约被设计 为解释合约期望的目标,支持布尔运算的同时增加了对变量运算和合 约数据存取的支持,不支持栈和跳转类指令,这样既保留了声明式合 约语言易于理解、安全性高的优点,又增强了合约语言的表达能力, 同时 Bohr 增强了智能合约内部数据的存储能力,大大提升了声明 式智能合约对复杂应用场景的支持能力。与图灵完备的智能合约相 比,声明式智能合约具有低复杂度、轻量化和高性能的优势,同时降 低了编写难度和出错概率。 Bohr 没有账户的概念,Bohr 以 UTXO 的形式存储在不可篡 改的分布式账本的数据单元中。在 Bohr 的智能合约语言里,地址定义是一个布尔表达式,可计算出是 true 或者 false 的结果。如 果交易提供的签名是有效的,并且是由指定公钥对应的私钥所产生, 这个表达式计算的结果为 true。智能合约的所有表达式,最终都会 计算出一个布尔值,多个子表达式可以通过布尔操作联合起来。例如, 下面这个定义需要两个签名。

["and", [

["sig", {pubkey: "one pubkey"}],

["sig", {pubkey: "another pubkey"}]

]]

为了花费与以上定义地址的资金,必须同时提供两个签名。我们 使用 JSON 来编写表达式,可以使用具备很好支持的、已经过优化 的 JSON 解析器。

"Or" 操作可以用来描述需要提供任意一个公钥所对应私钥的签 名。

["or", [

["sig", {pubkey: "laptop pubkey"}],

["sig", {pubkey: "smartphone pubkey"}],

["sig", {pubkey: "tablet pubkey"}]

]]

可以用以上定义实现在三个不同设备上可以控制同一个 address,这三个设备可能是你的电脑、手机和平板。 地址定义的指令可以嵌套,如:

["and", [

["or", [

["sig", {pubkey: "laptop pubkey"}],

["sig", {pubkey: "tablet pubkey"}] ]],

["sig", {pubkey: "smartphone pubkey"}]

]]

地址定义可以要求一个集合中参与者必须达到某个阈值,例如

2-3 签名。

["r of set", { required: 2,

set: [

["sig", {pubkey: "laptop pubkey"}],

["sig", {pubkey: "smartphone pubkey"}],

["sig", {pubkey: "tablet pubkey"}]

]

}]

上面的表达式意味着任意两个签名便可以使表达式为真。如果一 个密钥丢失了,这个地址仍然可用,并且能够修改这个定义,给丢失 的密钥设置一个新值。另外,不同条目可以赋予不同的权重,并可以 设定一个最小权重要求。

["weighted and", {

required: 50,

set: [

{weight: 40, value: ["sig", {pubkey: "CEO pubkey"}] },

{weight: 20, value: ["sig", {pubkey: "COO pubkey"}] },

{weight: 20, value: ["sig", {pubkey: "CFO pubkey"}] },

{weight: 20, value: ["sig", {pubkey: "CTO pubkey"}] }

]

}]

地址定义可以引用其它地址。

["and", [

["address", "ADDRESS 1 "],

["address", "ADDRESS 2"]

]]

这种定义意味着把签名委托给其它地址,这对于构造共同控制的 地址是很有用处的。这种语法给予了用户很多方便,他们能根据自己 的意愿去改变他们自己有权管理的那部分地址的定义,而不会影响别 的用户。地址定义可以用来配备添加到 Bohr VM 中的数据。

["in data feed", [

["ADDRESS1", "ADDRESS2", …],

"data feed name",

"=",

"expected value"

]]

如果由某地址添加到 Bohr VM 的数据反馈结果与期望值相 等,则表达式的结果为 true。通过指定数据反馈的来源,可以实现 链上预言机功能。利用链上预言机可以扩展出非常强大的功能。

["or", [

["and", [

["address", "ADDRESS 1"],

["in data feed", [["EXCHANGE ADDRESS"], ["EURUSD", "+", "0.200"], ">","1.1500"]]

]],

["and", [

["address", "ADDRESS 2"],

["in data feed", [["TIMESTAMPER ADDRESS"], "datetime", ">", "2016-10-0100:00:00"]]

]]

]]

上面的表达式依赖两个预言机,一个会发布欧元/美元的汇率, 另外一个会发布时间。首先,双方为这个表达式定义的地址准备资金, 向这个地址支付各自相应的份额。然后,如果由兑换地址公布的欧元 /美元汇率加上 0.200 曾经超过 1.150,则地址 1 将得到全部资金。 如果在 2020 年 10 月 1 日之前,以上情况没有发生,则地址 2 将得到全部资金。另外一个有趣的例子中,消费者向商人购买货物, 但是他不是很信任商人,如果货物没有发给他,希望钱可以退还给自 己。此时,消费者可以把钱付给用以下方式定义的一个共享地址。

这个定义有效的前提是 FedEx 会在链上存储包裹的单号。如果 货物发放了,根据第一个条款,商人可以解锁资金。如果在商定的日 期之前,货物没有发放,消费者可以拿回自己的资金。地址定义可以实现交易查询。假定用户想购买至少 1200 个单元的数字资产,但 是只愿意支付 1000 Bohr,而且他不愿意一直在线等待卖家。他可 以只在交易平台发布一个订单,当匹配的卖家出现时,自动完成交易。 他可以按照以下方式创建地址,并发送 1000 Bohr 到该地址。

["or", [

["address", "USER ADDRESS"],

["and", [

["address", "EXCHANGE ADDRESS"],

["has", {

what: "output",

asset: "ID of alternative asset",

amount_at_least: 1200,

address: "USER ADDRESS" }]

]]

]]

第一个或条件的含义是用户在任何时候都可以撤销订单,拿回他 的 Bohr。第二个或条件当满足条件的交易出现后,将 Bohr 付给委 托交易平台,授权它来花费资金。交易平台会公开发布订单信息,卖 家可以查看订单列表,生成一个交换资产交易,并且和交易平台一起 签名。

3.2.4 柔性跨链机制

Bohr 通过一系列有针对性的协同智能合约,及异步通讯、状态 机和哈希锁定技术,实现一套通用的柔性跨链机制,打通各个区块链 系统的通信瓶颈,让各种数字资产互联互通,适当的跨链协同机制有 效保证内部各条并行链之间,以及与其他公链之间的共识和价值的有 效和可靠传递。

跨链技术包括两个部分:一个是 Bohr 与外部链的互联互通, Bohr 与其他链通过一个公共的智能合约来实现,适配其他链的特征, 基于状态机的异步操作,完成与其他链的交互。另外一个就是基于 Bohr 平台的其他链之间的互通。

Bohr 也提供一个更复杂的智能合约来支持其他链之间的互联 互通,由于要支持两种不同类型的其他链,智能合约结合中继链完成 不同类型链的互联互通。跨链交易是区块链网络之间的去信任消息, 这是一个关键的基础设施组件,用于链路间通信。跨链交易最初是在 源块上创建的,然后在最终到达目标区块链之前通过桥梁和连接网络 进行处理和转发。如前所述,跨链交易的创建者必须使用 Bohr 作 为通信支付交易费用,从而激励每个交叉点的参与者。

Bohr 跨链通信通过适配器来实现,适配器会创建一个兼容的区 块头。Bohr 设计了层级侧链机制来解决跨链交易匹配不同链区块生 成速度的问题,根据链的区块生成速度把链划分到不同的层,然后为 每一层提供一个专有的适配链或者适配模块来带动同层的跨链交易。

3.2.5 多链并行机制

经典的区块链网络,如比特币网络、以太坊等都是采用单链结构, 所有的事务和交易都是在一条链上进行。单链结构的优点是交易和共 识流程比较简单,在区块链发展早期能够很好地满足用户需求。但是 随着区块链技术的发展和市场对区块链的需求不断增强,单链架构逐 渐暴露出很多无法解决的痛点:

1)整体吞吐量和性能存在瓶颈:比特币只有 7 TPS 以及需要 6 个区块的确认机制,以太坊出块间隔也需要 10-20 秒,这些都 严重阻碍了日益增长的区块链业务发展需求。

2)链内业务相互干扰:单链架构很容易由于个别业务的繁忙而 造成整个系统拥堵,很多正常的交易都得不到及时处理和确认;封闭 的网络结构:无法实现不同链之间的跨链交互,无法满足多平台之间 的业务交互需求。为了克服单链结构的局限性,Bohr 采取多链并行 结构。

并行多主链机制:Bohr 可以引出多条主链,每条主链负责专门 的业务领域,相互独立又相互关联,主链之间耦合比较少,发挥并行 处理的优势,对过程性区块,引入封存策略,超期数据进行历史归档, 提升系统处理效率。多链并行解决不同业务、不同形态链的功能支持, 同时提高性能;跨链共识实现数据审计和价值流通。

由于现实世界的不同业务具有各种各样的特殊性,如前所述单链 结构是很难完美的支撑多种异构业务的。在 Bohr 中,每一条链只 服务于最小功能集合的业务,每个内聚型的业务运行在单独的链,这 样既能做到有效的安全隔离,也能实现计算和资源的有效利用最大价 值,不同链之间通过跨链协议进行交互,实现价值交换。

Bohr 多链结构能满足现实世界各种不同类型的复杂业务需求, 不同类型不同特性的业务在不同的子链运行,比如计算密集型、IO 密 集型、混合型分别在不同链上良好地运行;不同安全等级要求的业务 也可以在不同层次运行,比如针对银行的业务需求,在数据的保密和安全以及事务的强一致性会有更高的要求,因此可以隔离在最安全的 一层。

并行侧链方案:在 Bohr 的生态系统中,被主链索引过的链都 是侧链,每条侧链都被设计成只处理一种特殊类型的交易。当一条侧 链需要验证从另一条侧链发来的信息时,必须包含 Bohr 主链的区 块头信息。面对一些业务主链,其区块中的交易记录可按需引出侧链。

Bohr 引入侧链方案,各个侧链可以并行操作。即每个应用都可以独 立开设一个侧链。Bohr 区块链提供内置的、完善的、易用的侧链支 持,侧链有多种共识算法模块供用户选择,侧链可以发行代币,主链 和侧链可进行双向资产转移。所有侧链与主链共享算力,因此所有侧 链都具有和主链一样的安全性。同时整体系统能耗可以实现最小化, 避免分头挖矿带来巨大能源消耗和碳排放的问题。主链按区块链规则 增长,主链区块中的记录的变动部分由侧链记录,实现区块信息固定 部分与变动部分的有机结合。侧链记录的是主区块交易的附属数据, 不影响其他交易信息,各个侧链可以并行操作,侧链的交易记录由智 能合约或相关利益方签名确认即可。

在该侧链体系中,侧链同样可以拥有自己的侧链,但必须遵循从 上到下的共识继承关系,子链需要继承全部上级链的共识,并同步全 部上级链的消息,但同样也可以通过向主链或其他父级链的共识和系 统来保障共享服务的性能、安全性和消息数据服务。在此基础上,次 级链基于上级链的应用模型来开发自己独立的应用场景,并与上级链 隔离。

Bohr 侧链在系统设计原理上并不限于一层,而是可以建立多层 次链。如下图所示:所谓的多层辅链结构,就是从侧链上再衍生出下 一级侧链,上一层链称为父链,衍生出的链称为子链。

除了支持第三方能够比较方便的在 Bohr 公链上构建侧链外, Bohr 本身还会架构一些提供基础服务的侧链,比如 ID 服务、Token 发行服务、快速支付服务以及数字资产交易服务等,它们都是 Bohr 基础设施的重要组成部分。

3.3 安全体系

3.3.1 椭圆曲线

Diffie 一 Hellman 密钥交换 椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。椭圆 曲线在密码学中的使用是在 1985 年由 Neal Koblitz 和 VictorMiller 分别独立提出的。

ECC 的主要优势是在某些情况下它比其他 的方法使用更小的密钥——比如 RSA 加密算法——提供相当的或 更高等级的安全。 ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用, 例如基于身份的加密。

椭圆曲线 Diffie-Hellman 密钥交换(Elliptic Curve Diffie– Hellman key Exchange,缩写为 ECDH),是一种匿名的密钥许 可协议(Key-agreement protocol)。在这个协定下,双方通过 Diffie-Hellman 密钥交换算法,利用由椭圆曲线加密建立的公钥与 私钥对,在一个不安全的通道中,建立起安全的共有加密资料。这是 Diffie-Hellman 密钥交换的变种,采用椭圆曲线加密来加强安全性。

Bohr 利用椭圆曲线加密算法生成密钥对,密钥对包括一个私钥 和由其衍生出的公钥。私钥用于发送数据时的数字签名,公钥用于验 证数据的来源。数字签名保证了链上数据的一致性,防止数据被恶意 篡改。

DH 密钥交换是一种安全协议,它可以让双方在不安全的信道上 创建一个密钥。双方互相发送的数据就算被第三方知晓,也无法知道 加密信息的密钥。 其解决问题的主要思想可以用下图来解释:

Alice 和 Bob 想要协商出一个只有它们两人知道的颜色,不能让 第三方知道,怎么办呢?解决办法如下:

先从它们共同拥有的颜色(图中为黄色)开始,这个黄色是大家 都知道的,第三方知道也没有关系。

Alice 选了一个只有自己知道的颜色(图中为红色),并将之混 入大家知道的黄色中,形成新的颜色(图中为棕色)。

Bob 也选了一个只有自己知道的颜色(图中为淡绿色),并将之混入大家都知道的黄色中,形成新的颜色(图中为浅蓝色)。

Alice 和 Bob 交换混合后的颜色。(这里假定人们很难从混合颜 色中找到是哪两种颜色混合的,安全性保证取决于此,所以即使第三 方知道了混合后的颜色也没有用,因为它推断不出来只有 Alice 和 Bob 自己掌握的红色和淡绿色)

Alice 收到 Bob 发送过来的混合色后,再加入只有自己知道的红 色,得到秘密颜色=黄色+红色+淡绿色(图中为土色,在图的最下方)。 Bob 收到 Alice 发送过来的混合色后,再加入只有自己知道的淡 绿色,得到秘密颜色=黄色+淡绿色+红色。

至此,Alice 和 Bob 各自拥有了只有它们两人知道的秘密颜色, 且秘密颜色是相同的。

这里的关键是,混合后的颜色,人们无法知晓是由哪两种颜色混 合而成的。由此,很容易想到数学难题,离散对数问题。数学描述如 下:

这里,a 只有 Alice 知道,b 只有 Bob 知道,g , p 是公开的,K K 是最终计算出的共享密钥。 一般描述如下:

1.Alice 和 Bob 协商一个有限循环群 G 和它的一个生成元 g ,一个 大素数 p ;

2.Alice 生成一个随机数 a,计算 A = g a modp,将 A 发送给 Bob;

3.Bob 生成一个随机数 b,计算 B = g b modp,将 B 发送给 Alice;

4.Alice 计算 K = B a modp = (g b )a modp,得到共享密钥 K;

5.Bob 计算 K = A b modp = (g a )b modp,得到共享密钥 K; (g b )a=(g a )b 因为群是乘法交换的,涉及到数论及代数的内容。 Alice 和 Bob 同时协商出 K,作为共享密钥。

最后,安全性问题,DH 密钥交换可以防窃听(即,你知道我们 交换的数据也没关系),但是 DH 本身并没有提供通讯双方的身份验 证服务(正确交换的前提是,Alice 必须确保对方是 Bob),无法抵 御中间人攻击。

3.3.2对称加密算法

对称加密算法,顾名思义,加密和解密过程的密钥是相同的。该类算法优点是加解密效率(速度快,空间占用小)和加密强度都很高。 缺点是参与方都需要提前持有密钥,一旦有人泄露则安全性被破坏; 另外如何在不安全通道中提前分发密钥也是个问题,需要借助 Diffie–Hellman 协议或非对称加密方式来实现。

对称密码从实现原理上可以分为两种:分组密码和序列密码。前者将明文切分为定长数据块作为基本加密单位,应用最为广泛。后者 则每次只对一个字节或字符进行加密处理,且密码不断变化,只用在 一些特定领域,如数字媒介的加密等。

分组对称加密代表算法包括 DES、3DES、AES、IDEA 等:

DES(Data Encryption Standard):经典的分组加密算法, 1977 年由美国联邦信息处理标准(FIPS)采用 FIPS-46-3,将 64 位明文加密为 64 位的密文,其密钥长度为 64 位(包含 8 位校验 位)。

3DES:三重 DES 操作:加密→解密→加密,处理过程和加密 强度优于 DES。

AES(Advanced Encryption Standard):由美国国家标准 研究所(NIST)采用,取代 DES 成为对称加密实现的标准,1997~ 2000 年 NIST 从 15 个候选算法中评选 Rijndael 算法(由比利时密 码学家 Joan Daemon 和 Vincent Rijmen 发明)作为 AES,标准 为 FIPS-197。AES 也是分组算法,分组长度为 128、192、256 位三种。AES 的优势在于处理速度快,整个过程可以用数学描述, 目前尚未有有效的破解手段。

IDEA(International Data Encryption Algorithm):1991 年 由密码学家 James Massey 与来学嘉联合提出。设计类似于 3DES, 密钥长度增加到 128 位,具有更好的加密强度。

序列密码,又称流密码。1949 年,Claude Elwood Shannon (信息论创始人)首次证明,要实现绝对安全的完善保密性(perfect secrecy),可以通过“一次性密码本”的对称加密处理。即通信双 方每次使用跟明文等长的随机密钥串对明文进行加密处理。序列密码 采用了类似的思想,每次通过伪随机数生成器来生成伪随机密钥串。 代表算法包括 RC4 等。对称加密算法适用于大量数据的加解密过程; 不能用于签名场景;并且往往需要提前分发好密钥。

3.3.3 非对称加密算法

非对称加密是现代密码学历史上一项伟大的发明,可以很好地解 决对称加密中提前分发密钥的问题。顾名思义,非对称加密算法中, 加密密钥和解密密钥是不同的,分别称为公钥(public key)和私钥 (private key)。私钥一般需要通过随机数算法生成,公钥可以根 据私钥生成。公钥一般是公开的,他人可获取的;私钥一般是个人持 有,他人不能获取。

非对称加密算法的优点是公私钥分开,不安全通道也可使用。缺 点是处理速度(特别是生成密钥和解密过程)往往比较慢,一般比对 称加解密算法慢 2~3 个数量级;同时加密强度也往往不如对称加密 算法。非对称加密算法的安全性往往需要基于数学问题来保障,目前 主要有基于大数质因子分解、离散对数、椭圆曲线等经典数学难题进 行保护。代表算法包括:RSA、ElGamal、椭圆曲线(Elliptic Curve Crytosystems,ECC)、SM2 等系列算法。

RSA:经典的公钥算法,1978 年由 Ron Rivest、Adi Shamir、 Leonard Adleman 共同提出,三人于 2002 年因此获得图灵奖。算 法利用了对大数进行质因子分解困难的特性,但目前还没有数学证明 两者难度等价,或许存在未知算法在不进行大数分解的前提下解密。

Diffie-Hellman 密钥交换:基于离散对数无法快速求解,可以 在不安全的通道上,双方协商一个公共密钥; ElGamal:由 Taher ElGamal 设计,利用了模运算下求离散对 数困难的特性。被应用在 PGP 等安全工具中;

椭圆曲线算法(Elliptic Curve Cryptography,ECC):现代 备受关注的算法系列,基于对椭圆曲线上特定点进行特殊乘法逆运算 难以计算的特性。最早在 1985 年由 Neal Koblitz 和 Victor Miller 分别独立提出。ECC 系列算法一般被认为具备较高的安全性,但加 解密计算过程往往比较费时;

非对称加密算法一般适用于签名场景或密钥协商,但不适于大量 数据的加解密。目前普遍认为 RSA 类算法可能在不远的将来被破解, 一般推荐可采用安全强度更高的椭圆曲线系列算法。

—-

编译者/作者:MiningCity开采BTCV

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...