• 密码的前情知识


    NIST的《计算安全手册》中有提到,计算机安全核心地位的3个关键目标,被称为CIA三元组

    • 保密性:数据的保密性和拥有者的隐私性
    • 完整性:数据的完整性和系统的完整性
    • 可用性:确保对信息的及时和可靠的访问和使用。

    之后很多从事安全领域的人认为还需要追加两条:真实性和可追溯性。

    那么,如何来确保产品和机构的安全呢,ITU-T提出了一种OSI安全框架,主要关注安全攻击,安全机制和安全服务。

    1. 安全攻击:任何危及信息系统安全的行为。分为被动攻击(窃听,检测以获取传输信息)和主动攻击(伪装,重播,消息修改和拒绝服务)。
    2. 安全机制:用来检测攻击并组织攻击的机制;或从攻击状态到正常状态的过程(特定和普遍的安全机制)。
    3. 安全服务:加强数据处理系统和信息传输的安全性(实体真实性和数据源认证,访问权限控制,数据保密性、完整性和不可否认性,可用性服务)。

    密码算法和协议可以分为4个主要领域:

    • 对称加密:公钥和私钥相同,可加密任意大小的数据块或者数据流,包括消息,文件,密钥和口令,在现实中应用的最为广泛。
    • 非对称加密:公钥和私钥不同,一般用于加密小的数据块,比如加密密钥或者数字签名中的散列函数值。
    • 数据完整性算法:完整性用于确保数据块的内容没有被篡改,内容的真实性。
    • 认证协议:用于认证实体的真实性,或者说来源的真实性。

    传统的加密技术有对称密码模型和代替技术

    密码编码学系统有3个独立的特征:

    • 转换明文为密文的运算类型:所有的加密算法都基于两个原理,代替和置换。代替是指将明文中的每个元素映射成另一个元素。替换是指将明文中的每个元素重新排列。运算是可逆的。大多数密码体制都使用了多层代替和置换,也称为乘积密码系统。
    • 所用的密钥数:相同或不同,分别称为对称加密和非对称加密。
    • 处理明文的方式:分组密码每次处理输入一组元素、输出一组元素。流密码连续的处理输入元素,每次输出一个元素。

    攻击密码系统的目标是得到密钥而不仅仅得到单个密文对应的明文,通常有两个方法:

    1. 密码分析学:依赖算法性质,明密文对,企图利用算法特征推导出特定明文或密钥。
    2. 穷举攻击:对一条密文尝试无数密钥直到最可读的明文。

    密码攻击的几种类型:唯密文攻击(难度较大,若是密钥空间非常大,这种方法不切实际);已知明文攻击(知道某些 明文对应某些密文);选择明文攻击(攻击者自选的信息,得到密钥加密,即可以选择明文加密,例子:差分密码分析);选择密文分析;选择文本攻击。

    一般来说,加密算法最起码要守的住已知明文攻击。

    代替技术有:caesar密码(就是凯撒密码啦,简单移位),单表代替密码(利用原信息的排列组合置换,但是由于它带有原始字母使用频率的统计学特征,较容易被攻破),Playfair密码(多字母代替密码,他的密文任然完好保留了明文语言大部分特性,所以相对容易攻破),Hill密码(多表代替,易被已知明文攻击破解),多表替代加密,一次一密(密钥只对一个消息进行加解密,之后丢弃不用),置换技术(例子:栅栏技术),转轮机,隐写术等等。

    传统的分组密码结构分为流密码和分组密码。笔者认为他们的不同就是加密位数的不同吧,流密码每次加密数据流的一位或者一个字节,分组加密一般将明文分块,每块64位或者128位,二者使用相同密钥流加解密。

    Shannon引进了混淆和扩散两个术语来刻画任何密码系统的两个基本构件,他关注于如何挫败基于统计方法的已知明文攻击。在Shannon所指的强理想密码中,密文所有的统计特征都是独立于所用密钥的。每一个分组密码利用密钥实现从明文分组到密文分组的变换。扩散的方式是尽可能的使用明文和密文间的统计关系变得更加复杂,以减少推导出密钥的可能。混淆则是尽可能使密文和加密密钥间的统计关系能复杂,以阻止攻击者发现密钥。

    大多数的对称加密算法都是基于Feistel分组密码结构的,Feistel建议使用乘积密码的概念来逼近理想分组密码,即依次使用两个或两个以上基本密码(交替的使用代替和置换),所得的结果密码强度大于所有单个密码强度(1+1>2)

    Feistel密码结构:将明文分成多组,进行n轮的加密,n轮之后,多组“明文”组成密文。解密则是反方向n轮解密。其中n轮的密钥为k1,k2,……,kn,n一般为2的指数次方。

    Feistel结构的具体实现以来一下参数特征:

    • 分组长度:越长越安全,安全性的增加来源自更好的扩散性。但是会降低加解密速度。
    • 密钥长度:越长越安全,安全性的增加来源更好的抵抗穷举攻击和具有更好的混淆性。但是会降低加解密速度。
    • 迭代轮数:n轮,轮数越多,密码分析就越困难。
    • 子密钥产生算法:子密钥产生越困难,密码分析越困难。
    • 轮函数F:轮函数越复杂,抗攻击能力越强。

    数据加密标准DES在2001年AES提出前,一直被NIST采纳为FIPS PUB46,它采用64位分组长度和56位密钥长度。其结构与Feistel相同,不在写啦。

    雪崩效应:明文或密文的某一位发生变化导致密文多位发生变化,这是一个很好的性质。

    计时攻击利用加密或解密算法对于不同的输入所花的时间有着细微的差别从而或者汉明权重(二进制串中1的位数)。

  • 相关阅读:
    NSInvocation的基本使用
    OC和JS代码的互调
    HTTPS的基本使用
    数据安全
    AFN框架
    部分文件的MIMEType
    linux中文件颜色,蓝色,白色等各自代表的含义
    CentOS下mysql常用命令
    mysql 完整备份和恢复
    mysqldump 导出提示Couldn't execute SELECT COLUMN_NAME...
  • 原文地址:https://www.cnblogs.com/0211ji/p/16028412.html
Copyright © 2020-2023  润新知