您的位置:首页 > 编程语言 > Java开发

java安全学习准备知识(二)

2013-08-23 13:54 302 查看
3、非对称密钥(公共密钥)
我们在介绍对称密钥的时候举了一个例子,提到了密钥传输的安全问题。并且在网络中的传输双方并不是我们现实中的“亲人”关系。那么公钥正好解决了这个问 题。我这里举个通俗的例子,例如你有个信箱(物理信箱),开着一个缝隙(公钥),大家都能往里塞东西,但是一旦赛进取,那可不是大家都能取到的,只有拥有 信箱钥匙(私钥)才能得到。哈哈!就这样。公钥就这样,不要担心它多难理解。当然当我们反过来理解的时候就有些和信箱不同的地方。也就是用私钥加密的东西 只有对应的公钥才能进行解密,这种算法经常被应用在数字签名上。其实在现实中你可以将公钥技术和私钥技术结合起来完成信息保密,因为公钥的计算速度相当 慢,比私钥慢大约100-1000倍。下面是一些非对称密钥算法列表:

u RSA:这个算法是最流行的公钥密码算法,使用长度可以变化的密钥。
u Diffie-Hellman:技术上将这种算法称为密钥协定算法。它不能用于加密,但可以用来允许双方通过在公用通道上共享信息来派生出秘钥。然后这个密钥可以用于私钥加密。

需要注意的是私钥和密钥是成对的,并且不能用一个生成另外一个,特别是不能用公钥生成私钥,否则就麻烦了。 认证和不可抵赖
我们经常在论坛中中见到管理员、斑竹等身份标识,并且我们更明白拥有不同的身份它们的权限也同样有差别。但我们很想拥有管理员的权限,我们的突破口应该在 哪里呢?当然是获得一个管理员的账号,这样就可以被系统的认证系统识别。通俗的说就是要让系统的认证识别器确认你是管理员身份就可以了。呵呵,没那么容 易,因为各个系统都具有严密的认证体系,不象一些小朋友做的认证逻辑处在sql语句逻辑上那么简单。

认证的实现方法多种多样,真的,我以前做网站的时候总是想当然地进行用户认证。但其基础技术有如下列表:
u 基于口令的身份认证
u 基于令牌的物理标识和认证
u 基于生物测定学的认证
u 基于证书的认证

下面就分别将这些认证做一介绍: 基于口令的身份认证
太熟悉了,不是吗?这里只很想告诉口令暴露的过程以及保护的过程。我们通常见到的口令认证方式是在传输过程中口令完全暴露,并且在服务器端的口令存储上也 完全是明文的形式,造成的后果是口令完全被暴露,很容易被监听。那么如何保护这些过程中的口令呢?暂时的思路是:建立在安全传输层的基础上,内部口令不以 明文形式出现。好了,不多说了,需要了解更详细的内容请发邮件到:luopc@edu-edu.com.cn基于令牌的物理标识和认证
功能我们不用说,当然是非常强大,但代价昂贵。你见过这样的认证吗?呵呵,很少的话,就了解一下就行了,要更多了解劝你先研究一下ATM机和ATM卡或者给我发邮件:luopc@edu-edu.com.cn基于生物测定学的认证
想想就知道了,你的指纹、眼睛视网膜等可真是独一无二啊。呵呵,其复杂性也是很大的。我都部知道^^,当然你可以知道,别忘了告诉我luopc@edu-edu.com.cn基于证书的认证
近年来相当流行的认证技术应该是基于证书的认证。证书的概念和我们现实中的毕业证书、学位证书等没有多大差别。上面可以记载一些事实信息(特别是某一实 体),那当然差别主要体现在数字技术的特殊需要上。其实证书就是一个数据块,主要包括公开密钥、主体相关的信息、证书有效的日期、证书发行者的信息和证书 发行者生成的签名。

不是“亲人”那我们就得搞清楚对方是什么?不然的话,我们怎么能把“她”的东西拿来用呢?或者怎么能把咱们的东西给“她”呢?“她”得拿出个什么凭据吧?呵呵,那当然。这无可非议,可能现在你更急切的就是想知道这个证书的签发和应用过程吧?好了。我们继续。

我们前面已经谈过将公钥技术反过来可以应用于数字签名。但这种前面谁都可以签的,数字签名仅仅能解决消息来源真是你拥有公钥的主人,但并不能说明该主人就 是一个多么“可爱”的家伙。哎!完了,没法确定她是否“可爱”了。但我倒有个主意,我们去找一个特别了解此人的人(当然要权威了)问问看此人是否信得过。 哈哈,就是这样,我们经常说的CA机构就是干这事情的。爽!那么整个过程如何呢?

其实整个过程很简单,我就认为是二次数字签名就是了。第一次首先需要证书的实体将自己的信息和公钥提交给CA,CA确认该组织的可信赖之后,就用自己的密 钥对该实体的信息和公钥进行签名。最后被签名的信息会就叫证书。站在用户的角度,用户首先接到一个证书,当然会根据CA(可信)提供的公钥进行解密,如果 能解密,当然就可以获得可信赖的信息和实体公钥。然后由实体公钥再进行前面我们介绍的数字签名解密步骤。呵呵,就这样,由介绍完了。 安全套接字层
安全套接字层(SSL)和取代它的传输层安全性(TLS)是用于在客户机和服务器之间构建安全的通信通道的协议。它也用来为客户机认证服务器,以及(不太 常用的)为服务器认证客户机。该协议在浏览器应用程序中比较常见,浏览器窗口底部的锁表明 SSL/TLS 有效。

TLS 1.0 和 SSL 3.1 一样。

SSL/TLS 使用本教程中已经讨论过的三种密码术构件的混合体,但这一切都是对用户透明的。以下是该协议的简化版本:

当使用 SSL/TLS(通常使用 https:// URL)向站点进行请求时,从服务器向客户机发送一个证书。客户机使用已安装的公共 CA 证书通过这个证书验证服务器的身份,然后检查 IP 名称(机器名)与客户机连接的机器是否匹配。

客户机生成一些可以用来生成对话的私钥(称为会话密钥)的随机信息,然后用服务器的公钥对它加密并将它发送到服务器。服务器用自己的私钥解密消息,然后用该随机信息派生出和客户机一样的私有会话密钥。通常在这个阶段使用 RSA 公钥算法。

然后,客户机和服务器使用私有会话密钥和私钥算法(通常是 RC4)进行通信。使用另一个密钥的消息认证码来确保消息的完整性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: