密码学基础

第1节 密码学概述

密码是人类在信息活动中的一项伟大发明,是保护秘密信息的工具。它诞生于公元前两千余年的埃及,迄今已有四千多年的历史。在出现年代有可查证记录的科学技术中,密码是历史最为悠久的科学技术之一。

百度百科里对密码的解释:***密码是一种用来混淆的技术,使用者希望将正常的(可识别的)信息转变为无法识别的信息。***但这种无法识别的信息部分是可以再加工并恢复和破解的。

随着时代的进步与科学技术的不断革新与发展,密码的理论技术和应用领域都发生了巨大变化。现代密码作为保障信息安全的核心技术,应用于社会活动的各个领域。

知识误区:密码≠口令,我们常说的密码,其实正确的叫法应该叫做口令,密码及密码学是一门专用的技术。

1. 密码的定义与密码体制

  • 密码
    密码是通信双方按约定的法规进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着函信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
  • 密码学
    密码学是研究如何隐密地传递信息的学科。密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为密码编码学;应用于破译密码以获取通信情报的,称为密码破译学(密码分析学),总称密码学。
  • 密码体制
    密码体制也叫密码系统,是指能完整地解决信息安全中的机密性、数据完整性、认证、身份识别、可控性及不可抵赖性等问题中的一个或几个的一个系统。对一个密码体系的正确描述,需要用数学方法清楚地描述其中的各种对象、参数、解决问题所使用的算法等。密码体制分为私用密钥加密技术(对称加密)和公开密钥加密技术(非对称加密)。

2 密码学专用术语

2.1 发送者和接受者

假设发送者(sender)想安全地发送消息给接受者(receiver),他想确信窃听者(eavesdropper)不能阅读发送的消息。

2.2 消息(message)

被称为明文(plaintext)。用某种方法伪装消息以隐藏它的内容的过程为加密(encryption),被加密的消息称为密文(ciphertext),而把密文转变为明文的过程称为解密(decryption)。

2.3 密码学(cryptology)

作为数学的一个分支,包括密码编码学和密码分析学两部分,精于此道的人称为密码学家(cryptologist),现代的密码学家通常也是理论数学家。能使消息保密的技术和科学叫做密码编码学(cryptography),从事此行业的人员称为密码编码者(cryptographer),从事密码分析的专业人员则称为密码分析者(cryptanalyst)。密码分析学(cryptanalysis)即破译密文的科学和技术,即揭穿伪装。

2.4 鉴别(authentication)

鉴别(authentication)消息的接受者应该能够确认消息的来源;入侵者不可能伪装成他人。

2.5 完整性(integrity)

完整性(integrity)消息的接受者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。

2.6 抗抵赖(non-repudiation)

抗抵赖(non-repudiation)发送者时候不可能虚假地否认他发送的消息。

2.7 密码算法(algorithm)

也叫密码(cipher),用于加密和解密的数学函数。

2.8 密钥(key)

现代密码学用密钥(key)解决了问题,密钥用"K。表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间(keyspace)。

2.9 密码系统(cryptosystem)

由算法以及所有可能的明文、密文和密钥组成 。

2.10 受限制的(restricted)算法

如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的(restricted)算法。大的或者经常变换的用户组织不能使用它们,因为如果一个用户离开这个组织,其他的用户就必须改换另外不同的算法。如果有人暴露了秘密,所有人都必须改变他们的算法,并且受限制的密码算法不可能进行质量控制或标准化。

2.11 对称算法
  • 定义
    对称算法(symmetric algorithm)又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反之亦然。对称算法的加密和解密表示为:
    E K ( M ) = C , D K ( C ) = M EK(M) = C, DK(C) = M EK(M)=C,DK(C)=M
  • 分类
    对称算法可以分为两类,一次只对明文中的单个位运算的算法称为序列算法(stream algorithm)或序列密码(stream cipher)。另一类算法是对明文的一组位进行运算,这些位组称为分组(block),相应的算法称为分组算法(block algorithm)或分组密码(block cipher)。

    对称密码中,典型的序列密码有RC4、EAL、ZUC等;
    其中,zuc算法(祖冲之算法)是我国自主研究的序列密码算法,相关标准为GM/T 0001-2012《祖冲之序列密码算法》。该标准是国家密码管理局采用的序列密码国密标准,且已被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的候选算法。该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。

分组密码主要有DES、AES、SM4等。

其中,SM4是我国采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为GM/T 0002-2012《SM4分组密码算法》。在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。

SM4的应用场景主要是业务数据的加密传输、存储等。

2.12 非对称算法(公开密钥算法)
  • 非对称算法,即公开密钥算法(public-key algorithm),指用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(在合理假定的长时间内)。
  • 加密密钥叫做公开密钥(public-key,简称公钥),解密密钥叫做私人密钥(private-key,简称私钥)。
  • 用公开密钥K加密表示为: E K ( M ) = C EK(M) = C EK(M)=C
  • 用相应的私人密钥解密可表示为: D K ( C ) = M DK(C) = M DK(C)=M

    - SM4算法实现
    SM4加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算。
    每一次迭代运算均为一轮变换函数F。
    SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。

    另外的一种密码算法,杂凑密码算法(哈希算法、散列算法),把任意长度的输入,通过杂凑算法,变换成固定长度的输出,这个输出值就是杂凑值。
    SM3是中华人民共和国采用的一种密码散列函数标准,由国家密码局于2010年12月17日发布。相关标准为"GM/T 0004-2012《SM3密码杂凑算法》"。
    在商用密码体系中,SM3主要用于完整性校验、数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。
    SM3输出的散列值为256bit(32字节)
  • 非对称算法都是基于经典数学难题求解困难性设计,常见的非对称算法有RSA、DH、ECC等。
  • SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密钥算法。
  • SM2椭圆曲线公钥密码算法是我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较其他公钥算法所需密钥长度小很多。
  • SM2算法行业标准:GM/T 0003-2012《SM2椭圆曲线公钥密码算法》。
  • 该标准分为五部分:
    (1)总则 (2)数字签名算法
    (3)密钥交换协议 (4)公钥加密算法
    (5)参数定义
2.13 算法的安全性
  • 安全等级
    根据被破译的难易程度,不同的密码算法具有不同的安全等级。如果破译算法的代价大于加密数据的价值,或者破译算法所需时间比加密数据保密的时间更长,再或者用单密钥加密的数据量比破译算法需要的数据少得多,那么你都有可能是安全的。
    可能是指,因为再密码分析中总有新的突破。另一方面大多数数据随着时间的推移其价值会越来越小,而数据的价值总是比突破保护它的安全性的代价更小。
  • 用不同方式衡量攻击方法的复杂性
    数据复杂性(data complexity):用作攻击输入所需的数据量
    处理复杂性(processing complexity):完成攻击所需要的时间,也经常被称作工作因素(work factor)
    存储需求(storage requirement):进行攻击所需要的存储量
  • 密钥的破解
    CPA:选择明文攻击,攻击者已知算法、明文、密文,通过进行加密或解密过程中芯片的功耗,并进行分析,从而得到秘钥。
    SPA:简单功耗分析,通过分析芯片的功耗,识别在加密过程中执行的指令(如置换、移位、查表、异或等),最终破解密码算法的实现过程。
    DPA:差分功耗分析,在芯片工作状态下,探测芯片能量消耗,将加密过程中电路能量消耗与操作数关联,用统计方法来获取密钥信息的一种攻击方法。

密码算法在芯片上实现时很容易泄露出一些与密钥相关的侧信道信息,有的甚至直接泄露了密钥。因此,侧信道分析方式已经成为破解密码芯片的常用攻击手段,受到了学术界和商业街非常大的重视。国内外对侧信道分析技术的研究已经取得非常大的进展,发展出一系列的分析方法,如功耗分析、电磁分析和时间分析等,其中比较成熟有效的侧信道分析方式是功耗分析方式,主要有简单功耗分析SPA和差分功耗分析DPA。目前,针对常规DES和AES算法的智能卡已经实现了SPA和DPA攻击,对常规RSA和ECC智能卡主要采用SPA攻击。在国际上DPA攻击方法也得到了广泛和深入地研究,针对各种通用的密码算法都发展出了相应的DPA方法。

第2节 主要发展历程

2.1 密码发展的时间阶段划分

手工(古典)密码时期(手工、机械阶段 - 1949)

手工密码时期创设的代替变换称为迄今为止密码学的两大基本变换。
1883年A·克尔克霍夫斯提出战地密码的设计原则:将密钥与密码算法分离,强调密码的秘密必须全寓于密钥之中。

14世纪至20世纪初,众多密码学论著于介绍相继发表**一次一密数本(ONE TIME PAD-OTP)**是手工密码发展的最高成就:当用作乱数的密钥的长度不小于明文的长度,乱数又是随机数序列时,这样的密码体制是安全保密的。

机械(近代 )密码时期(计算机阶段 1949 - 1975)

机械密码出现于20世纪的20年代,到了第二次大战期间机械密码进入其发展使用的黄金时期。

机械密码的两大代表:圆盘型密码、M-209型密码。

圆盘型密码以若干个等长的线路轮作不等步的运动,生成大周期的无序代替表序列,用以对明文做代替变换;

M-209型密码用若干个不等长(长度应互不相同)作异步运动,生成大周期的乱数序列,用以对明文作代替变换。

电子(现代)密码时期现代密码(1976 - )

20世纪的50年代与60年代之交,早期的基于分立式电子元器件的电子密码开始应用。

二战后,全球经济及科学高速发展,效率低下的线外式(off-line)密码通信逐渐被一种新的电子式机械密码(Electronic Cipher Machine)所取代。

20世纪70年代后期,在微电子技术和计算机技术高速发展的推动之下,基于集成电路和计算机技术的密码体制的出现标志着密码技术进入了计算机时代。

2.2 密码发展历史的两个里程碑

密码学发展历史上有两项伟大的知识创新,将密码学从理论到应用推进到信息科学的前沿。一个是1948年仙农(Shannon)的信息理论,另一个是1976年迪菲和赫尔曼(Whitfield Diffie and Martin E. Hellman)的公开密钥密码理论。

仙农信息理论

在信息理论中,**仙农给出了完善保密体制的概念------不能通过观察密文得到明文的任何信息。**即给定密文Y,明文X的后验概率等于明文X的先验概率。同时仙农也给出了完善保密体制的判定准则:密钥(乱数)与明文等长,也与密文等长,每一个密钥(乱数)用且仅用一次。

在此理论中,**仙农给出信息熵、冗余度和唯一解距离等概念。**仙农的这些概念和理论使人们从一个崭新的角度去认识了密码的设计和密码体制安全性的判定问题。

公开密钥密码理论

19076年,迪菲和赫尔曼(Whitfield Diffie, Martin E. Hellman)一同发表的论文"New Directions in Cryptography"《密码学的新方向》是密码学发展史上的第二个里程碑。他们提出了公开密钥密码体制,即双密钥或非对称密钥密码体制设计思想。

1977年,Ron Rivest, Adi Shanir和Len Adleman三人利用大数分解这个公认的数学难题构造了一种公开密钥密码体制------RSA。

中华人民共和国密码法

《中华人民共和国密码法》围绕"怎么用密码、谁来用密码、怎么管密码",重点规范了5方面44条内容。明确立法目的是"为了规范密码应用和管理,促进密码事业发展,保障网络与信息安全,维护国家安全和社会公共利益,保护公民、法人和其他组织的合法权益"。强调"坚持党对密码工作的领导",规定"中央密码工作领导机构对全国密码工作实行统一领导",国家密码管理部门也就是国家密码管理局负责管理全国的密码工作。

第六条 国家对密码实行分类管理,密码分为核心密码、普通密码和商用密码。
第七条 核心密码、普通密码用于保护国家秘密信息,核心密码保护信息的最高密级为绝密级,普通密码保护信息的最高密级为机密级。
核心密码、普通密码属于国家秘密。密码管理部门依照本法和有关法律、行政法规、国家有关规定对核心密码、普通密码实行严格统一管理。
第八条 商用密码用于保护不属于国家秘密的信息。
第三十七条 关键信息基础设施的运营者违反本法第二十七条第一款规定,未按照要求使用商用密码,或者未按照要求开展商用密码应用安全评估的,由密码管理部门责令改正,给予警告;拒不改正或者导致危害网络安全等后果的,处十万元以上一百万元以下罚款,对直接负责的主管人员处一万元以上十万元以下罚款。

《信息安全技术 网络安全等级保护基本要求》《信息安全等级保护商用密码技术要求》

7.4.4 等级保护第三级信息系统

第三级信息系统要求如下:

a) 应使用密码技术对登录的用户进行身份标识和鉴别,实现身份鉴别信息的防截获、防假冒和防重用,保证应用系统用户身份的真实性;

b) 应使用密码技术的完整性功能来保证业务应用系统访问控制策略、数据库表访问控制信息和重要信息资源敏感标记等信息的完整性;

c) 应采用密码技术保证重要数据在传输过程中的机密性,包括但不限于鉴别数据、重要业务数据和重要用户信息等;

d) 应采用密码技术保证重要数据在存储过程中的机密性,包括但不限于鉴别数据、重要业务数据和重要用户信息等;

e) 应采用密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要用户信息等;

f) 应采用密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要用户信息、重要可执行程序等;

g) 应使用密码技术的完整性功能来实现对日志记录完整性的保护;

h) 应采用密码技术对重要应用程序的加载和卸载进行安全控制;

i) 宜采用符合GM/T 0028的三级及以上密码模块或通过国家密码管理部门核准的硬件密码产品实现密码运算和密钥管理。

2.3 密码学发展的三大动力

2.4 密码发展趋势

第3节 密码分类应用

3.1 密码分类分析

1、密码分析(密码破译)

是指在不知道密钥的情况下,恢复出密文中隐藏的明文信息的过程。密码分析也是对密码体制的攻击。成功的密码破译能恢复出明文或密钥,也能够发现密码体制的弱点。

密码分析技术是指实施密码破译过程中常用的各种技术、手段、措施、方法和工具。主要的密码分析方法有唯密文攻击、已知明文攻击、选择明文攻击等。
2、白盒攻击

攻击者对设备终端拥有完全的控制权,能够观测和更改程序运行时的内部数据。
3、黑盒攻击

攻击者只能获取系统的输入、输出。
4、信道攻击

通过程序运行时泄露的物理信息(如时间、功耗、电磁辐射等),可以实质性地部分或完全获取内部数据,进而完成对程序的破解或数据(密钥)的窃取。

3.2 密码是信息安全的基石

密码技术作为国家安全三大技术(密码技术、核技术、航天技术)之一,

成为保障国家信息安全的重要基础!!!

3.3 商用密码算法介绍

  • 商用密码算法:是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。
  • 国产密码算法:国密即国家密码局认定的国产密码算法。

3.4 基于密码实现可信验证体系应用

(1)"封堵查杀"被动防护已过时

  • 当前大部分网络安全系统主要是由防火墙、入侵监测和病毒防范等组成,称为"老三样"
  • 信息安全问题是由设计缺陷而引起
  • 消极被动的封堵查杀是防不胜防的
  • 只能用密码技术才能有效抵御攻击
    (2)可信免疫的计算模式
  • 可信计算是指计算运算的同时进行安全防护,使计算结果总是与预期一样,计算全程可测可控,不被干扰
  • 是一种运算和防护并存的主动免疫的新计算模式,用密码实施身份识别、状态度量、保密存储,及时识别"自己"和"非己"成份,从而破坏与排斥进入机体的有害物质

安全防护效果

1)攻击者进不去

2)非授权者重要信息拿不到

3)窃取保密信息看不懂

4)系统和信息篡改不了

5)系统工作瘫不成

6)攻击行为赖不掉

"震网"、"火焰"、"心脏滴血"、等不"查杀"而自灭

3.5 电子邮件加密应用

使用SM9方式,直接使用用户标识(邮件地址、手机号...)作为公钥,减少许多环节

可对接已有邮件服务器,实现客户端加密、WEB加解密、传输加密、强身份认证、外发加密、服务端存储加密、安全域互通

3.6 传输中的数据加密需求

HTTP:直接通过铭文在浏览器和服务器之间传递信息。

HTTPS(超文本传输安全协议):是以安全为目标的HTTP通道,简单讲是HTTP的安全版。新型场景下的新需求采用对称加密和非对称加密结合的方式来保护浏览器和服务器端之间的通信安全。对称加密算法加密数据 + 非对称加密算法交换密钥 + 数字证书验证身份 = 安全。

传统的HTTP协议通信 :传统的HTTP保温是直接将报文信息传输到TCP然后TCP再通过TCP套接字发送给目的主机上。
HTTPS协议通信 :HTTPS是HTTP报文直接将报文信息传输给SSL套接字进行加密,SSL加密后将加密后的报文发送给TCP套接字,然后TCP套接字再将加密后的报文发送给目的主机,目的主机将通过TCP套接字获取加密后的报文给SSL套接字,SSL解密后交给对应进程

相关推荐
山登绝顶我为峰 3(^v^)314 小时前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
应长天2 天前
密码学(斯坦福)
密码学
Turbo正则3 天前
量子计算基础概念以及八大分支
密码学·量子计算
网安INF14 天前
公钥加密与签名算法计算详解(含计算题例子)
网络·算法·网络安全·密码学
电院工程师15 天前
基于机器学习的侧信道分析(MLSCA)Python实现(带测试)
人工智能·python·嵌入式硬件·安全·机器学习·密码学
电院工程师16 天前
SM3算法C语言实现(无第三方库,带测试)
c语言·算法·安全·密码学
小七mod18 天前
【BTC】密码学原理
web3·区块链·密码学·比特币·btc·肖臻·北大区块链
电院工程师23 天前
轻量级密码算法PRESENT的C语言实现(无第三方库)
c语言·算法·安全·密码学
电院工程师23 天前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
电院工程师24 天前
SM3算法Python实现(无第三方库)
开发语言·python·算法·安全·密码学