系统安全密码基本原理以及对称加密

. 前言

 下面是一个消息传递的举例:针对信息发送者A,与信息接收者B,以及窃听者C,C有两种方式破坏安全: 

1.窃取消息,作为接收方破解。

 

2.窃取消息,作为发送方伪造发送。

 

针对上述第一种情况,主要有对称加密和非对称加密两种方式保障。针对上述第二种情况,有诸多消息认证机制可以保障。

 

本文将重点说明对称加密。其他内容可关注公众号:智能化IT系统。

 

二. 密码学发展

在开始,首先阐述一下安全加密机制的两大原则:

·        不使用保密的加密算法

因为任何算法终究都将公开,不管是明是暗,此地无银三百两,意义不大。

·        不使用低强度的密码策略

因为这样比不使用密码甚至更危险。暴力破解,无处不在。

 

OK,那么我们就开始主题。我们先从历史上几个较为著名的加密算法开始说起。

1. 凯撒密码

原理非常简单,就是平移替换。按照字母表每一个字母向后平移N位,例如有一串明文abc,平移后变为DEF。同样是连续的。

2. 简单替换密码

原理同样简单,消息双方保存一份密码的对应表,在对应表中说明密码的对应关系,例如a对应D,b对应2,c对应G。那么abc加密后就位D2G。这个对应关系只有消息双方知道。

3.  enigma

这个和主题越来越接近了。这个其实就是第二次世界大战中,德国使用的密码机算法。消息的发送方和接收方有一个密码本,上面记载每日的密码。发送方通过其进行加密,接收方通过其进行解密。

 

 

在这里,密码本,就可以理解为对称加密中的秘钥。

 

三. 对称加密主要模式介绍

对称加密的流程,和enigma有一定类似。我们下面从如下几方面开始介绍。

 

·        DES加密

典型的对称加密方式。原理是把需要加密的原始数据,以8字节(64bit)进行分割,每8字节,都按照如下的方式进行16轮的加密,注意是16轮。每一轮加密,都将8字节分为前后32bit,后32bit无需任何加密,直接作为下一轮的前32bit。前32bit需要和后32bit以及本轮子秘钥的轮函数结果,做异或运算,得到结果,作为下一轮的后32bit,以此类推。

下图是一个逻辑展示,注意是两轮,看了下图应该就基本清晰了。

注意一点,每一轮的子密钥是不一样的。需要详细了解可以查一下Feistel网络结构。

 

·        3DES加密

和名字的理解一样,就是三轮DES处理,注意第二轮是DES解密,并且三轮的秘钥都不一样。 

3DES目前任然有很多公司使用,但是效率不高,安全性也逐步出现一些问题。

 

·        AES加密

AES是目前对称加密的一个主流的趋势,相对算法略微复杂。

AES的分组长度是128bit,16字节,也就是以16字节为单位,采用多轮Rijndeal加密和解密。

这里以一轮为案例进行说明。在每一轮,将16个字节分为四组,每一组进行平移,平移之后每一个字节与轮秘钥进行异或处理,输出加密后的16字节。

如下如所示:

 

四. 对称加密迭代模式介绍

至此,主要的加密方式的原理我们已经说完了。那么还有一个问题,原始消息肯定是长度不一的,DES的基本单位是16字节,AES是128字节,如果原始数据多于基本单位长度,如何迭代?下面介绍主要的迭代方式。

·        ECB

每一组互不干扰。最后一组如果不够单位长度,padding填充,下面的每一种模式也是这样。

 

·        CBC

第一个分组需要一个初始化向量,IV,与第一分组的明文进行异或,然后加密。

 

·        CTR

如下图所示。

 

 

 

目前CTR和CBC两种模式使用较多。

———————————————————

公众号-智能化IT系统。每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享。扫描下方关注。

posted @ 2018-08-24 13:39  智能化IT系统  阅读(700)  评论(0编辑  收藏  举报