{Crypto} ECC 椭圆曲线加密

首先,关于什么是ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学),这里有一篇入门介绍文章,讲解的很好,看不太懂也没关系,至少要了解是什么。尤其是最后的签名算法原理。

ECC运用于加密大致有三种

  1. 签名验证
  2. 交换秘钥
  3. 加密解密
签名验证

参见wiki
.net提供了ECDsaCng,实现了ECDSA算法。
代码看这里

秘钥交换

关于秘钥交换算法 Diffie–Hellman,请参见wiki

迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。

交换过程:

  1.  Alice和Bob先对p 和g达成一致,而且公开出来。Eve也知道它们的值。
    
  2.  Alice取一个私密的整数a,不让任何人知道,发给Bob 计算结果:A=g^a mod p. Eve也看到了A的值。
    
  3.  类似,Bob 取一私密的整数b,发给Alice计算结果B=g^b mod p. 同样Eve也会看见传递的B是什么。
    
  4.  Alice 计算出S=B^a mod p=(g^b)^a mod p=g^ab mod p.
    
  5.  Bob 也能计算出S=A^b mod p=(g^a)^b mod p=g^ab mod p.
    
  6.  Alice 和 Bob 现在就拥有了一个共用的密钥S.
    
  7.  虽然Eve看见了p,g, A and B, 但是鉴于计算离散对数的困难性,她无法知道a和b 的具体值。所以Eve就无从知晓密钥S是什么了。
    

.net 提供了 ECDiffieHellmanCng,实现了ECDHE算法(Elliptic Curve Diffie-Hellman Exchange)。 此算法中两端采用的KEY都来自于椭圆曲线。

Elliptic curve Diffie-Hellman (ECDH) is an anonymous key agreement protocol that allows two parties, each having an elliptic curve public-private key pair, to establish a shared secret over an insecure channel. This shared secret may be directly used as a key, or better yet, to derive another key which can then be used to encrypt subsequent communications using a symmetric key cipher. It is a variant of the Diffie-Hellman protocol using elliptic curve cryptography.

代码看这里

加密解密

<i>ECIES,暂未研究,日后再写。</i>

推荐阅读更多精彩内容

  • 背景介绍 最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。 在开始SSl...
    四月不见阅读 645评论 3 1
  • 一、SSL协商 由于非对称加密的速度比较慢,所以它一般用于密钥交换,双方通过公钥算法协商出一份密钥,然后通过对称加...
    自我陶醉阅读 2,109评论 1 1
  • 亲子日记 2017年10月17号 阴转小雨 星期二 今天孩子放学回来做手机作业,英语还不...
    我是你的菜你是我的爱阅读 172评论 0 0
  • 他和以前一样,我来的时候他把他最好的拿出来给我吃,香蕉刚吃完,他又给我猕猴桃,刚吃玩和他聊了会他又把桌子的那串葡...
    雷一凡阅读 95评论 0 0
  • 还记得曾经那种面对他时脸红心跳加速的感觉吗?你又有多久没有这样的感觉了。 随着年龄的增长,爱情变得越来越物质化,最...
    坚持自己最初的梦阅读 290评论 0 0
  • 这是一个小女孩的成长故事,现在的她即将18岁了,在这里祝她生日快乐! 小女孩叫木子,她生在一个农村,...
    南子无名阅读 97评论 0 1