对以太币拥有者而言,一个可靠的交易平台是其买卖以太币最重要的载体。Localethereum是一个P2P的以太币交易平台,但与传统的交易所不同,localethereum只是一个连接全世界各地的以太币买卖者的平台。
针对买卖双方最关心的安全问题,在创建localethereum时,设计人员在网站安全方面采取了一些预防措施,以保障用户的账户安全:
1.端到端的信息加密
2.信息前向保密
3.金融前向保密
下面以端到端的信息加密(P2P信息加密)来展开解说。通过localethereum.com发送的每条消息都在浏览器中进行了端到端的加密。没有人——包括localethereum团队——能够阅读这些信息。对于localethereum的服务器,您的消息看起来像一堆随机的难以区分的数字。 一旦加密消息的密钥被销毁,对话就永远消失了。只有当需要解密双方的密钥时,其中一方是自愿的(这是在发生争议的情况下完成的),我们localethereum的工作人员才能阅读这些信息。
技术说明: (我们的协议很大程度上受到了Open Whisper System的信令协议的影响,该协议是Edward Snowden支持的可信开源标准,Whatsapp、Facebook和谷歌Allo均使用该协议。) 每个localethereum用户在注册时都会预先生成数百个签名密钥对,并将它们发送到localethereum服务器。它们被称为制造商密钥("maker keys"),它们允许人们安全地发起交易、发送安全信息、发送以太信息,并在离线的账户上安装智能合约,同时加以前向保密。
使用制造商密钥("maker keys")的目的和好处:
• 完善的端到端加密 ——除了交易双方,谁也看不到你们发出的交易信息。
• 异步方式 ——当交易一方离线时仍可将信息和以太币成功发送给对方。
• 身份验证 ——每一个预密钥都是具有其所有者的身份密钥的签名的,由此您可以判断跟您进行对话的人的身份。
• 前向保密 ——信息前向保密性,一旦加密消息的密钥被销毁,之前的对话就永远消失了,当然您还可以继续与其对话。
• 简单的争端解决方案——当交易的任意 一方提交申诉申请时,我们的工作人员将根据其分享的密钥来查看交易双方的记录。
例如,Alice在localethereum上发布交易信息
1. 她的浏览器(MakerKeyprivate and MakerKeypublic)中将安全生成一对256位的secp256k1公私密钥对。
2. 然后,Alice将使用她的帐户的身份密钥(MakerKeysignature),对SHA3(MakerKeypublic)进行ECDSA签名。
3. MakerKeyprivate 和 MakerKeypublic被提交到localethereum的服务器进行安全保管。私钥使用AES-256安全加密,并在网上存储(至少目前如此)。
4. (重复100次)
根据以上步骤重新进行,Alice将生成并(用她的身份私钥)签名数百个Ethereum地址。
当Bob看见Alice发布的交易信息,并对其中一个交易感兴趣的话,他会从localethereum处获得一个Alice签名的预密钥,以及Alice签名的一个Ethereum地址。Localethereum将为他提供Alice的下一个未使用的制造商密钥(MakerKeypublic)和Ethereum地址(并且不会向其他人展示相同的密钥或地址)。
一旦Bob将两个签名验证到Alice的公钥,他就可以确定密钥和Ethereum地址都属于她。此时,Bob就可以发送以太币或加密信息给Alice了——但由于诸多原因,这个过程并不简单(但此时,Alice并不能主动发送前向保密信息给Bob,或验证Bob签名的Ethereum地址,且此刻还不存在解决争端的机制)。
在这一阶段,Bob做了这3件事:
1. 他继续与Alice进行交谈,并生成了属于他的全新的一次性的secp256k1 密钥对(TakerKeyprivate and TakerKeypublic)。
2. 他获得了一个他自己的钱包地址(TakerAddress)。
3. Bob用他的身份密钥(TradeSignature)对SHA3(MakerKeypublic + MakerAddressaddress + TakerKeypublic + TakerAddress)进行了签名,并将所有东西都绑定到了一起,来证明他的新接受者密钥,Ethereum地址和对这个交易的决心。
现在他拥有了与Alice交易所需的一切必要条件。他可以通过localethereum向Alice发送他的交易签名,交易公钥和交易地址,Alice上线后就可查验他的签名是否有效。
对于安全消息传递,双方使用匿名协议共享密钥。它的工作方式是通过一个名为椭圆曲线算法(ECDH)的异步密钥交换协议,该协议允许Alice和Bob使用一方的私钥和另一方的公钥来获得相同的共享密钥。
ECDH算法的优势是交换双方可以在不共享任何秘密的情况下协商出一个密钥,即 ECDH(MakerKeypublic, TakerKeyprivate)= ECDH(TakerKeypublic, MakerKeyprivate)。使用这个等式,SharedSecretroot利用HKDF算法来生成更安全的密钥,(用SharedSecretenc 给AES-256加密,用SharedSecretmac 给HMAC-SHA256做信息确认)——以防止不同加密方案中出现不必要的潜在交互。
当在交易中互相发送消息时,Alice和Bob会使用AES256-CBC对消息进行加密,并使用随机的IV进行加密。为了验证身份,每条消息都会使用用户的身份签名。最后,使用SharedSecretmac来验证每条加密消息的HMAC-SHA256,进一步进行身份验证和完整性检查。
在交易出现争议的情况下,任何一方都可向localethereum的工作人员提供 SharedSecretroot。这将允许我们查看交易过程并检查消息内容,但是它不会给予我们访问您的钱包或解密其他任何东西的权力。
本文来源:挖币网