对称密钥/非对称密钥/key/cipher
symmetric cipher对称密钥:使用相同的密钥进行加密和解密,速度很快
Asymmetric Cipher:非对称密钥:使用公钥加密,私钥解密,速度很慢
key和cipher的区别:可以把cipher看成一台机器,它需要插入一个key才可以工作,可以从一端A插入明文,另一端B输出密文,或者从B插入密文,从A输出明文。
实际上cipher是一个数学函数,key就是自变量,密文是因变量。
数据的完整性
M上传了一个文件及文件的digest,别人下载后可以计算文件生成的digest进行比较看是否被修改。ok了吗?非也,S可能上传自己的文件及新的digest进行覆盖,或者遇到man-in-the-middle(中间人攻击)在M上传的时候就替换了。
1,这时,Message Authentication Code(信息验证码),MAC,是一个关联了特定key的消息摘要,只有用于相同key的人才可以从相同的数据里面生成相同的digest。
2,也可以使用非对称密钥,A用私钥把消息摘要加密,B用A的公钥把A的加密的消息摘要解密,然后再校验完整性。
加密的消息摘要叫签名(The encrypted message digest is called a signature)
认证:Authentication
确保和你打交道的人确实是他声称的那个人。
非对称密钥可以用来认证,像上面的2,描述那样。
非对称密钥在计算上是很昂贵的,通常用来认证会话的参与者,而整个会话的内容使用对称密钥进行加密。常见场景是:SSH/SSL。
证明(保证、证书)Certificate:信任链的建立
H有M和W的公钥,H信任M,M信任W,H不信任W,H与W之间建立信任链:
如果M知道W的公钥,她可以帮助H,证明:由某人发布的一个关于“谁谁谁的公钥是某某某”的声明,证明是被公钥签名的。M创建证书,把自己和W的信息以及W的公钥放到文件里面,用自己的私钥进行签名,然后H可以下载证书并用M的公钥验证签名,如果通过验证,H就信任W了,即信任他的公钥了。
证书链:
证书A可被证书B验证,证书B可以被C验证....称为证书链。
证书链不可能无限那么从哪里开始呢?证书链从一个 self-signed 即issuer and subject相同的证书开始,称为Certificate Authority(CA)
上例中,M充当了CA的角色。
R需要验证被J签名的证书,J提供R一个证书链:
第一个证书包含J的公钥,由F发行,第二个证书包含F的公钥,由M(CA)发行,
证书链的工作过程:
R首先用M的公钥验证F的证书,ok了再用F的公钥验证J的证书,如果ok就信任J的公钥了,从而可以相信J是他自己了。
凭什么要信任CA?
当你可以验证这个CA时,你可以信任它。如何验证?
方法1,计算CA证书的信息熵(fingerprint),然后联系CA的发布者,看看他们的digest是否一致;
方法2,CA发布者把CA的信息熵(fingerprint)广泛公布,如果你发现CA的digest和公布的一致就可信任。
很多CA都内嵌到了浏览器里面,那你怎么相信浏览器里面的CA没被攻击篡改呢?不知道,那就只有https下载了。
java 安全
JCA Java Cryptography Architecture,包名:java.security.*,javax.crypto.*
JCE extension for JCA :只在美国和加拿大发布的,javax.crypto.*
访问控制、安全策略、的一些类也在java.security.* 里面,与JCA并无直接联系。
随机数:
java安全领域很关键的一点是随机数。
java.util.Random默认使用系统时钟作为种子,只要知道种子,生成的数是可以预测的。 用来作为密钥生成不可以。
java.security.SecureRandom使用一个信息摘要(digest)作为种子,而且每次都会更新这个digest,所以很难预测,
如果应用程序有随机数来源(比如用户连续键盘输入时间间隔的低阶位是随机的,Keystroke Timing),可以通过setSeed()方法设置。
默认的SecurityRandom使用self-seed,即Thread-Timing,一个系统线程的“时机”原理是这样的:
假设有个线程快速把一个计数增加,而且他们提供一个方法获取计数,那么每次获取到的计数的奇偶性是随机的。
分享到:
相关推荐
infoteamAG_用于轨道交通领域的安全控制概念zip,infoteamAG_用于轨道交通领域的安全控制概念
毕业设计:python信息安全领域中语义搜索引擎的设计与实现(源码 + 数据库 + 说明文档) 二、开发环境和相关技术 7 2.1开发环境 7 2.2Python语言 7 2.3Python搜寻器框架 7 2.4MySQL数据库 7 2.5语义搜索的概念 8 三...
计算机网络安全技术 电子信息学院 网络安全概念全文共11页,当前为第1页。 网络安全定义 网络安全是指网络系统的硬件、软件和系统中的数据受到保护,不因偶然的或者恶意的攻击而遭到破坏、更改、泄露,系统连续可靠...
从广义来说,凡是涉及网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论...
领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中。大部分关于此主题的著作和文章都以Eric Evans的书《领域驱动设计》为基础,主要从概念和设计的角度探讨领域建模和设计情况。这些著作讨论实体...
目前,数据库系统安 全与网络安全、操作系统安全及协议安全一起构成了信息系统安全的四个最主要的研究 领域。 数据库系统,一般可以理解为两部分:一部分是数据库,按一定的方式存取数据库 ;另一部分是数据库管理...
该项目是一个专注于信息安全领域中语义搜索引擎的设计,使用Python语言进行开发。 1. **系统设计**:项目旨在创建一个能够理解和处理自然语言查询的搜索引擎,特别关注于信息安全领域的内容检索和数据保护。 2. **...
人工智能安全的概念、分类及研究现状综述(一).pdf
能源领域网络安全框架实施指南(英文版)zip,美国国家标准与技术研究院(NIST)于2014年2月发布了自愿性的《能源领域网络安全框架实施指南》旨在提供一份通用语言版本文件,供各机构评估和管理网络安全风险。...
CSA云安全指南V4.0中文版 这个领域包括了 4 部分: • 定义云计算 • 云逻辑模型 • 云概念、架构和参考模型 • 云安全性和合规管理范围、职责和模型
这份文档是一份关于网络安全领域的综合性指南,其作用在于为读者提供全面而深入的网络安全知识。文档涵盖了从基础概念到高级技术的多个方面,包括网络协议的安全性、应用层安全、操作系统与网络设备安全等多个关键...
深入介绍了Java安全领域的关键知识点,包括加密和解密、安全认证和授权、安全通信和防护以及安全漏洞扫描。通过详细解析和说明,读者将获得全面的Java安全知识,了解加密算法、认证协议、防护机制和漏洞扫描工具的...
总的来 说,就是要在整个项目中,有一种总体把 握的能力,不能只关注自己熟悉的某一领 域,而对其他领域毫不关心,甚至不理解, 这样写不出一份好的安全方案。 因为写出来的方案,就是要针对用户所遇 到的问题,运用...
首先分别构建以煤矿领域的主题词表和文本集为数据源的形式背景,并通过并叠置运算得到异构资源的形式背景,然后利用概念格构造工具将形式背景转换为概念格,最后从概念格中抽取概念、属性和实例组织成煤矿事故本体。...
有监督学习在安全领域的应用 强化学习受到众多关注 强化学习的概念 DQN:强化学习+深度学习 强化学习落地的关键要素 强化学习的应用:恶意软件自动化免杀 强化学习的应用:自动化测试WAF 强化学习的应用:自动化测试...
《操作系统概念》第7版是一本标准的计算机操作系统教材,该书介绍了操作系统的基本概念、原理和实践,涵盖进程管理、内存管理、文件系统、安全性等方面。该书的内容系统全面,从操作系统结构、进程管理、CPU调度、...
课程任务:通过对本课程的学习,使学生能够对物联网信息安全的内涵、知识领域 和知识单元进行了科学合理的安排,目标是提升对物联网信息安全的"认知"和"实践"能 力。 二、课程教学的基本要求 1.知识目标 学习扎实...
掌握这些基本技能后,你可以开始学习一些更具体的网络安全领域,例如:入侵测试、渗透测试、漏洞评估和防御、网络安全监控等等。学习这些领域将有助于你更全面地了解网络安全并掌握实践技能。 最后,不要忘记继续...
《网络安全开发宝典进阶版》是一本专注于网络安全开发的资源,它提供了深入的理论知识和实践经验...通过学习《网络安全开发宝典进阶版》,开发人员可以提升自己在网络安全领域的专业能力,更好地保护应用系统的安全性。