分布式系统开发实战:安全性的基本概念

简介: 计算机系统中的安全性与可靠性密切相关。非正式地说,一个可靠的计算机系统是一个我们可以有理由信任其所提供的服务的系统。可靠性包括可用性、可信赖性、安全性和可维护性。但是,如果我们要信任一个计算机系统,还应该考虑机密性和完整性。考虑计算机系统中安全的另一种角度是我们试图保护该系统所提供的服务和数据不受到安全威胁,安全威胁包括以下4种。

网络异常,图片无法展示
|

安全性包含以下基本概念。

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(const char *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;
else if(*str>='a' && *str<='z')
*ret_str = 'a' + (*str - 'a' + offset) % 26;
else
*ret_str = *str;
}
*ret_str = '\0';
return (char *) start;
}
int main(void)
{
printf("%s\n","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
printf("%s\n",caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ",3));
return 0;
}
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。
相关文章
|
1月前
|
存储 关系型数据库 MySQL
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
106 0
|
2月前
|
消息中间件 RocketMQ 微服务
RocketMQ 分布式事务消息实战指南
RocketMQ 分布式事务消息实战指南
280 1
|
2月前
|
Java 数据库连接 API
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
61 0
|
开发框架 Java 数据库连接
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)(下)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
41 0
|
数据库 微服务
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)(上)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
41 0
|
6天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
7天前
|
存储 Linux 开发工具
Git 分布式版本控制系统基本概念和操作命令
Git 分布式版本控制系统基本概念和操作命令
23 0
|
1月前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
37 1
|
存储 传感器 数据管理
【软件设计师备考 专题 】面向对象数据库和分布式对象:理解新的数据管理概念
【软件设计师备考 专题 】面向对象数据库和分布式对象:理解新的数据管理概念
54 0
|
2月前
|
存储 分布式计算 负载均衡
浅谈分布式共识算法概念与演进
浅谈分布式共识算法概念与演进
43 0