本篇文章给大家谈谈区块链产品ka,以及区块链产品经理面试内容对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
区块链电子发票涉及的主要角色有
区块链+电子发票实践:以腾讯区块链发票为例
发布时间:2022-04-20
1. 项目介绍
据腾讯科技消息区块链产品ka,2018年8月10日,全国首张区块链电子发票在深圳实现落地,其底层技术由腾讯提供。
在深圳国贸旋转餐厅,一张面值198元的餐饮发票被开出,发票密码区由哈希值显示。区块链加密算法以密码的方式,开始悄悄走入普通人的生活。
区块链电子发票由国家税务总局指导、国家税务总局深圳市税务局主导落地,由腾讯区块链提供底层技术支撑,是全国范围内收割”区块链+发票“生态体系应用研究成果。
2018年5月,深圳市税务局携手腾讯成立”智税“创新实验室,旨在通过双方合作、资源互补,打造深圳市”科技创新+“的税务管理现代化系统,探索税务管理创新产品。深圳区块链电子发票是”智税“实验室重点项目,也是实验室收割落地成功。
2018年8月,国家税务总局授权深圳市税务局试行区块链电子发票,由深圳市税务局定义行政发行标准和纳税人发票使用规范,腾讯公司提供区块链底层技术支持,最终实现区块链产品ka了 “资金流、发票流”的二流合一,将发票开具与线上支付的相互结合,打通发票申领,开票、报销和报税全流程。区块链电子发票以互联网产品的形态诞生,做到税务机关各环节可追溯、业务运行去中心化、纳税办理线上化和报销流转无纸化。
在2019年8月5日的“深圳区块链电子发票上线一周年”媒体宣讲会上,深圳市税务局披露了最新的开票数据。截止宣讲会当天,借助区块链技术开出的深圳区块链电子发票已开出近600万张,日均开出4.4万张,累计开票金额达39亿元。
2. 行业痛点
2.1 发票电子化后还是存在信息孤岛
纸质发票电子化在 2017 年起的几年中,掀起了一波不可阻挡的浪潮。而目前电子票的存储,还依然分散在不同的电子票供应商中,构成了分散的数据孤岛。这些数据之间的集成、验证、追踪,较为复杂,也造成了大量成本的浪费。其实,电子票交易是区块链技术极为天然的应用场景。使用分布式账本,可记录跨地域、跨企业的电子票信息。对于电子票据商业背景的追溯、背书连续性、交易主体身份真实性以及电子票在中小规模业务中的普及都有重要意义。
使用区块链技术,通过其互联互通的优势,建立相应的联盟链或公有链,可以使这些信息孤岛中的数据真正的整合起来。同时,还为链中的所有数据提供了透明、安全的分布式存储方案。而且,这些集成后的数据,拥有可信度高、不或篡改、可验证性强等特点。另外,将发票流转信息上链,解决了发票流转过程中的信息孤岛问题,实现了发票状态全流程可查可追溯。
2.2 发票虚开、错开和发票造假问题突出
一些企业常常由于利益的驱使,虚开大额发票,甚至为不存在的虚假交易开出发票。
通过区块链技术,我们可以将发票数据存储在区块链上。结合交易数据的区块链技术,就可以使得交易数据与发票能够拥有公开、透明以及可跟踪性,使交易数据与发票数据能够保持一定的匹配关系,进而快速鉴别虚开发票的现象。
另外,发票开具系统其实也能自动使用区块链中的交易数据来开具发票,减少了因为人工疏忽,而导致错开发票的问题。
企业对于发票造假的验证手段单一,而且目前验证有一定的滞后性。这使得企业蒙受信息不对称产生的损失,降低了员工与企业间、企业与企业间的信任。
如果使用区块链技术来管理发票数据,这将会使得这些发票数据可以快速地在所有节点中被记录,所有安装了客户端的企业都可以及时地查询到这些发票数据。同时,由于区块链技术拥有透明、去信任化的特点,使得只要是能在区块链中查询到的发票数据,都是真实的发票!一并解决了假票难查、慢查的问题。
2.2 发票电子化后未做到全流程管理电子化
发票在开票环节上是实现电子化了,但到公司财务报销时有些还是要把发票打印下来、落在纸上。究其原因,电子发票目前还没有完全实现全链条 " 无纸化 ",主要是因为目前一些企业、单位对电子发票的报销制度尚不完善。2016年初,财政部、国家档案局联合公布的《会计档案管理办法》中已明确了电子会计档案的法律地位,只要满足该办法规定的条件,电子发票的开票方或受票方,可仅以电子形式对发票进行归档保存。
另外,在当下的环境中,不同的信息化供应商提供了不同的税务管理系统。而这些系统与订单系统、支付系统、财务系统的集成需要分别进行定制化接口对接。
使用区块链技术,可以通过时间戳、哈希算法等对发票进行真伪确认,证明其存在性、真实性和唯一性。一旦在区块链上被确定,票据的后续操作都会被实时记录,其全生命周期可追溯、可追踪,这为财税全业务流程管理,提供了一种强大的技术保障和完整的数据支撑。区块链技术的大规模应用,将优化财税领域的业务流程、降低运营成本、提升协同效率,进而为票剧电子化升级提供系统化的支撑。
3. 解决方案
区块链电子发票是区块链技术的重要应用领域之一,借助分布式记账、多方共识和非对称加密等技术,助力国家解决了现行财税环境下的一些实际问题,提供了一套全新的电子发票标准。区块链电子发票有别于传统电子发票,深圳市税务局携手腾讯落地的区块链电子发票,将“资金流,发票流”二流合一,将发票开具与线上支付相结合,打通了发票申领、开票、报销和报税全流程。
1. 业务链上流转 :优化领票、开票、报销和报税全流程。
如上图所示,区块链电子发票业务流程包含领票、开票、流转、验收和入账等,大致分为4个步骤:
(1)税务机关在税务链上写入开票规则,将开票限制性条件上链、实时核准和管控开票;
(2)开票企业在链上申领发票,并写入交易订单信息和链上身份标识;
(3)纳税人在链上认领发票,并更新链上纳税人身份标识;
(4)收票企业验收发票,锁定链上发票状态,审核入账,更新链上发票状态,最后支付报销款。
2. 业务模式创新:连接每一个发票干系人,解决诸多痛点。
腾讯自研的区块链技术依托分布式记账、多方共识和非对称加密等机制,形成了以下优势:
(1) 不可篡改,提高伪造和篡改原有发票的难度;
(2) 信任传递,降低报销公司财务审核、税务稽查的成本;
(3)不可双花,有效防止一票多报;
(4)以业务和数据隔离创新了隐私保护策略;
这种业务模式创新在ToC层面,可解决用户报销难,流程繁杂的问题;在ToB层面,可帮助企业降低开票、存档以及审核入账成本;在ToG层面,可帮助税务局降低监管成本,服务成本。
腾讯区块链为区块链电子发票提供底层区块链服务能力,从架构上分为业务应用平台、电子发票业务平台、区块链基础平台及云基础设施。
1. 云基础设施
云基础设施包括网络基础设施、虚拟机通用资源池和物理服务器资源池等硬件设施,以及配套的云安全、云监控等云平台服务,可以开放式、易插拔地满足上层业务的多样化需求。
2. 区块链基础平台
腾讯区块链基础服务提供底层区块链服务能力:权限管理,哈希运算、数字签名、对称及非对称加密等密码学算法,共识机制,通讯协议,智能合约和存储机制,保证了链上数据可追溯和不可篡改。
3. 电子发票业务平台
区块链电子发票业务层提供以下关键功能:企业注册申请接入,开票、报销、红冲,发票真伪查验,数据分析监控、告警,开票规则控制。
4. 业务应用平台
通过数字发票应用服务层提供的开发SDK和API接口,可以方便地接入第三方服务。目前有考虑到的第三方接入角色有:税务局,服务商和KA企业。
KA(KeyAccount),直译为"关键客户",意为"重点客户","重要性的客户" rel="nofollow noopener" 。
基于腾讯自研的区块链技术,借助区块链技术的分布式记账多方共识和非对称加密机制将“资金流、发票流”二流合一,将发票开具与线上支付相结合,打通了发票申领、开票、报销、报税全流程。通过把发票流转的全流程信息加密上链,确保了发票的唯一性和信息记录的不可篡改性,提高了电子发票系统的安全性,降低了监管机构和企业的成本,简化了消费者开票报销流程。
4. 技术架构
腾讯区块链平台是腾讯自主研发的区块链技术设施TrustSQL系统,依托开源社区与腾讯云计算平台,打造服务智慧产业和分布式商业的区块链基础设施,对外提供一站式区块链服务平台TBaas,提供个人和企业部署区块链效率,加快应用落地。
TrustSQL整体架构由三层组成,底层核心平台层包括6类模块,平台产品服务层定位为合约层,引入管理服务;应用层是在原来的具体应用基础上扩展出了面向垂直行业的解决方案。
1. 底层核心平台(TrustSQL Layer)
底层核心平台定位于打造领先的企业级区块链基础平台,主要是基于腾讯区块链的技术开发和积累,通过SQL和API的接口方式,为上层应用场景提供区块链技术技术服务功能。目前主要包括用户身份管理,共识机制,通讯协议,私钥管理,隐私保护和存储机制。
2. 平台产品服务层(Service Layer)
抽象各类典型的区块链应用,基于底层技术集成提供应用的基本能力和实现框架。用户可以基于这些基本能力,叠加自己业务独有的特性,轻松完成业务逻辑的区块链实现;帮助用户快速搬迁已有业务到区块链上,以应对新的场景需求;或者搭建全新的业务场景,利用区块链的不可篡改、防抵赖等特性解决之前难以解决的问题。
3. 应用服务层(Applicaiton Layer)
想最终用户提供可信、安全和快捷的区块链应用。通过上述的平台产品服务层所提供的两种接口,服务商可以提供行业解决反感。
5. 落地成果
5.1 区块链发票开票流程
与传统发票相比,区块链发票的好处在于,当用线上支付的方式完成一笔交易后,这一笔交易的数据便可视为一张“发票”。而它会通过区块链分布式存储技术,连接消费者、商户、公司、税务局等每一个发票干系人。
这样一张“区块链发票”,每个环节都可追溯、信息不可篡改、数据不会丢失。有了它,你结账后就能通过微信自助申请开票、一键报销,发票信息将实时同步至企业和税局,并在线上拿到报销款,报销状态实时可查。简而言之,有了区块链发票,不用排队开票,不用手写抬头,不用担心发票不见,不用贴发票,不用线下交单。
具体开票流程是这样的:
1.完成付款后,查看微信支付凭证。但和以往不同的是,支付凭证下还有发票入口,用户可以直接点击“开发票”申请开票。
2.填写开票信息,选择开票抬头,点击“申请开票”
3.点击“完成”,成功开票
4.返回微信主页面,打开“新发票提醒”,点击“查看详情”即可获得发票。
5.完成开票后,发票已经自动存入微信钱包。 打开“我”-“卡包”-“我的票券”随时查看已开具的发票。电子发票无需再打印,于“卡包”的“发票列表”选择发票,立刻完成报销。报销金额打回微信零钱余额。
5.2 区块链发票进度里程碑
区块链电子发票上线以来,试点企业和消费者反应良好,成功带动了社会公众对新型开票方式的认知和接受。在2019年8月5日的“深圳区块链电子发票上线一周年”媒体宣讲会上,深圳市税务局披露了最新的开票数据。截止宣讲会当天,借助区块链技术开出的深圳区块链电子发票已开出近600万张,日均开出4.4万张,累计开票金额达39亿元。
5.3 区块链发票落地价值
从开票企业和受票方的角度,纳税人切实体验到了区块链电子发票带来的便捷与高效。
一是降低了企业营商成本。企业开票无需采购税控专用设备,无需管理人员且无需定期清理税控设备存储,财务人员少跑税务机关,开票管理流程极大优化。
税控机是一种具有法律严肃性和不可破坏性的带有计税功能的收款机,不仅是商业企业经营管理的得力助手,也是税务人员常驻店内采集销售数据的执法代表。它内部装有自动记录但不能更改和抹掉的计税存储器,记录着每日的营业数据和应纳税额,是向纳税机关纳税的凭据。它采用特殊"铅封"手段固定在机器内部,除税务和专职注册维修人员外任何人不能打开。
二是提高了企业办公效率。报销是企业财务管理的重要环节,财务人员可以基于区块链电子发票,一键完成发票的验真,验重工作,在线上快速完成报销的审核工作。
三是利好中小微企业。区块链电子发票为企业提供了个性化的开票服务,大型企业可自主接入税务区块链电子发票接口系统后进行开票,中小企业可通过微信商户平台开通微信回执开票功能,无需进行抄报税流程,也不需在再为购票往返税务局,只需要使用手机或者联通互联网的计算机即可实现开票。
四是消费后自主获取、支付即开发票,开票即报销,以及流程的操作体验获得了消费者良好的口碑。
对于监管方而言,发票是税务机关控制税源、征收税款的重要依据,长期以来,税务机关为了防控发票风险,建立了严密且繁琐的发票管理体系。区块链技术应用于发票场景,有利于简化发票管理流程,解决税务机关发票管理成本和增强税务机关获取涉税信息的能力。
杭州下笔有神科技有限公司 CTO 王登辉 整理,来源于《2019腾讯区块链白皮书.pdf》和公开材料
区块链实际应用的产品有哪些?
区块链是以比特币为代表的数字加密货币体系的核心支撑技术。区块链技术的核心优势是去中心化区块链产品ka,能够通过运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供区块链产品ka了解决方案。
区块链的应用领域有数字货币、通证、金融、防伪溯源、隐私保护、供应链、娱乐等等,区块链、比特币的火爆,不少相关的top域名都被注册,对域名行业产生了比较大的影响。
都说开源乃大势所趋,国内区块链有哪些开源产品?
趣链科技的开源产品有开放互联互通的跨链技术平台BitXHub和全面而强大的区块链性能测试平台HyperBench。
BitXHub作为目前行业内性能高、权限体系完善、可支撑应用链数量丰富的联盟链跨链平台,于2020年3月实现全面开源߅支撑山西省公检法司联盟链、人民链、雄安链等区块链基础设施核心项目落地,参与国内外多项互操作标准制定,是目前国内具有较大影响力的开源跨链平台;
区块链性能测试工具HyperBench,于2021年9月全面开源,目前已可适配趣链区块链、以太坊、Hyperledger Fabric、开放原子超级链、中国电信CT-Chain等异构区块链平台,是目前适配异构区块链种类较多的区块链性能测试工具,与浙江大学、中国电信、浙江省区块链研究院等单位建立了良好的生态合作关系。
AQUA氢氧区块链应用是怎么来的?为什么这么火?
区块链在全球市场已是一个炙手可热的概念区块链产品ka,由美股带领的区块链概念股,已经在全球市场烧的火热。这几天,有多家公司宣布进军区块链,除区块链产品ka了独占风头已久的玩客云之外,还有横空而出的锐角云也势头正猛区块链产品ka!球各大巨头资本都在加速布局,在中国,包括阿里、腾讯、百度等都在开发自己的区块链应用项目,而AQUA氢氧区块链应用也是在这个时候应运而生。
aqua氢氧项目的创始人和负责人在区块链这一块有很深的资历:
历任蚂蚁金服-余额宝首席架构师兼技术主管,参与打造1.8万亿资产的产品-余额宝区块链产品ka;前支付宝国内事业群域架构及架构团队主管区块链产品ka;前蚂蚁金服国际事业群解决方案团队技术负责人;互联网事业部解决方案资深架构师,拥有近十年于阿里巴巴集团任职的工作经验。连续9次参加天猫双十一大促技术准备工作,参与打造25.6w TPS的世界一流支付平台。2008年起担任支付宝国内事业群域及解决方案架构团队负责人,统筹规划支付宝三代架构商户业务平台、四代云金融架构行业开放平台,参与完成余额宝、12360购票等多款亿级用户产品的打造。
2015年出任蚂蚁金服国际事业群解决方案团队技术负责人,主导完成了Uber、Apple、Amazon等境外KA商户收单解决方案的规划落地。
2016年以来,在蚂蚁金服财富事业群负责招财宝和余额宝架构及技术。
望采纳
区块链之加密原理总结(一)
先放一张以太坊的架构图:
在学习的过程中主要是采用单个模块了学习了解的区块链产品ka,包括P2P,密码学区块链产品ka,网络,协议等。直接开始总结:
秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。
如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。
2、无法解决消息篡改。
如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。
1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。
2、同样存在无法确定消息来源的问题,和消息篡改的问题。
如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。
1、当网络上拦截到数据密文2时, 由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,区块链产品ka我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。
2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。
如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。
1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。
2、当B节点解密得到密文1后, 只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。
经两次非对称加密,性能问题比较严重。
基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:
当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要, 之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1, 比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。
在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。
无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。
在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢? 有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。
为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。
在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后 对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。
为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:
在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。
以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?
那么如何生成随机的共享秘钥进行加密呢?
对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥 和 临时的非对称私钥 可以计算出一个对称秘钥(KA算法-Key Agreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:
对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥 与 B节点自身的私钥 计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。
对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入 Nonce ),再比如彩虹表(参考 KDF机制解决 )之类的问题。由于时间及能力有限,故暂时忽略。
那么究竟应该采用何种加密呢?
主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。
密码套件 是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。
在整个网络的传输过程中,根据密码套件主要分如下几大类算法:
秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。
消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。
批量加密算法:比如AES, 主要用于加密信息流。
伪随机数算法:例如TLS 1.2的伪随机函数使用MAC算法的散列函数来创建一个 主密钥 ——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。
在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。
握手/网络协商阶段:
在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等
身份认证阶段:
身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。
消息加密阶段:
消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。
消息身份认证阶段/防篡改阶段:
主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC :Elliptic Curves Cryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成 公钥、私钥的算法。用于生成公私秘钥。
ECDSA :用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。 主要用于身份认证阶段 。
ECDH :也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。 主要用于握手磋商阶段。
ECIES: 是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH), H-MAC函数(MAC)。
ECC 是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。 ECDSA 则主要是采用ECC算法怎么来做签名, ECDH 则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。 ECIES 就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。
ECC 是 Elliptic Curve Cryptography的简称。那么什么是椭圆加密曲线呢?Wolfram MathWorld 给出了很标准的定义: 一条椭圆曲线就是一组被 定义的且满足 的点集。
这个先订条件是为了保证曲线不包含奇点。
所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:
所有的非对称加密的基本原理基本都是基于一个公式 K = k*G。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法 就是要保证 该公式 不可进行逆运算( 也就是说G/K是无法计算的 )。
ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。
我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据k*G计算出我们的公钥K。并且保证公钥K也要在曲线上。
那么k*G怎么计算呢?如何计算k*G才能保证最后的结果不可逆呢?这就是ECC算法要解决的。
首先,我们先随便选择一条ECC曲线,a = -3, b = 7 得到如下曲线:
在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如2*2 = 2+2,3*5 = 5+5+5。 那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。
曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。
现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。
ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。
那么P+Q+R = 0。其中0 不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。
同样,我们就能得出 P+Q = -R。 由于R 与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。
P+R+Q = 0, 故P+R = -Q , 如上图。
以上就描述了ECC曲线的世界里是如何进行加法运算的。
从上图可看出,直线与曲线只有两个交点,也就是说 直线是曲线的切线。此时P,R 重合了。
也就是P = R, 根据上述ECC的加法体系,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0
于是乎得到 2*P = -Q (是不是与我们非对称算法的公式 K = k*G 越来越近了)。
于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。
假若 2 可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。
那么我们是不是可以随机任何一个数的乘法都可以算呢? 答案是肯定的。 也就是点倍积 计算方式。
选一个随机数 k, 那么k * P等于多少呢?
我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描 述成二进制然后计算。假若k = 151 = 10010111
由于2*P = -Q 所以 这样就计算出了k*P。 这就是点倍积算法 。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。
至于为什么这样计算 是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:
我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了 整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?
ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:
在曲线上选取一个无穷远点为基点 G = (x,y)。随机在曲线上取一点k 作为私钥, K = k*G 计算出公钥。
签名过程:
生成随机数R, 计算出RG.
根据随机数R,消息M的HASH值H,以及私钥k, 计算出签名S = (H+kx)/R.
将消息M,RG,S发送给接收方。
签名验证过程:
接收到消息M, RG,S
根据消息计算出HASH值H
根据发送方的公钥K,计算 HG/S + xK/S, 将计算的结果与 RG比较。如果相等则验证成功。
公式推论:
HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG
在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C = A+C+B = (A+C)+B。
这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考 Alice And Bob 的例子。
Alice 与Bob 要进行通信,双方前提都是基于 同一参数体系的ECC生成的 公钥和私钥。所以有ECC有共同的基点G。
生成秘钥阶段:
Alice 采用公钥算法 KA = ka * G ,生成了公钥KA和私钥ka, 并公开公钥KA。
Bob 采用公钥算法 KB = kb * G ,生成了公钥KB和私钥 kb, 并公开公钥KB。
计算ECDH阶段:
Alice 利用计算公式 Q = ka * KB 计算出一个秘钥Q。
Bob 利用计算公式 Q' = kb * KA 计算出一个秘钥Q'。
共享秘钥验证:
Q = ka KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'
故 双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。
在以太坊中,采用的ECIEC的加密套件中的其他内容:
1、其中HASH算法采用的是最安全的SHA3算法 Keccak 。
2、签名算法采用的是 ECDSA
3、认证方式采用的是 H-MAC
4、ECC的参数体系采用了secp256k1, 其他参数体系 参考这里
H-MAC 全程叫做 Hash-based Message Authentication Code. 其模型如下:
在 以太坊 的 UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。
首先,以太坊的UDP通信的结构如下:
其中,sig是 经过 私钥加密的签名信息。mac是可以理解为整个消息的摘要, ptype是消息的事件类型,data则是经过RLP编码后的传输数据。
其UDP的整个的加密,认证,签名模型如下:
关于区块链产品ka和区块链产品经理面试内容的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
标签: #区块链产品ka
评论列表