把JavaTM Secure Socket Extension (JSSE) Reference Guide把翻译了一下,留着自己看,也分享给大家,略有删减,不保证翻译的正确性。
一般来说,keystore密钥信息可以分为两种类型:key entries 和 trusted certificate entries。key entry由实体的identity和私钥组成,可用于各种加密目的。相比之下,a trusted certificate entry除了该实体的identity外只包含一个公钥。在JDK中实现“JKS”, a keystore可能包含key entries and trusted certificate entries。
A truststore(is a keystore )用来决定信任什么。如果你从你已经信任的一端(an entity)接收到一些数据,而且你可以明确the entity就是申明的那个,你就可以认为这些数据就是从它哪里来的。
如果用户确认要信任那个实体,那么这个entry应该只被添加到一个truststore 中。通过生成一个密钥或导入证书,用户已经信任这个实体,因此任何包括在keystore的实体都被认为为是可信任的实体。
可能有两种不同的keystore文件: 一只包含你的 key entries和其他含有你所信任certificate entries, 包括认证机构 Certification Authority (CA) certificates. 前者包含私人信息,后者则不包含。使用两个不同的文件,而不是一个单一的keystore文件来存储,来区分你自己的certificates (包含私钥) 和其他certificates.
一种是基于Hash函数的MAC机制称为HMAC。HMAC可以使用任何加密哈希函数,如消息摘要5(MD5)和安全散列算法(SHA),在一个共享密钥的组合。HMAC在RFC 2104定义的。
认证-Authentication
是确认参与通信身份的过程。Authentication is the process of confirming the identity of a party with whom one is communicating.Cipher Suite
组合加密参数,定义用于安全算法和密钥长度,用于认证,key agreement,加密和完整性保护证书-Certificate
证书是一种数字签名的声明,以确认身份和实体的公钥(个人、公司等)。证书可以由证书颁发机构Certification Authority (CA)或自行签署或颁发。证书颁发机构是为其他实体颁发有效证书的实体。知名CA包括VeriSign,Entrust,和GTE Cybertrust公司。X509是一种常见的证书的格式,它们可以通过JDK的工具来管理。Hash加密-Cryptographic Hash Function
hash加密类似于checksum(校验和). 数据处理的算法,产生一个相对较小的字符串位称为哈希(hash)。一个加密哈希函数有三个主要特征:它是一个单向函数,这意味着它是不可能从hash值还原原值;原始数据一个小的变化,在hash结果将产生很大的变化;原;它不需要加密密钥。加密服务提供商-Cryptographic Service Provider
在Java Cryptography Architecture (JCA)中,各种加密算法的实现由加密服务提供商提供.提供者本质上是为特定算法实现一个或多个引engine classes(抽象类或接口)。 An engine class 定义了一个加密服务在一个抽象,尚没有具体实施。数字签名-Digital Signature
数字签名是手写签名的数字等价。它是用来确保在网络上传输的数据没有被修改,且是由它发送的。例如,一个基于RSA的数字签名是通过首先计算数据的哈希密码值,然后用发送者私钥(sender's private key)加密哈希密码值。加密和解密-Encryption and Decryption
加密是使用复杂的算法将原始信息-明文,转换到密码信息-称为密文,密文难以理解,除非解密它。解密密文到明文是加密的逆过程。使用的算法来加密和解密数据通常有两类:对称加密和非对称加密。secret key (symmetric) cryptography and public key (asymmetric) cryptography.握手协议-Handshake Protocol
两个套接字端同意使用新的或现有会话的协商阶段。握手协议是在记录层协议(record protocol)上一系列消息交互。在握手结束时,new connection-specific encryption and integrity protection keys are generated based on the key agreement secrets in the session.Key Agreement
是双方协同建立通用密钥的一种方法。每侧生成一些交换的数据。然后将这两个数据组合生成密钥。只有那些持有原始数据的将能够获得最终的密钥。Diffie Hellman(DH)是密钥协议算法最常见的例子。Key Exchange
一端生成对称密钥,然后用对端的公钥(typcially RSA)加密它。然后将数据传递给对端,然后对端使用它自己私钥来解密。Key Managers and Trust Managers
密钥管理和信任管理使用Keystores来管理他们的密码信息。一个密钥管理一个keystore和公开的公钥(给它的需要者)。信任管理根据它管理的truststore信息做出谁讲被信任的决定。Keystores and Truststores
A keystore是密钥(Key material )数据库。密钥用于多种用途,包括认证和数据完整性。有各种类型的keystores,包括"PKCS12" and Sun's "JKS."。一般来说,keystore密钥信息可以分为两种类型:key entries 和 trusted certificate entries。key entry由实体的identity和私钥组成,可用于各种加密目的。相比之下,a trusted certificate entry除了该实体的identity外只包含一个公钥。在JDK中实现“JKS”, a keystore可能包含key entries and trusted certificate entries。
A truststore(is a keystore )用来决定信任什么。如果你从你已经信任的一端(an entity)接收到一些数据,而且你可以明确the entity就是申明的那个,你就可以认为这些数据就是从它哪里来的。
如果用户确认要信任那个实体,那么这个entry应该只被添加到一个truststore 中。通过生成一个密钥或导入证书,用户已经信任这个实体,因此任何包括在keystore的实体都被认为为是可信任的实体。
可能有两种不同的keystore文件: 一只包含你的 key entries和其他含有你所信任certificate entries, 包括认证机构 Certification Authority (CA) certificates. 前者包含私人信息,后者则不包含。使用两个不同的文件,而不是一个单一的keystore文件来存储,来区分你自己的certificates (包含私钥) 和其他certificates.
Message Authentication Code
A Message Authentication Code (MAC)提供一种方式检查信息传输或存储在一个不可信的媒介时数据的完整性,它基于密钥(secret key)。通常,MAC被用来双方共享一个密钥用来验证双方传送数据。一种是基于Hash函数的MAC机制称为HMAC。HMAC可以使用任何加密哈希函数,如消息摘要5(MD5)和安全散列算法(SHA),在一个共享密钥的组合。HMAC在RFC 2104定义的。