Assignments

Mar 30nd, 2020

2020-3-密码技术应用

1.1 网络安全基本概念

阅读RFC4949, 理解网络安全基本概念。

Page 69 Common Criteria for Information Technology Security: (Not of Internet origin) A standard for evaluating information technology (IT) products and systems. It states requirements for security functions and for assurance measures. [CCIB] (See: CLEF, EAL, packages, protection profile, security target, TOE. Compare: CMM.) Tutorial: Canada, France, Germany, the Netherlands, the United Kingdom, and the United States (NIST and NSA) began developing this standard in 1993, based on the European ITSEC, the Canadian Trusted Computer Product Evaluation Criteria (CTCPEC), and the U.S. "Federal Criteria for Information Technology Security" and its precursor, the TCSEC. Work was done in cooperation with ISO/IEC Joint Technical Committee 1 (Information Technology), Subcommittee 27 (Security Techniques), Working Group 3 (Security Criteria). Version 2.0 of the Criteria has been issued as ISO’s International Standard 15408. The U.S. Government intends this standard to supersede both the TCSEC and FIPS PUB 140. (See: NIAP.) The standard addresses data confidentiality, data integrity, and availability and may apply to other aspects of security. It focuses on threats to information arising from human activities, malicious or otherwise, but may apply to non-human threats. It applies to security measures implemented in hardware, firmware, or software. It does not apply to: (a) administrative security not related directly to technical security (b) technical physical aspects of security such as electromagnetic emanation control (c) evaluation methodology or administrative and legal framework under which the criteria may be applied (d) procedures for use of evaluation results (e) assessment of inherent qualities of cryptographic algorithms. Part 1, Introduction and General Model, defines general concepts and principles of IT security evaluation; presents a general model of evaluation; and defines constructs for expressing IT security objectives, for selecting and defining IT security requirements, and for writing high-level specifications for products and systems. Part 2, Security Functional Requirements, contains a catalog of well-defined and well-understood functional requirement statements that are intended to be used as a standard way of expressing the security requirements for IT products and systems. Part 3, Security Assurance Requirements, contains a catalog of assurance components for use as a standard way of expressing such requirements for IT products and systems, and defines evaluation criteria for protection profiles and security targets.

在RFC4949手册中的第69页对 信息技术安全通用标准 有一个推荐的但是并非来自于互联网的定义,其中强调了三点: 1. data confidentiality: 机密性 机密性是指保证信息不能被非授权访问,即使非授权用户得到信息也无法知晓信息内容,因而不能使用,包括:

  • 数据机密性

  • 隐私性

    1. data integrity: 完整性

      完整性是指维护信息的一致性,即信息在生成、传输、存储和使用过程中不应发生人为或非人为的非授权篡改,包括:

  • 数据完整性

  • 系统完整性

    1. availability: 可用性

      可用性是指保障信息资源随时可提供服务的能力特性,即授权用户根据需要可以随时访问所需信息

1.2 加密算法基本要素

加密算法的两个基本要素是什么?

加密规则和密钥

1.3 异或加密是否安全

问题:某人用自己的密钥加密一个随机比特串(与密钥长度相同),采用异或运算,并通过通道发送结果。接收方得到密文后,和自己手里的密钥进行异或运算,并发回。如果某人接收到的这个是原始比特串,则证实两人拥有同一密钥。这种方法没有在信道上传递过密钥,是否能保证密钥的安全?这个方案是否有缺陷?

不安全,这种不安全是由异或自身的性质决定的:

异或表

0

1

0

0

1

1

1

0

异或的规则:相同为0不同为1,所以当传输时,不妨设传输过程为A传输给B,A手中的密钥为KeyA,B手中的密钥为KeyB,A采用的随机比特串为Random,则传输过程为:

A 发送 KeyA xor Random 给 B B 发送 KeyB xor (KeyA xor Random) 给 A

若传输的信道被监听,第三方截获了两次传输的信息,则当A和B的密钥相同时,设监听者C获得了B发回的随机比特串,将此随机比特串与A发送给B的信息进行异或,则可以得到AB的密钥: (KeyA xor Random) xor (KeyB xor (KeyA xor Random)) = KeyA = KeyB 所以这个方案是不安全的。

1.4 攻击密码通用方法

攻击密码的两个通用方法是什么?

  1. 密码分析攻击(Cryptanalytic Attacks):利用算法特征推导出特定的明文或使用的密钥

    • 依赖于算法性质

    • 明文一般特征

    • 明文-密文对样本

  2. 暴力攻击(BruteForce Attack):

    • 蛮力攻击,穷举攻击

    • 对一条密文尝试所有可能的密钥,直到获得明文

    • 平均至少要尝试所有可能密钥的一半

1.5 分组密码 vs 流密码

分组密码和流密码的区别是什么?

  • 序列密码(stream cipher)也叫流密码,是对单个明文位(Bit-by-bit)变换的操作

    • 例: RC4

  • 分组密码(block cipher)是对一个大的明文块(Block-by-block)进行固定变换的操作

    • 典型分组大小:64位或128位

    • 使用最广泛的对称加密算法

    • 例: DES, AES

2020-4-公钥体制

2.1 什么是数字信封

什么是数字信封技术?

数字信封是指发送方使用接收方的公钥加密对称密钥后所得的数据,其目的是用来确保对称密钥传输的安全性。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥

数字信封技术需要发送方先拥有接收方的公钥才能实现,具体的步骤为: 1. 发送方使用对称密钥对明文进行加密,生成密文信息 2. 发送方使用接收方的公钥对对称密钥进行加密,生产数字信封 3. 发送方将密文信息和数字信封一并发送给接收方 4. 接收方使用自己的私钥对数字信封进行解密获得对称密钥 5. 接收方使用对称密钥将密文信息解密得到初始明文

数字信封的优点:结合了对称加密和公钥加密的技术,解决了对称密钥的发布的安全性问题和公钥加密明文速度慢的问题,提高了安全性和可扩展性和效率。 数字信封的缺点:无法保证信息来源是真实的发送方。如果攻击者拦截了发送方发送的信息,并且事先知道接收方公布的公钥,则攻击者可以自己用新的对称密钥代替发送方向接收方发送信息,由于接收方没有验证发送方的手段,所以接收方对获得的信息的来源并不知晓,可能会仍然以为是原本的发送方发送的信息,造成严重的损失。

数字信封所不能保证数据的完整性所以需要下面的数字签名技术。

2.2 数字签名作用

数字签名是否能提供数据完整性保护?能否提供抗抵赖(不可否认)性保护?请举例说明理由。

数字签名技术是发送方自己的私钥数字指纹进行加密后所得的数据,其中包括非对称密钥加密和数字签名两个过程,在可以给数据加密的同时,也可用于接收方验证发送方身份的合法性。采用数字签名时,接收方需要使用发送方的公钥才能解开数字签名得到数字指纹

数字指纹又称为信息摘要,是指发送方通过HASH算法对明文信息计算后得出的数据。采用数字指纹时,发送方会将本端对明文进行哈希运算后生成的数字指纹(还要经过数字签名),以及采用对端公钥对明文进行加密后生成的密文一起发送给接收方,接收方用同样的HASH算法对明文计算生成的数据指纹,与收到的数字指纹进行匹配,如果一致,便可确定明文信息没有被篡改。

数字签名技术需要发送方和接收方双方知晓对方的公钥和使用的HASH算法,具体步骤为: 1. 发送方使用接收方的公钥对明文进行加密,生成密文信息 2. 发送方使用HASH算法对明文进行计算,生成数字指纹 3. 发送方使用发送方的私钥对数字指纹进行加密,生成数字签名 4. 发送方将密文信息和数字签名一同发送给接收方 5. 接收方用接收方的私钥对密文信息进行解密得到初始的明文 6. 接收方使用发送方的公钥对数字签名进行解密得到发送方的数字指纹 7. 接收方使用相同的HASH算法对得到的明文进行计算得到数字指纹与上一步中的数字指纹进行比对,如果相同则说明信息确实是发送方发送的且没有经过篡改,则接收;如果不同则说明发送的信息经过篡改,则丢弃

数字签名可以提供数据的完整性保护,因为一旦数据在传输中间被攻击者拦截,由于攻击者自身没有发送方的私钥所以无法生成正确的数字签名,所以接收方可以根据发送的数字签名和计算的数字签名的不同而知道攻击者的存在。

能够提供抗抵赖(不可否认)性保护,因为接收方解密数字签名使用的是发送方的公钥,如果通过发送方的公钥解密可以得到一致的数字指纹则说明是由发送方的私钥生成然后发送的,发送方不可抵赖。

但是数字签名也仍然存在一个问题:如果攻击者知晓发送方的公钥,还拦截了接收方发送给发送方的公钥并且换成了自己的公钥,则可以伪造成接收方和发送方进行通讯,此时发送方不知道自己和攻击者进行通讯,接收者由于拿到的是利用攻击者的公钥加密的密文信息而无法读取发送者的明文信息。

这个时候就需要数字证书技术,通过证书办法机构(CA)签发的一个声明,证明证书主体(证书申请者拥有了证书后即成为证书主体)与证书中所包含的公钥的唯一对应关系。

2.3 公钥体制下秘密密钥分发

如何利用公钥体制进行秘密密钥的分发?

采用了非对称式加密的算法,每个人都拥有两个密钥,分别是: 1. 公共密钥:公开的,用于加密消息,验证签名 2. 私有密钥:秘密的,用于解密消息, 数字签名

两个密钥的性质:

  • 很难从公开密钥得到私有

  • 非对称:用户加密消息或验证签名的密钥无法解密消息或进行签名

在公钥体制下,发送方需要使用接收方的公钥对明文进行加密生成密文信息,接收方对密文使用接收方自己的私钥进行解密得到初始的明文信息,因为接收方自己的私钥是秘密的所以其他人无法从密文信息中得到原始的明文。

2.4 私有密钥 vs 秘密密钥

私有密钥和秘密密钥有什么区别?

私有密钥是和公共密钥相对的概念,是在公钥体制下一同产生的,一个私有密钥对应一个公共密钥,且二者是非对称的。私有密钥用于解密信息和数字签名。

秘密密钥又称会话密钥,是每次会话时产生的,会话的双方通过持有相同的秘密密钥对会话进行加密。

Reference

2020-5-1-消息认证技术

3.1 消息认证种类

列举消息认证的三种方法。

  1. 消息加密:即用整个消息的密文作为认证标识

  2. 消息认证码MAC:即采用一个公开函数,加上一个密钥产生一个固定长度的值作为认证标识

  3. 散列函数:即一个公开函数将任意长度的消息映射到一个固定长度的散列值,作为认证标识

3.2 消息认证的散列函数

消息认证的散列函数必须具有什么性质?

  1. 接受的输入数据没有长度限制:对输入任何长度的数据能够生成该输入消息固定长度的输出

  2. 快速性:已知m,计算hash(m)是容易的

  3. 单向性抗原象):已知哈希函数的输出,要求它的输入是困难的,即已知c=hash(m),求m是困难的

  4. 抗碰撞性:已知hash(m1)=c1,构造m2使hash(m2)=c1是困难的

  5. 雪崩性:c=hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一个比特,都将对c产生明显影响。

3.3 消息认证作用

消息认证是否能提供数据完整性保护?能否提供抗抵赖(不可否认)性保护?请举例说明理由。

消息认证可以保证数据的完整性,前提是攻击者不知道通信双方共享的秘密密钥,一旦数据被攻击者更改,接收方采用共享的秘密密钥无法生成相同的消息验证码或者相同的消息摘要,则将被攻击者替换的消息进行丢弃。

消息认证可以提供抗抵赖(不可否认)性保护,这里默认的前提是除了通信的双方没有第三者知道共享的秘密密钥,如果消息能经过秘密密钥生成相同的消息认证码或者相同的信息摘要则说明是由另一方发出的信息,不可抵赖。

2020-5-2-身份认证技术

4.1 双因素认证

什么是双因素认证?

双因素认证是需要至少两种认证要素组合才能发挥作用的身份认证系统,常见的认证要素有: 1. 知道什么 2. 拥有什么 3. 是谁(生物特征)

常见的双因素认证例子有: 1. ATM卡: 拥有卡片和知道PIN码 2. 信用卡:拥有卡片和签名(生物特征)

4.2 挑战-响应协议基本原理

挑战-响应协议的基本原理?

挑战-相应协议的基本步骤如下: 1. 挑战者需要向管理员申请 挑战值R ,并将挑战值结合自己知道的PIN码输入到自己拥有的口令生成器中 2. 口令生成器将 对称密钥K挑战值R 进行散列计算生成 响应值 response 3. 挑战者向管理员发送 响应值 h(k,R) 4. 管理员通过响应值进行验证决定是否给予权限

挑战-响应协议背后用到了双因素认证的基本原理,挑战者需要 同时 拥有 口令生成器,并且 知道 PIN码才能使得口令生成器生成正确的响应值,从而凭借该响应值在管理员处通过验证。

4.3 口令认证防止中间人攻击

口令认证中如何防止中间人攻击?

  1. 增加通讯双方的 先决知识

  2. 防止非授权访问口令文件

  3. 使用入侵检测技术进行攻击行为识别

  4. 对不安全口令的快速恢复

  5. 用户锁定机制:限制登录次数

  6. 禁止用户使用弱口令(常用口令)

  7. 加强口令保护策略,包括口令最小长度,字符集,禁止使用用户ID,更换口令时间等

  8. 在工作中处于非活动状态时自动注销

  9. 禁止对网络设备使用相似口令

4.4 口令加盐的安全性

操作系统中口令引入“salt”值为什么能提高口令的安全性?

  1. 攻击者难以发现一个用户是否在不同系统中使用了相同的口令

  2. 增加离线字典攻击的难度

    攻击者必须将其字典中的每个口令先添加salt值,再逐个计算每个用户的口令哈希值,例如,salt值长度为b 位,可能的口令数量就会增加2^b倍

4.5 身份认证的新技术

目前在身份认证中有哪些新技术?举例说明。

  1. 多因素认证技术采用多种认证机制相结合的方式来认证用户身份。为了增加安全性,互联网应用在用户口令的基础上再增加不同的认证方式来认证用户,例如,手机验证码、邮箱验证码、动态令牌等。

  2. 密码找回技术提供一种不依赖原有口令的密码重置方式。最常见的方式是安全挑战问题,让用户预先设置一些只有自己知道的问题和答案。例如,让用户预先设置亲属的名字、喜欢的电影等。当密码丢失时,用户通过正确地回答挑战问题可以重新设置密码。另一种常见方式是预先设置接收密码重置信息的其他通道,例如,让用户通过预先绑定的手机或邮箱接收验证码或超链接来重置密码。

  3. CAPTCHA技术是在网站上实现的区分人与计算机的验证码。CAPTCHA是图灵测试的自动化实现,其本质是设计一种人容易答对而计算机很难答对的问题。CAPTCHA技术能避免很多由计算机程序发起的攻击行为,有效防止用户身份认证被暴力破解。现在已经发展到了 reCAPTCHA 技术。

  4. 生物识别身份验证技术。比如用户的击键是一种行为特征识别技术。每个人都有独特的打字节奏,如果和密码等其他识别手段相结合,这种认证将非常难以伪造。所谓的击键动态技术仅需要软件即可实现,并不需要键盘以外的其他设备。

2020-6-密钥管理

5.1 Kerberos系统基本组成

Kerberos的系统的基本组成是什么?

Kerberos认证的三方: 1. 客户端 2. 服务端 3. KDC (Key Distribution Center)

Kerberos涉及的四方:

  • Client

    • 客户端(工作站)

  • Authentication Server(AS,认证服务器)

    • 在登录时认证用户

  • Ticket Granting Server(TGS,票据授予服务器)

    • 签发票据,认证身份证明

  • Application server

    • 提供特定服务的服务器,网络打印、文件共享和应用程序

5.2 CA的作用

CA的作用是什么?

认证机构(CA)是证书的签发机构,是PKI的核心,是PKI应用中权威的、可信任的、公正的第三方机构,其职责有:

  • 接受用户的请求

  • (由RA负责对用户的身份信息进行验证)

  • 用自己的私钥签发证书

  • 提供证书查询

  • 接受证书注销请求

  • 提供证书注销表

5.3 浏览器中的X.509证书

查看你的浏览器中使用的X.509证书,由哪些信息组成?并说明证书是如何签发的。

对于Base64加密导出的 .cer 类型文件,可以使用 OpenSSL 进行解码,在这里贴出参考链接:通过OpenSSL解码X509证书文件

证书的构成有: 1. 版本号 EXPLICIT Version DEFAULT v1 2. 序列号 CertificateSerialNumber 3. 签名 AlgorithmIdentifier 4. 颁发者 Issuer Name 5. 证书有效性 Validity (有效日期) 6. 主题 Subject Name 7. 主题公钥信息 SubjectPublicKeyInfo 8. 颁发者唯一身份信息 IMPLICIT UniqueIdentifier OPTIONAL 9. 主题唯一身份信息 IMPLICIT UniqueIdentifier OPTIONAL 10. 扩展信息 EXPLICIT Extensions OPTIONAL

CA 对用户签发证书:

  • 对某个用户公钥,使用 CA 的私钥对其进行签名。这样任何人都可以用 CA 的公钥对该证书进行合法性验证。

  • 验证成功则认可该证书中所提供的用户公钥内容,实现用户公钥的安全分发。

CA 签发证书的两种方式:

  • 由 CA 直接来生成证书(内含公钥)和对应的私钥发给用户

  • 由用户自己生成公钥和私钥,然后由 CA 来对公钥内容进行签名,用户必须保证私钥的安全性,其步骤为:

    1. 用户自行生成一个私钥和证书申请文件(Certificate Signing Request,即 csr 文件),该文件中包括了用户对应的公钥和一些基本信息,如通用名(common name,即 cn)、组织信息、地理位置等。

    2. CA 对证书请求文件进行签名,生成证书文件,颁发给用户。

2020-7-访问控制与授权

6.1 访问控制列表 vs 访问能力列表

访问控制列表和访问能力列表的区别是什么?

  • 访问控制列表Access Control Lists (ACLs)

    • 按列存储访问控制矩阵

    • 只要一个客体被访问,就引用相对应的访问控制矩阵的列,查询是否允许该访问操作

      • 保险数据的访问控制列表:(Bob,-), (Alice, rw), (Sam, rw), (记账程序,rw)

  • 访问能力列表 (C-Lists)

    • 按行存储访问控制矩阵

    • 只要一个主体需要执行某个操作,就会引用相对应的访问控制矩阵的行,查询是否允许该访问操作。

      • Alice的访问能力列表:(OS,rx), (记账程序, rx), (财务数据, r), (保险数据, rw), (工资数据, rw)

两种的特点对比:

  • 访问控制列表ACLs:

    • 管理自己的文件

    • 面向数据的保护

    • 容易改变一个特定资源的权限

  • 访问能力列表 Capabilities:

    • 容易实现授权机制

    • 容易增减用户

    • 更难以实现

    • 学术界的研究

6.2 RBAC基本模型

RBAC的基本模型是什么?

RBAC模型是基于角色的访问控制:

  • 基本概念

    • 用户(User):访问系统的个体,具有与之关联的用户ID

    • 角色(Role):组织内部进行命名的工作职能

    • 许可(Permission):访问权限,对特定访问模式的认可

    • 会话(Session):用户与其被分配的角色集合的激活子集的映射

  • 根据需要定义各种各样的角色,并设置合适的访问权限,而用户根据其责任和权利被指派为不同的角色,并由此取得该角色所对应的所有权限。

  • 这样整个访问控制过程就被分成了两部分,即访问权限与角色相关联,角色再与用户相关联,从而实现了用户与访问权限的逻辑分离。

RBAC具有三个安全原则:

  • 最小权限原则(即细粒度控制原则)

    • 分配给与某用户对应的角色的权限不超过该用户完成其任务的需要

  • 责任分离原则

    • 在完成敏感任务过程中分配在责任上互相约束的两个角色

  • 数据抽象原则

    • 通过权限的抽象来体现,如财务操作用借款、存款等抽象权限

6.3 混淆代理人攻击

举例说明混淆代理人攻击。

混淆代理人攻击是指攻击者对于没有操作权限的文件可以通过执行可以操作文件的其他程序对文件进行改动,发生的原因是因为访问能力列表中没有保证能力的逐级授权。

举例说明: 现有访问控制矩阵:

Compiler

BILL

Alice

x

--

Compiler

rx

rw

可以看出当前Alice对于编译器有执行的权限但是对于账单没有任何权限,编译器对于账单有读写的权限,所以Alice可以通过编译器对账单进行读写,实际上Alice通过混淆代理人攻击获得了账单的读写权限。

逐级授权则需要保证 编译器拥有的权限Alice拥有的权限子集

6.4 隐蔽信道攻击

举例说明隐蔽信道攻击。

隐蔽信道攻击是指由于某个资源对象被处于不同安全等级的多个主体所共享,导致该共享资源对象被赋予了不同等级之间的主体传输信息的能力。

再举一个例子: 两个不同等级的用户可以通过对双方都具有创建和删除能力的共享文件进行信息的传输,只要双方约定一个查看的间隔时间,在查看点扫描文件,若文件被创建则说明传输1,若文件被删除则说明传输0,以此传输整个加密信息。

Last updated