分布式系统开发实战:安全性的基本概念
安全性包含以下基本概念。
19.1.1 安全威胁、策略和机制
计算机系统中的安全性与可靠性密切相关。非正式地说,一个可靠的计算机系统是一个我们可以有理由信任其所提供的服务的系统。可靠性包括可用性、可信赖性、安全性和可维护性。但是,如果我们要信任一个计算机系统,还应该考虑机密性和完整性。考虑计算机系统中安全的另一种角度是我们试图保护该系统所提供的服务和数据不受到安全威胁,安全威胁包括以下4种。
·窃听:指一个未经授权的用户获得了对一项服务或数据的访问权限。窃听的一个典型事例是两人之间的通信被其他人偷听。窃听还发生在非法复制数据时。
·中断:指服务或数据变得难以获得、不能使用、被破坏等情况。从这个意义上说,服务拒绝攻击是一种安全威胁,它归为中断类,一些人正是通过它恶意地试图使其他人不能访问服务。中断的一个实例是文件被损坏或丢失时所出现的情况。
·修改:包括对数据未经授权的改变或篡改一项服务以使其不再遵循其原始规范。修改的实例包括窃听后改变传输的数据、篡改数据库条目以及改变一个程序使其秘密记录其用户的活动。
·伪造:指产生通常不存在的附加数据或活动的情况。例如,一个入侵者可能尝试向密码文件或数据库中添加数据,同样,有时可能通过重放先前发送过的消息来侵入一个系统。
仅仅声明系统应该能够保护其自身免受任何可能的安全威胁并不是实际建立一个安全系统的方式。首先需要的是安全需求的一个描述,也就是一个策略。安全策略准确地描述了系统中的实体能够采取的行为以及禁止采取的行动。实体包括用户、服务、数据、机器等。制订了安全策略之后,就可能集中考虑安全机制,策略通过该机制来实施。重要的机制如下。
·加密。
·身份验证。
·授权。
·审计。
加密是计算机的基础。加密将数据转换为一些攻击者不能理解的形式。身份验证用于检验用户、客户、服务器等所声明的身份。对一个客户进行身份验证之后,有必要检查是否授予客户执行该请求操作的权限。审计工具用于追踪各个客户的访问内容以及访问方式。
19.1.2 密码与数字签名
加密包括使用密钥对数据进行编码,从而使偷听者无法方便地阅读这些数据。经过加密的数据称为密文,原始的数据称为明文。从密文到明文的转换过程称为解密。
恺撒密码又叫循环移位密码,它的加密方法就是将明文中的每个字母用字母表中该字母后的第R个字母来替换,从而达到加密的目的。它的加密过程可以表示为下面的函数。
E(m)=(m+k)mod n (1)
其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。例如,对于明文字母H,其在字母表中的位置数为8,则按照式(1)计算出来的密文为L,计算过程如下。
E(8)=(8+4)mod 26=12 (2)
上面例子中,每个字母用其后面的第3个字母代替。
下面是一个C实现的恺撒密码程序。
#include<stdio.h>#include<stdlib.h>#include<string.h>char *caesar(constchar *str,int offset){
char *start,*ret_str;
start = ret_str = (char *) malloc(strlen(str) + 1);
for(;*str!='\0';str++,ret_str++)
{
if(*str>='A' && *str<='Z')
*ret_str = 'A' + (*str - 'A' + offset) % 26;
elseif(*str>='a' && *str<='z')
*ret_str = 'a' + (*str - 'a' + offset) % 26;
else
*ret_str = *str;
}
*ret_str = '\0';
return (char *) start;
}
intmain(void){
printf("%s\n","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
printf("%s\n",caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ",3));
return0;
}
资源获取:
大家 点赞、收藏、关注、评论啦 、 查看分布式系统开发实战:安全性的基本概念相关推荐
- 分布式系统开发实战:分布式存储,分布式存储常用技术
分布式存储 互联网每天产生数以亿计的数据,这些数据如何能够被正确地存储.解析.利用,是摆在每个数据公司面前的挑战.传统的关系型数据库,对于处理大规模的数据显得力不从心,由此以NoSQL为代表的分布式存 ...
- 分布式系统开发实战:分布式计算,分布式计算常用技术
分布式计算 分布式计算就是将一个大的计算任务分解成多个小任务,然后分配给多台计算机分别计算,再上传运算结果后统一合并得出数据结论.本章详细介绍分布式计算. 分布式计算概述 在过去的20年里,互联网产生 ...
- 基于实战开发垂直搜索引擎_基于DDD的微服务设计和开发实战
作者:欧创新.邓頔.文艺 你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务 ...
- ddd 访问权限_基于DDD的微服务设计和开发实战
作者:欧创新.邓頔.文艺 你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务 ...
- 微服务架构开发实战:如何实现微服务的自动扩展?
微服务架构开发实战:如何实现微服务的自动扩展? 程序员高级码农II 2020-09-25 07:25:00 如何实现微服务的自动扩展 前面讲了一些关于自动扩展的理论知识,但如何实现自动扩展,并不是三言 ...
- python接口自动化测试书籍_蜗牛出版之《接口自动化测试开发实战教程》书籍详解!...
各位老铁,大家好~ 上周,我们通过一篇分享,给大家详细介绍了蜗牛创想的出版业务. 还不了解的小伙伴请戳:除了培训和研发,我们还有一项90%的人都未曾关注到的业务! 本周开始,我们将对已经出版的< ...
- java web开发实战经典 源码_李兴华 java_web开发实战经典 源码 完整版收集共享
李兴华 java_web开发实战经典 源码 完整版收集共享 01f8a7 在 2018-11-07 20:41:33 上传 10.92 MB 第1章 JAVA WEB开发简介 1.1.WEB发 ...
- ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用
<ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用>是一本旨在引领我们进入全栈开发世界的综合指南.通过结合强大的ChatGPT技术和全栈开发的实践,我们将 ...
- 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)
[书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 }:YKf: ...
最新文章
- NBJL 2020论文导读14:How Much Position Information Do Convolutional Neural Networks Encode ?
- Open source robotics toolkits: use virtual arenas to test your robotics algorithms
- 处理JAX-RS中的自定义异常类型
- CentOS6.5安装配置
- python历史以及基础知识
- oracle 052 题库更新,OCP题库升级,新版052考试题及答案整理-18
- pytorch 入门学习反向传播-4
- Exploit Kit攻击工具包流量锐减96%!这段时间究竟发生了什么?
- 深度学习2.0-21.Keras高层API-compilefitEvaluatePredict
- Python中的几个重要函数
- docker常用到的一些命令
- 电子档案管理系统java,电子政务档案管理系统 [Java/JSP] struts+hibernate+spring-DZZW - CodeBus...
- 单个产品出库扣减库存
- 图像处理算法工程师面试题
- Spring Boot中mybatis:Field peopleInfoMapper in ‘**’that could not be found.
- 学校计算机及设备维护维修管理制度,《计算机设备维护维修管理制度.doc
- C++设计模式——享元模式(高屋建瓴)
- python同心圆怎么运行_怎么用python画同心圆
- python读取手机文件_python 读取 网络 文件
- iOS开发之第三方分享微信分享、朋友圈分享,史上最新最全第三方分享微信方式实现、朋友圈方式实现
热门文章
- Mindjet MindManager 2019使用教程:
- 《Effective STL》中文版 读书笔记
- LiveData Coroutine Builder的5个诡计
- 2023超简单解决“请在微信客户端打开链接”
- cct考试模拟试题c语言,cct考试复习资料.doc
- 磁盘体系结构和磁盘阵列技术(RAIDLVM)及分区实践
- 小米wifi认证取消html查看器,小米路由器设置了隐藏wifi如何取消?
- 如何构建有效的绩效管理(终)
- @media 屏幕适配常用尺寸
- 【分班】S型分班 python