网络安全——技术与实践(第3版)课后题答案

第二章:计算机网络基础

1.主机的IPv4的地址长度为32位,主机的MAC地址长度为48位。
2.端口号的长度是16位。
4.路由器至少拥有2个IP地址。
5.TCP是有连接的,提供可靠传输的协议。

第六章:消息认证和杂凑函数

1.可以用来产生认证符的函数类型可分为3类,分别为消息加密(采用整个消息的密文作为认证符),消息认证码(定长的值,是消息和密钥的公开函数),杂凑函数(将任意长的消息映射为定长的杂凑值的公开函数,以该杂凑值作为认证符)。

2.消息加密本身提供了一种认证手段。应用于消息加密的两种体制分别是对称密码公钥密码

3.消息认证码又称MAC,也是一种认证技术,它利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。

4.杂凑函数的性质:无碰撞性,不可抵赖性,密码学中应用广泛,安全性。

6.迭代杂凑函数的构造方法:Rabin法,密码分组链接(CBC)法,密码反馈(CFB)法,组合明/密文链接法,修正Daveis-Meyer法。

思考题:

1.什么是消息认证码?他与消息杂凑值的主要区别是什么?
消息认证码是一种认证技术,利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。
主要区别:消息认证码需要密钥。

3.消息认证码的基本用途
消息认证。

杂凑函数的基本用途:数字签名,校验,伪随机数生成,密文存储口令。

第七章:数字签名

1.类似手写签名,数字签名也满足:不能伪造不可否认不可抵赖第三方可以确认收发双方之间的消息传送

2.按照明,密文的对应关系划分,每种又可分为两个子类:一类是确定性数字签名,其明文与密文一一对应,对特定消息的签名是不变的。另一类是随机化或概率式数字签名,它对同一消息的签名是随机变化的,一个明文可能有多个合法的数字签名。

3.RSA签名体制的安全性依赖于n=p1p2分解的困难性

4.ELGammal签名体制的安全性依赖于求离散对数问题的困难性

5.不可否认签名的本质是无签名者合作的条件下不可能验证签名,从而可以防止复制或散步他所签文件的可能性。

6.群签名是面向群体密码学的一个课题,目标是对签名者实现无条件的匿名保护,且又能防止签名者的抵赖。特点:只有群中成员能代表群体签名;接收到签名的人可以用公钥验证群签名,但不可能知道由群体中哪个成员所签;发生争议时,由群体中的成员或可信赖机构识别群签名的签名者。

7.SM2是国家密码管理局于2010年颁布的基于椭圆曲线的密码算法,具体包括两个算法1个协议:签名算法密钥交换算法加密算法

第八章:密码协议

1.计算机网络中使用的好的通信协议,不仅应该具有有效性,公平性和完整性,而且应该具有足够高的安全性。 通常把具有安全性功能的协议称为安全协议,安全协议的设计必须采用密码技术,也称作密码协议。

2.为有效地防止中间人攻击,在密钥交换协议中应采用数字签名技术。

3.密钥建立协议主要分为采用单钥体制的密钥交换协议采用双钥体制的密钥交换协议

4.Diffie-Hellman算法的安全性是基于在有限域上计算离散对数的难度,可以用作密钥交换。

5.密钥认证分为隐式密钥认证密钥确证显式密钥认证三种。

6.认证包含消息认证数据源认证实体认证,用于防止欺骗,伪装等攻击。

7.认证的密钥建立协议有大嘴青蛙协议Yahalom协议等。

8.密码攻击的目标有协议中采用的密码算法算法和协议中采用的密码技术协议本身

9.对协议进行攻击的典型方法有已知明文攻击选择密文攻击预言者会话攻击并行会话攻击

10.对密码协议的安全性进行分析的方法有攻击检验方法形式语言逻辑分析法

思考题

1(2,3,4).什么是协议?协议具有哪些特点?协议有几种类型?
协议指两个或两个以上的参与者为完成某项特定的任务而采取的一系列步骤。
特点:1.协议自始至终是有序的过程,每一步骤必须依次执行。在前一步没有执行完成之前,后面的步骤不可能执行。2.协议至少需要两个参与者。一个人可以通过执行一系列的步骤来完成某项任务,但并不构成协议。3.通过执行协议必须能够完成某项任务。即使某些东西看似是协议,但没有完成任何任务,也不能称为协议,只不过是浪费时间的空操作。
简言之,协议具有:有序,至少两个参与者,能够完成某项任务 这三个特点。
协议分为仲裁协议(存在仲裁者:公正第三方),裁决协议(存在裁决人:解决纠纷),自动执行协议(最好的协议,保证公平性)

5.一个好的协议应该具备哪些特点?
协议涉及的每一方必须事先知道此协议以及要执行的所有步骤;协议涉及的每一方必须统一遵守协议;协议必须是非模糊的,每一步都明确定义;协议必须是完整的,对每一种可能发生的情况都要做出反应;每一步操作要么是由一方或多方进行计算,要么是在各方之间进行消息传递,二者必居其一。

6.按照密码协议的功能来分类,密码协议可以被分成哪几类?
(1)密钥建立协议:通信双方建立共享秘密。
(2)认证协议:一个实体向与其通信的另一个实体提供其身份的可信性。
(3)认证的密钥建立协议:与另一身份已被或可被证实的实体之间建立共享秘密。

7.什么是中间人攻击?中间人攻击能够成功实施的真正原因是什么?
中间人攻击:当A和B会话时,C可以冒充A,当B和A会话时,C可以冒充A。
原因:Alice和Bob没有办法来验证他们正在与另一方会话。

8.Diffie-Hellman算法能否用来对消息进行加密和解密?为什么?
DH算法是第一个双钥算法,可以用作密钥交换,但不能用它对消息进行加密或解密,且不能抵抗中间人攻击(不包含实体认证)。

9.掺杂是对付字典攻击的有效方法,它能否抗击对单一口令的预定攻击,为什么?
掺杂仅能抗击对口令文件的一般字典攻击,而不能抗击对单一口令的预定攻击。它可以保护人们在多台计算机上使用同一口令(通过不同的掺杂值),但不能使选择的坏口令变得更安全。

10.在密码协议中,一次性随机数(Nonce)和时戳(Timestamp)的作用是什么?
每个nonce只能供一个用户使用一次,这样就可以防止攻击者使用重放攻击。
Timestamp是根据当前时间生成的一个字符串,与nonce放在一起,可以表示在某个时间点生成的随机数。这样就算生成的随机数相同,但因为它们生成的时间点不一样,所以也算有效的随机数。

11.对密码协议进行安全性分析有哪几种方法?
(1)攻击检验方法:采用现有的有效的协议攻击方法对协议进行攻击,检验其是否具有抵御这些攻击的能力。
(2)形式语言逻辑分析法:采用能够分析知识和信任的逻辑,对协议进行安全西研究。(使用最广泛,BAN逻辑)

第十二章:防火墙技术

1.防火墙应位于公司网络与外部网络之间

2.应用网关的安全性超过包过滤防火墙。

3.防火墙可以分为静态包过滤,动态包过滤,电路级网关,应用层网关,状态检查包过滤,切换代理,空气隙

4.静态包过滤防火墙工作于OSI模型的网络层上,它对数据包的某些特定域进行检查,这些特定域包括数据源地址,目的地址,应用或协议,源端口号,目的端口号

5.动态包过滤防火墙工作于OSI模型的网络层和传输层(先进)上,它对数据包的某些特定域进行检查,这些特定域包括数据源地址,目的地址,应用或协议,源端口号,目的端口号

6.电路级网关工作于OSI模型的会话层上,是包过滤防火墙的一种扩展,除了进行基本的包过滤检查之外,还要对连接建立过程中的握手信息及序列号合法性的验证。

7.应用级网关工作于OSI模型的应用层上,它可以对整个数据包进行检查,因此其安全性最高。

为什么防火墙要具有NAT功能?
亚洲国家的IP地址资源相对匮乏;可以隐藏内部网络的拓扑结构,在某种程度上提升了网络的安全性。

  • 13
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《数据结构——用C语言描述(第3)》课后答案的描述使用C语言来实现各种数据结构和算法。以下是对几个常见数据结构的描述和相关代码示例。 1. 数组(Array):数组是一种线性数据结构,用于存储相同类型的元素。C语言中使用数组可以快速访问和修改元素。示例代码如下: ```c #include <stdio.h> int main() { int arr[5] = {1, 2, 3, 4, 5}; for(int i = 0; i < 5; i++) { printf("%d ", arr[i]); } return 0; } ``` 2. 链表(Linked List):链表是一种动态数据结构,通过节点之间的指针链接来存储数据。C语言中可以使用结构体和指针来实现链表。示例代码如下: ```c #include <stdio.h> #include <stdlib.h> struct Node { int data; struct Node* next; }; void printList(struct Node* head) { struct Node* current = head; while(current != NULL) { printf("%d ", current->data); current = current->next; } } int main() { struct Node* head = NULL; struct Node* second = NULL; struct Node* third = NULL; head = (struct Node*) malloc(sizeof(struct Node)); second = (struct Node*) malloc(sizeof(struct Node)); third = (struct Node*) malloc(sizeof(struct Node)); head->data = 1; head->next = second; second->data = 2; second->next = third; third->data = 3; third->next = NULL; printList(head); return 0; } ``` 3. 栈(Stack):栈是一种后进先出(LIFO)的数据结构,在C语言中可以使用数组来实现。示例代码如下: ```c #include <stdio.h> #define MAX_SIZE 100 int stack[MAX_SIZE]; int top = -1; void push(int item) { if(top == MAX_SIZE - 1) { printf("Stack Overflow\n"); } else { stack[++top] = item; } } int pop() { if(top == -1) { printf("Stack Underflow\n"); return -1; } else { return stack[top--]; } } void printStack() { for(int i = top; i >= 0; i--) { printf("%d ", stack[i]); } } int main() { push(1); push(2); push(3); printf("Popped element: %d\n", pop()); printStack(); return 0; } ``` 这些示例代码展示了如何使用C语言描述《数据结构——用C语言描述(第3)》中介绍的数据结构。读者可以根据书中提供的习进行编程练习,进一步巩固数据结构和算法的相关知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值