对称密钥/非对称密钥/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,一个系统线程的“时机”原理是这样的:
假设有个线程快速把一个计数增加,而且他们提供一个方法获取计数,那么每次获取到的计数的奇偶性是随机的。
分享到:
相关推荐
在自动化领域中,故障安全(Failsafe)和功能安全(Functional Safety)是两个非常关键的安全概念,尤其在像西门子这样的工业自动化解决方案提供商的系统设计和运行中,它们扮演着至关重要的角色。故障安全是确保在...
硬件安全概念 硬件安全是指保护硬件设备免受各种攻击和威胁的安全保护机制。硬件安全综述中,硬件层应该保证ROM安全、key/ID存储安全、硬件加解密模块安全、随机发生数安全、硬件虚拟化等。安全芯片应保证全生命...
信息安全的关键概念 保密性:确保信息仅被授权人员访问。 完整性:保证信息不被未经授权的修改。 可用性:确保信息在需要时可以被授权用户访问。 信息安全的主要领域 网络和互联网安全:保护网络基础设施免受攻击。 ...
网络安全是信息技术领域中的核心议题,尤其在网络日益普及的21世纪。网络安全的基本概念涉及保障网络系统及其数据的可用性、完整性和保密性。这包括了一系列的技术和管理措施,旨在防止未经授权的访问、修改或破坏...
6. **案例研究**:可能包含一些实际案例,展示所提出的控制概念如何在具体项目中实施,并取得良好的安全效果。 7. **未来趋势和技术**:探讨轨道交通安全控制领域的最新技术和未来发展趋势,如人工智能、物联网和...
最后,由于漏洞的发现和修补是信息安全领域的重要任务,因此持续关注安全漏洞动态、了解漏洞的分类和特点,对于加强信息系统的安全防护措施具有重要的指导意义。安全从业人员应密切关注安全漏洞的发展趋势,以便能够...
3. **术语和定义**:定义了网络安全领域中常见的专业术语,如“安全控制”、“风险评估”等,确保在讨论时有一致的理解基础。 4. **缩略语**:提供了用于简化文本的缩写词及其全称,方便读者快速理解。 5. **文档...
文件标题《探索大数据在通信网络安全领域的应用策略》以及描述指明了本文档的中心议题是探讨大数据技术在通信网络安全这个专业领域内的应用方法和策略。而文件中列出的标签包括“网络安全”、“网络技术”、“计算机...
功能安全概念的形成起源于上个世纪 70 年代到 80 年代,在世界范围内,尤其是石油化工领域中一些大型项目的生产过程中,多次发生爆炸事故或者严重的污染物泄漏事情。业内专家通过系列而系统的分析手段,明确了事故...
在分析《人工智能技术在安全领域的应用研究》这篇论文之前,有必要先了解一下人工智能技术的基本概念以及安全领域对技术的需求。人工智能(Artificial Intelligence,简称AI)是研究、开发用于模拟、延伸和扩展人的...
毕业设计:python信息安全领域中语义搜索引擎的设计与实现(源码 + 数据库 + 说明文档) 二、开发环境和相关技术 7 2.1开发环境 7 2.2Python语言 7 2.3Python搜寻器框架 7 2.4MySQL数据库 7 2.5语义搜索的概念 8 三...
网络安全的基本概念、主要领域、常见威胁、保护措施.md
【安全的基本概念及特征】 安全,作为一门科学和实践领域,涵盖了人类生活、生产和社会运行的各个层面。本文将深入探讨安全的定义、分类以及人类对其认知的发展。 1. 安全的定义: 安全通常指的是在外界不利因素...
标准的制定于2005年启动,在2011年正式发布,并且由于它对道路车辆功能安全的广泛关注,尤其在新能源汽车领域,对ISO_26262的需求日益迫切。 文中提到的电动四驱混合动力车辆(E4WD混动车)的开发案例,介绍了ISO_...
安全漏洞是信息技术领域中的一个重要话题,特别是在工业控制(工控)安全、移动安全、Web安全以及日益增长的物联网(IoT)安全领域。本资料主要围绕“安全漏洞的概念及分类”进行阐述,对于理解网络安全至关重要。 ...
生产安全事故隐患是安全生产领域中的一个重要概念,它涉及到企业的安全管理和风险防控。根据《安全生产法》和相关行业规定,事故隐患是指在生产活动中存在的人的不安全行为、物的不安全状态以及管理上的缺陷,这些...
计算机网络安全技术 电子信息学院 网络安全概念全文共11页,当前为第1页。 网络安全定义 网络安全是指网络系统的硬件、软件和系统中的数据受到保护,不因偶然的或者恶意的攻击而遭到破坏、更改、泄露,系统连续可靠...
本文介绍了网络安全和信息安全的保障在社会发展中的重要性,详细阐述了信息安全的概念、发展历程以及网络安全的标准和规范。通过描述网络安全的定义、发展历程和常见威胁,强调了建设网络安全的意义。文章还介绍了...