在互联网通信中,有加密就有解密,解密自然就需要密钥,那如何把这个密钥告诉对方呢?密钥交换算法就是要解决这个问题:如何安全的将密钥传输给对方?
回头看看上面提到的非对称加密,它就可以解决这个问题:
服务器负责生成一对公私钥,公钥告诉客户端,私钥自己保存
客户端拿到公钥后,使用它来对后续通信将要使用的对称加密算法密钥进行加密传输
服务端收到后使用私钥解密,拿到这个密钥
以后双方可以通过对称加密进行传输通信
上面这个例子并不只是举例,在早期版本的HTTPS中,就是通过这种方式来进行密钥交换。而后来的版本中,另外一种叫DH及其变种的密钥交换算法用的越来越多。
DH全称Diffie-Hellman,是两位数学家的名称构成,这种算法的核心是完全依靠数学运算实现密钥的交换。
信息摘要算法信息摘要算法其实不算是一种加密算法,加密的前提是可以通过解密还原,而信息摘要算法的目的并不是对数据进行保护,也无法解密还原。
在一些语境下,信息摘要我们听得少,听的更多的名词是哈希
信息摘要算法的目的之一是校验数据的正确性,算法公开,数据通过该算法得出一个摘要值,收到数据后通过该算法计算出这个摘要,前后对比就知道是否有被篡改。
常用的信息摘要算法有:
MD5
SHA1
SHA256
数据编码技术严格来说,数据编码技术也不算是加密算法,因为其目的同样不是为了加密,而只是为了将数据编码以便传输。
最常见的编码算法就是base64了,多用于编码二进制的数据,将不可见的字符编码后转换成64个常见字符组成的文本,便于打印、展示、传输、存储。如邮件eml格式中,将附件文件通过base64编码。
除了base64,还有常用于比特币钱包地址编码的base58。base家族还有base85、base92、base128等众多算法。它们的区别不仅仅在于参与编码的字符集不同,算法执行也是各有千秋。
多因子认证技术说到认证,最常出现的莫过于登录、支付等场景。传统的认证技术就是密码技术,但随着网络攻击的日益猖獗以及互联网渗透到人们生活的方方面面,传统密码技术的安全性不足以满足互联网的发展。
多因子认证技术意为在传统密码认证之外,引入其他认证技术进行补充,使用2种及以上的方式共同完成认证。随着人工智能技术的发展,基于生物特征的认证技术突飞猛进:
指纹认证
虹膜认证
人脸识别
......
这个世界从来不缺先行者,多因子认证看上去很复杂,好在已经有不少头部企业搭建了认证平台,对于绝大多数企业,需要做的只是下载SDK,调用API而已。
目前国内外主流的多因子认证平台有三大派系:
FIDO,国际标准,在国内,翼支付、百度钱包、京东钱包、微众银行等都已经应用
IFAA,阿里系,凭借阿里在电商领域的优势,也吸引了众多追随者。
TUSI,腾讯系
本文罗列了一些常见的信息安全技术,主要分网络安全、系统安全和密码学三个领域展开。
信息安全技术不仅仅是安全工程师的事情,作为一位程序员,了解这些技术将帮助我们更好的Build The World!
知识在于分享,转发这篇文章,让更多的人看到。
往期热门回顾看过无数Java GC文章,这5个问题你也未必知道!
Python一键转Jar包,Java调用Python新姿势!
一个Java对象的回忆录:垃圾回收
内核地址空间大冒险3:权限管理
谁动了你的HTTPS流量?
路由器里的广告秘密
内核地址空间大冒险2:中断与异常
DDoS攻击:无限战争
一条SQL注入引出的惊天大案
内核地址空间大冒险:系统调用
一个HTTP数据包的奇幻之旅
一个DNS数据包的惊险之旅
我是一个流氓软件线程