JDK安全剖析之术语与定义

1.验证(Authentication)

确认通信对方身份的过程。

2.证书(Certificate)

一份数字签名声明,用于证明某个实体(个人、公司等)的身份和公钥。证书可以是自签名的,也可以是由证书颁发机构 (CA) 颁发的,CA 是受信任的实体,可以为其他实体颁发有效证书。著名的 CA 包括 Comodo、Entrust 和 GoDaddy。X509 是一种常见的证书格式,可以由 JDK 的keytool进行管理。

3.密码套件(Cipher Suite)

定义用于身份验证、密钥协议、加密和完整性保护的安全算法和密钥大小的加密参数的组合。

4.加密哈希函数(Cryptographic Hash Function)

一种算法,用于从任意数据块生成相对较小的固定大小的位串(称为哈希)。加密哈希函数类似于校验和,具有三个主要特征:它是单向函数,这意味着不可能从哈希生成原始数据;原始数据的微小变化会导致生成的哈希发生巨大变化;并且它不需要加密密钥。

5.加密服务提供商 (Cryptographic Service Provider,CSP)

有时简称为提供程序,Java 加密体系结构 (JCA) 将其定义为一个包(或一组包),用于为特定加密算法实现一个或多个引擎类。引擎类以抽象方式定义加密服务,没有具体实现。

6.数据报传输层安全 (Datagram Transport Layer Security,DTLS) 协议

一种协议,用于管理客户端和服务器的身份验证、数据完整性以及基于不可靠传输通道(如 UDP)的客户端和服务器之间的加密通信。

7.加密(Encryption)

加密是使用复杂算法将原始信息(明文)转换为编码信息(密文)的过程,除非解密,否则无法理解。

用于加密和解密数据的算法通常分为两类:密钥(对称)加密和公钥(非对称)加密。

8.解密(Decryption)

解密是从密文生成明文的逆过程。

9.电子签名(Digital Signature)

手写签名的数字等价物。它用于确保通过网络传输的数据是由声称发送它的人发送的,并且数据在传输过程中没有被修改。例如,基于 RSA 的数字签名是通过首先计算数据的加密哈希值,然后使用发送者的私钥加密哈希值来计算的。

10.端点识别(Endpoint Identification)

用于识别网络端点的 IPv4 或 IPv6 地址。

端点识别程序在 SSL/TLS 握手期间处理。

11.握手协议(Handshake Protocol)

协商阶段,在此期间两个套接字对等体同意使用新的或现有的会话。握手协议是通过记录协议交换的一系列消息。在握手结束时,将根据会话中的密钥协议机密生成新的连接特定加密和完整性保护密钥。

12.密钥协议(Key Agreement)

双方合作建立公用密钥的方法。双方各自生成一些数据,然后进行交换。然后将这两部分数据组合起来生成密钥。只有持有正确私有初始化数据的人才能获得最终密钥。Diffie-Hellman (DH) 是密钥协商算法最常见的示例。

13.密钥交换(Key Exchange)

密钥交换方法。一方生成私钥,并使用对方的公钥(通常为 RSA)对其进行加密。数据传输给对方,对方使用相应的私钥解密密钥。

14.密钥管理器/信托管理器(Key manager/Trust manager)

密钥管理器和信任管理器使用密钥库作为其密钥材料。密钥管理器管理密钥库并根据需要向其他人提供公钥(例如,用于向其他人验证用户身份)。信任管理器根据其管理的信任库中的信息决定信任谁。

15.密钥哈希消息代码 (Keyed-Hash Message Code,HMAC)

一种特定类型的消息认证码,涉及加密哈希函数和秘密加密密钥。
基于密钥哈希消息代码 (Keyed-Hash Message Code,HMAC) 的提取和扩展密钥派生函数 (Keyed-Hash Derivation Function,HKDF)
用于密钥生成和验证的函数。

16.密钥库/信任库(keystore/truststore)

密钥库是密钥材料的数据库。密钥材料可用于多种用途,包括身份验证和数据完整性。有多种类型的密钥库可供选择,包括 PKCS12 和 Oracle 的 JKS。

一般来说,密钥库信息可分为两类:密钥条目和受信任证书条目。密钥条目由实体的身份及其私钥组成,可用于各种加密目的。相比之下,受信任证书条目除了实体的身份外,还仅包含公钥。因此,在需要私钥的地方不能使用受信任证书条目,例如在javax.net.ssl.KeyManager中。在 JKS 的 JDK 实现中,密钥库可能同时包含密钥条目和受信任证书条目。

信任库是用于决定信任哪些内容的密钥库。如果您从已经信任的实体收到数据,并且您可以验证该实体是否是其声称的实体,那么您可以假设数据确实来自该实体。

只有当用户信任该实体时,才应将条目添加到信任库中。通过生成密钥对或导入证书,用户即可信任该条目。信任库中的任何条目都被视为受信任条目。

拥有两个不同的密钥库文件可能会很有用:一个仅包含您的密钥条目,另一个包含您的受信任证书条目(包括 CA 证书)。前者包含私人信息,而后者不包含。使用两个文件而不是单个密钥库文件可以更清晰地区分您自己的证书(和相应的私钥)和他人的证书之间的逻辑区别。为了更好地保护您的私钥,请将它们存储在具有受限访问权限的密钥库中,并在需要时将受信任的证书提供在更公开可访问的密钥库中。

17.信息认证码(Message Authentication Code,MAC)

提供一种基于密钥检查通过不可靠介质传输或存储的信息完整性的方法。通常,MAC 用于共享密钥的双方之间,以验证双方之间传输的信息。

基于加密哈希函数的 MAC 机制称为 HMAC。HMAC 可与任何加密哈希函数(例如消息摘要 5 (MD5) 和安全哈希算法 (SHA-256))结合使用,并结合秘密共享密钥。HMAC 在 RFC 2104 中指定。

18.公钥加密(Public-Key Cryptography)

一种使用加密算法的加密系统,其中会产生两个密钥。一个密钥公开,另一个密钥保密。公钥和私钥是加密的逆向;一个密钥加密的内容只有另一个密钥才能解密。公钥加密也称为非对称加密。

19.记录协议(Record Protocol)

一种协议,将所有数据(无论是应用程序级数据还是作为握手过程的一部分)打包成离散的数据记录,就像 TCP 流套接字将应用程序字节流转换为网络数据包一样。然后,各个记录将受到当前加密和完整性保护密钥的保护。

20.密钥加密(Secret-Key Cryptography)

一种使用加密算法的加密系统,其中使用同一个密钥来加密和解密数据。密钥加密也称为对称加密。

21.安全套接字层 (Secure Sockets Layer,SSL)协议

一种管理客户端和服务器身份验证、数据完整性以及客户端和服务器之间的加密通信的协议。SSL 已重命名为传输层安全性 (TLS)。

22.会话(Session)

状态信息的命名集合,包括经过验证的对等身份、密码套件和密钥协商机密,这些信息通过安全套接字握手进行协商,并可在多个安全套接字实例之间共享。

23.传输层安全性 (Transport Layer Security,TLS) 协议

一种协议,基于可靠的传输通道(例如 TCP)管理客户端和服务器的身份验证、数据完整性以及客户端和服务器之间的加密通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VTK使用交互器来从三维体数据中提取二维切片

VTK中鼠标消息是在交互类型对象(interactorstyle)中响应,因此通过为交互类型对象(interactorstyle)添加观察者(observer)来监听相应的消息,当消息触发时,由命令模式执行相…

设计模式总结-组合模式

组合设计模式 模式动机模式定义模式结构组合模式实例与解析实例一:水果盘实例二:文件浏览 更复杂的组合总结 模式动机 对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构&#x…

市面上的常见传感器价格

自动窗帘传感器的价格因品牌、型号、功能以及市场供需关系等因素而有所不同。一般来说,普通自动窗帘传感器的价格可能在几十到几百元人民币不等。然而,一些高端、智能型或具有特殊功能的传感器可能会更贵,价格可能达到几百元甚至更高。 购买时…

Spark面试整理-解释Spark中的内存管理和持久化机制

在Apache Spark中,内存管理和持久化机制是核心特性,它们对于提高大规模数据处理的效率和性能至关重要。 内存管理 统一的内存管理:Spark使用统一的内存管理模型,将执行内存(用于计算如shuffle、join等)和存储内存(用于缓存数据如RDDs)合并在一起。这种模型提供了更高的…

刷题之Leetcode27题(超级详细)

27. 移除元素 力扣题目链接(opens new window)https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用…

面试算法-132-和至少为 K 的最短子数组

题目 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度。如果不存在这样的 子数组 ,返回 -1 。 子数组 是数组中 连续 的一部分。 示例 1: 输入:nums [1], …

一篇文章带你掌握二叉树(附带二叉树基本操作完整代码演示,和两种思路)

【本长内容】 1. 掌握树的基本概念 2. 掌握二叉树概念及特性 3. 掌握二叉树的基本操作 4. 完成二叉树相关的面试题练习 1. 树形结构 1.1 概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是…

Vue - 2( 10000 字 Vue 入门级教程)

一&#xff1a;Vue 1.1 绑定样式 1.1.1 绑定 class 样式 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>绑定样式</title><style>......</style><script type"text/javascript" src&…

从零开始:成功进入IT行业的方法与技巧

如今&#xff0c;信息技术&#xff08;IT&#xff09;行业成为了就业市场上的热门领域。由于其快速发展和广阔的职业机会&#xff0c;许多人希望能够进入这个行业。然而&#xff0c;对于没有任何相关背景知识的人来说&#xff0c;要成功进入IT行业可能会面临一些挑战。本文将分…

基于java web的超市管理系统

摘要 随着社会经济的不断发展&#xff0c;人们的生活水平不断提高。越来越多的零售行业得到了快速的发展&#xff0c;以最常见的超市最为明显。零售行业繁荣的背后也随之带来了许多行业隐患&#xff0c;越来越激烈的行业竞争不断的要求经营者更加高要求的管理超市内部的整个供…

代码随想录第31天 | 455.分发饼干 、376. 摆动序列、53. 最大子序和

一、前言 参考文献&#xff1a;代码随想录 今天的内容是贪心算法&#xff0c;这个算法分为两个极端&#xff0c;一个极端是很简单&#xff0c;靠常识就可以解出来&#xff0c;另外一个是&#xff0c;你怎么想也想不出来&#xff0c;只能看题解的那种。 and 对第一天和第二天…

微信小程序上传到gitee

共三步 1、新建gitee仓库 点号&#xff0c;新建仓库&#xff0c;填入仓库信息新建即可 2、修改版本管理参数 微信开发者工具中点开版本管理&#xff0c;未初始化&#xff0c;需要先点初始化 接下来将设置中的通用、网络认证、远程3个部分的参数填写好 通用&#xff1a;核对…

DashOJ-8.奇偶统计

题目链接&#xff1a; 题目详情 - 奇偶统计 - DashOJ 思路&#xff1a; &#xff08;while循环加if分支语句&#xff09; 巧用死循环 while(1) 然后在里面第一句就判断输入的数字是否等于0 if(x0) &#xff0c;如果 等于0就直接break跳出循环 或者用 while(cin>>x) 代…

Win11解决Fiddler everyone卡在启动界面

问题描述 fiddler在window11卡在启动界面,重新安装也不行 解决方案 右击以管理员运行

echarts 地图 自己圈地图 乡镇街道

这个是方式是我实在不愿意做的&#xff01; 如果有现成的最好&#xff0c;没有办法的情况下再用这个东西。 今天公司有一个项目&#xff0c;地方划分了一块区域&#xff0c;但是国家没有审核&#xff0c;但是项目里面用到了一个地图展示数据&#xff01;然后就需要我们自己把…

Java学习笔记02:面向对象

3.1.3 面向对象特征 唯一性&#xff08;每个对象都是唯一的&#xff09;、分类性、继承性&#xff08;Java是单继承&#xff0c;C是多继承&#xff09;、多态性&#xff08;子类重写父类方法&#xff09; 3.2.1 类的声明 访问符&#xff1a;public、protected、private。修饰…

非conda环境(powershell与cmd)使用opencv-python库

1.安装python 3.11.7 Python Release Python 3.11.7 | Python.org 安装成功后,查看版本为3.11.7 2.安装numpy pip install numpy 3.安装matplotlib pip install matplotlib matplotlib库安装成功

论文阅读-Directed Greybox Fuzzing 定向灰盒模糊(2017)

摘要&#xff1a; 本文介绍了一种新的Directed Greybox Fuzzing (DGF)方法&#xff0c;可以有效地指导模糊测试&#xff0c;以便更快地到达目标程序位置。作者开发了一种基于模拟退火的能量调度算法&#xff0c;逐渐为更接近目标位置的种子分配更多能量&#xff0c;同时减少远离…

k8s CNI Calico 网络模式总结

目录 calico架构图 IPIP模式下的架构图 calico 核心组件 Overlay 网络模式&#xff1a; Pod IP对外暴露 不对外暴露&#xff1a; 实现对外暴露的方法&#xff1a; overlay模式下的网络MTU Iptables & ipvs overlay的主要缺点&#xff1a; Full-mesh Unoverla…

Python使用executemany实现数据批量插入

Python的pymysql中提供有cursor.execute()实现数据的逐行插入&#xff0c;但是当数据量较大时&#xff0c;这种插入方法十分耗时。这时我们可以使用cursor.executemany()函数来实现数据的批量插入。 executemany()用法 在数据库连接后&#xff0c;使用cursor.excutemany(sql,…