认证机制
⑴ ssl用哪些加密算法,认证机制
SSL是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议(HTTP)使用 SSL 来实现安全的通信。
在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。
有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。
详细介绍:网页链接
⑵ 如何使用HttpClient认证机制
由于HttpClient内置支持HTTPBasic认证方式,因而使用HttpClient通过HTTPBasic认证的步骤显得较为简单。
1.为HttpClient的状态对象添加用户名/密码对。可以注意到在setCredentials方法中的另一个参数为AuthScope对象。事实上我们添加的每个用户名/密码对都与一个AuthScope对象相关联。AuthScope对象确定了此用户名/密码对的适用站点,在示例中所给出的用户名/密码对将只适用于www.sample.com位于80端口上的资源。HttpClient在与其他站点交互时将不会使用此用户名/密码对,这样有效地防止了机密数据被传送至不必要的站点。
2.开启HttpClient提供的占先式(Preemptive)认证功能。开启了这个功能后,HttpClient对于那些处在之前请求过的URI空间范围内的资源,会主动地随请求一起向服务器发送Basic认证数据,而不是等待服务器返回是否需要认证的响应后再提交认证。在多数情况下,能够减少请求-响应传递的次数,从而间接提高了服务器的响应能力。值得注意的是在这种情况下必须在AuthScope对象中明确指定适用站点,以避免向不相关的站点泄漏敏感数据。3.创建GetMethod对象,此对象将使用GET方式对保护资源发出HTTP请求。
4.setDoAuthentication(true)语句将告知HttpClient在服务器端发回需要认证的请求后,自动将我们在步骤1中设置的用户名/密码对发送至服务器,以完成认证过程。
5.执行GET请求,获取和处理受保护资源的内容。
⑶ 目前最安全的身份认证机制是
是三次口令机制。
1、根据你所知道的信息来证明你的身份(what you know ,你知道什么 ) 。
2、根据你所拥有的东西来证明你的身份(what you have ,你有什么 ) ;
采取通信加密、安全通信协议等安全措施进行安全防护。利用硬件加密设备对网络传输数据进行加密,使得通信数据以密文的方式在网络上进行传输,同时采取硬件密码设备、密钥管理安全协议、密钥存储访问控制、密钥管理安全审计等多种措施对密钥安全进行安全防护,系统用户使用数字证书进行身份认证,确保系统自身安全。
(3)认证机制扩展阅读:
身份认证产生原因:
1,计算机网络世界中一切信息包括用户的身份信息都是用一组特定的数据来表示的,计算机只能识别用户的数字身份,所有对用户的授权也是针对用户数字身份的授权。
2,如何保证以数字身份进行操作的操作者就是这个数字身份合法拥有者,也就是说保证操作者的物理身份与数字身份相对应。
⑷ 如何使用HttpClient认证机制
是单向认证还是双向认证呢?
其实2者实现过程是类似的,我对httpclient4.3+的版本比较熟悉,生成httpclient实例的一般过程是:首先生成SSLContext,然后用sslcontext作为参数传入工厂方法生成SSLsocketfactory实例,之后通过HttpClientBuilder()将工厂传进去生成httpclient实例,当然生成工厂实例这一步可以不做,看需求,因为工厂可以设置一些连接参数,如果你用不到可以直接把SSLContext传入HttpClientBuilder()出来httpclient实例。
过程了解了,那么如果要做证书验证,对于单向认证,我们只需要信任服务器证书即可,如果你手里有服务器证书(一般都可以下载),可以直接把它转成keystore格式,然后sslcontext有一个.loadTrustMaterial(xxx.keystore)方法设置证书信任域,你把服务器证书设置进去就可以了,还有一个.loadTrustMaterial(null, new TrustSelfSignedStrategy()),这是默认信任所有,当然不太安全,另外还可以通过重写默认方法信任所有证书,这个不再赘述,你选择一种方法就行。
对于双向认证,你只需要把客户端证书传过去即可,你手上肯定有客户端证书对吧,把它整成keystore格式,然后通过sslcontext的.loadKeyMaterial(xx.keystore,"password")把证书传进去,很简单吧,下面我给你个例子,是我以前写的,也参考了网上的例子。
这个是先得到keystore实例
publicclassTrustKey{
@SuppressWarnings("finally")
(){
KeyStoretrustStore=null;
FileInputStreamfis=null;
try{
trustStore=KeyStore.getInstance(KeyStore.getDefaultType());
//fis=newFileInputStream(newFile("D:\java\tomcat8\wx_dev\webapps\data.keystore"));
fis=newFileInputStream(newFile("E:\certi\data.keystore"));
trustStore.load(fis,"password".toCharArray());//加载KeyStore
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(CertificateExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}catch(KeyStoreExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
fis.close();
}catch(IOExceptione){
e.printStackTrace();
}
returntrustStore;
}
}
下面是生成httpclient实例,用到了连接池,如果你不需要可以去掉。(){
CloseableHttpClienthttpclient=null;
try{
KeyStoretrustStore=TrustKey.getTrustKey();//获得keystore
//设置ssl上下文
SSLContextsslContext=SSLContexts.custom()
.loadTrustMaterial(null,newTrustSelfSignedStrategy())
.loadKeyMaterial(trustStore,"sinowel".toCharArray())
.setSecureRandom(newSecureRandom())
.useSSL()
.build();
=PlainConnectionSocketFactory.INSTANCE;
//将参数注入sslconnection工厂,,忽略域名一致验证
=newSSLConnectionSocketFactory(
sslContext,newString[]{"TLSv1"},null,
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
//注册协议
Registry<ConnectionSocketFactory>r=RegistryBuilder.<ConnectionSocketFactory>create()
.register("http",plainSocketFactory)
.register("https",sslSocketFactoy)
.build();
HttpHosttarget=newHttpHost(IP,PORT,"https");
//根据已生成协议工厂对象生成连接管理器
connectionManager=(r);
connectionManager.setMaxTotal(MAXCONNECTION);
//设置每个Route的连接最大数
connectionManager.setDefaultMaxPerRoute(DEFAULTMAXCONNECTION);
//设置指定域的连接最大数
connectionManager.setMaxPerRoute(newHttpRoute(target),20);
//返回HTTPCLIENT对象
httpclient=HttpClients.custom()
.setConnectionManager(connectionManager)
.setProxy(newHttpHost("10.182.22.88",8002))
.build();
//将ssl上下文及连接管理器注入工厂产生httpclient对象
//=newSSLConnectionSocketFactory(sslContext);
//httpclient=HttpClients.custom().setSSLSocketFactory(sslsf).build();
//httpclient=HttpClientBuilder.create().setSSLSocketFactory(sslsf).build();
}catch(Exceptione){
e.printStackTrace();
}finally{
returnhttpclient;
}
}
⑸ 详细解释windows身份认证机制
原因可能是在SQL Server Management Studio,安全性-登录里,把本机用户名给删了。
刚才我就是,因为机器换过IP,换用主机名。。。看了有个老用户名不爽。删掉了。然后SQL Server Management Studio就提示连接失败了。然后重启电脑用Windows身份认证登录都进不去数据库了。
⑹ 如何 整合 第三方 用户认证机制
第三方认证是指:除了环球商讯网之外的第三方认证机构。第三方认证是为了验证商讯通申请者的真实合法身份,最大程度上的杜绝虚假信息,保证商讯通的利益。认证过程即第三方认证机构通过企业用户所在当地工商局对“被身份认证公司是否合法存在”以及“身份认证申请人是否属于被身份认证公司”的查证。 用户必须通过第三方认证机构才能成为环球商讯网商讯通会员,目前,第三方身份认证的通过率超过98%!该认证是在您完成商讯通会员的申请和付款到帐以后进行的,通过认证后。环球商讯网会Email通知您通过认证,开通商讯通服务。并将认证过的信息显示在您的信用档案中。 身份认证的信息包括如下几项:公司注册名称、公司注册地址、注册资本、法定代表人、公司成立时间、申请人姓名、申请人所在部门、申请人职位等。 通过第三方权威机构的来核实企业,能够提高企业信用度,更能赢得客户信赖。 第三方认证不止是金融.对于其他也有 第三方的角色应该由谁来担当呢?显然,非国家或政府莫属。由国家或政府的机关直接担任这个角色,或者由国家或政府认可的组织去担任这个角色,这样的机关或组织就叫做“认证机构”。 第三方的认证活动必须公开、公正、公平,才能有效。这就要求第三方必须有绝对的权力和威信,必须独立于第一方和第二方之外,必须与第一方和第二方没有经济上的利害关系,或者有同等的利害关系,或者有维护双方权益的义务和责任,才能获得双方的充分信任。 在国际经济案例中,如两国之间未建交,而涉及到承认一方企业或企业产品的合法性时,可由与前两者都建交的第三方国家或政府出具相关证明文件,当然也可以由其指定的组织认证。 现代的第三方产品品质认证制度早在1903年发源于英国,是由英国工程标准委员会(BSI的前身)首创的。 ISO9000系列质量标准认证是一个国际多边承认、区域多边承认的第三方认证体系。 目前相关的第三方认证机构主要包括的认证比较多一点,例如CA认证,Malware检测网关设备也需要权威的第三方认证。
⑺ 思考ssl用哪些加密算法,认证机制等
SSL是Netscape公司所提出的安全保密协议,在浏览器(如Internet Explorer、Netscape Navigator)和Web服务器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采用了RC4、MD5以及RSA等加密算法,使用40 位的密钥,适用于商业信息的加密。同时,Netscape公司相应开发了HTTPS协议并内置于其浏览器中,HTTPS实际上就是HTTP over SSL,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。哈希签名算法:SHA256、SHA384、SHA512,加密位数:204、4096、8192,SSL都是统一的认证机制并且统一在webtrust执行下认证。
⑻ 如何使用HttpClient认证机制
1.服务器认证(Server Authentication)
HttpClient处理服务器认证几乎是透明的,仅需要开发人员提供登录信息(login
credentials)。登录信息保存在HttpState类的实例中,可以通过 setCredentials(String realm,
Credentials cred)和getCredentials(String realm)来获取或设置。
HttpClient内建的自动认证,可以通过HttpMethod类的setDoAuthentication(boolean doAuthentication)方法关闭,而且这次关闭只影响HttpMethod当前的实例。
1.1抢先认证(Preemptive Authentication)
在这种模式时,HttpClient会主动将basic认证应答信息传给服务器,即使在某种情况下服务器可能返回认证失败的应答,这样做主要是为了减少连接的建立。使用该机制如下所示:
client.getParams().setAuthenticationPreemptive(true);
抢先认证模式也提供对于特定目标或代理的缺省认证。如果没有提供缺省的认证信息,则该模式会失效。
Credentials defaultcreds = new UsernamePasswordCredentials("username", "password");
client.getState().setCredentials(new AuthScope("myhost", 80, AuthScope.ANY_REALM), defaultcreds);
Httpclient实现的抢先认证遵循rfc2617.
A
client SHOULD assume that all paths at or deeper than the depth of the
last symbolic element in the path field of the Request-URI also are
within the protection space specified by the Basic realm value of the
current challenge. A client MAY preemptively send the corresponding
Authorization header with requests for resources in that space without
receipt of another challenge from the server. Similarly, when a client
sends a request to a proxy, it may reuse a userid and password in the
Proxy-Authorization header field without receiving another challenge
from the proxy server.
1.2服务器认证的安全方面考虑
当需要与不被信任的站点或web应用通信时,应该谨慎使用缺省的认证机制。当启动(activate)抢先认证模式,或者认证中没有明确给出认证域,主机的HttpClient将使用缺省的认证机制去试图获得目标站点的授权。
如果你提供的认证信息是敏感的,你应该指定认证域。不推荐将认证域指定为AuthScope.ANY。(只有在debugging情况下,才使用)
// To be avoided unless in debug mode
Credentials defaultcreds = new UsernamePasswordCredentials("username", "password");
client.getState().setCredentials(AuthScope.ANY, defaultcreds);
2.代理认证(proxy authentication)
除了登录信息需单独存放以外,代理认证与服务器认证几乎一致。用 setProxyCredentials(String realm, Credentials cred)和 getProxyCredentials(String realm)设、取登录信息。
3.认证方案(authentication schemes)
3.1Basic
是HTTP中规定最早的也是最兼容的方案,遗憾的是也是最不安全的一个方案,因为它以明码传送用户名和密码。它要求一个UsernamePasswordCredentials实例,可以指定服务器端的访问空间或采用默认的登录信息。
3.2 Digest
是在HTTP1.1 中增加的一个方案,虽然不如Basic得到的软件支持多,但还是有广泛的使用。Digest方案比Basic方案安全得多,因它根本就不通过网络传送实际的密码,传送的是利用这个密码对从服务器传来的一个随机数(nonce)的加密串。
它要求一个UsernamePasswordCredentials实例,可以指定服务器端的访问空间或采用默认的登录信息。
3.3 NTLM
这是HttpClient支持的最复杂的认证协议。它Microsoft设计的一个私有协议,没有公开的规范说明。一开始由于设计的缺陷,NTLM的安全性比 Digest差,后来经过一个ServicePack补丁后,安全性则比较Digest高。
NTLM需要一个NTCredentials实例。
注意,由于NTLM不使用访问空间(realms)的概念,HttpClient利用服务器的域名作访问空间的名字。还需要注意,提供给
NTCredentials的用户名,不要用域名的前缀 - 如: "adrian" 是正确的,而 "DOMAIN\adrian" 则是错的。
NTLM认证的工作机制与basic和digest有很大的差别。这些差别一般由HttpClient处理,但理解这些差别有助避免在使用NTLM认证时出现错误。
[1] 从HttpClientAPI的角度来看,NTLM与其它认证方式一样的工作,差别是需要提供'NTCredentials'实例而不是'UsernamePasswordCredentials'(其实,前者只是扩展了后者)
[2] 对NTLM认证,访问空间是连接到的机器的域名,这对多域名主机会有一些麻烦。只有HttpClient连接中指定的域名才是认证用的域名。建议将realm设为null以使用默认的设置。
[3]
NTLM只是认证了一个连接而不是一请求,所以每当一个新的连接建立就要进行一次认证,且在认证的过程中保持连接是非常重要的。
因此,NTLM不能同时用于代理认证和服务器认证,也不能用于HTTP1.0连接或服务器不支持持久连接(keep-alives)的情况。
⑼ 为什么要对动态路由协议采用认证机制
认证 就是设置密码 避免非授权的设备接入触发更新就是当网络拓扑发生变化时,向邻居发送路由更新,相对于周期更新
⑽ 无线传感器网络的认证机制有哪些
与传统网络不同,无线传感器网络通常部署在野外或者敌方区域,其网络节点成本低廉、结构较为松散、不具备抗篡改能力、且容易被攻击者俘获,无线传感网络的安全问题已经成为制约其发展的主要瓶颈之一,认证技术是安全体系中的重要组成部分,因此研究无线传感器网络的认证技术具有重要意义。本文结合无线传感器网络节点协同工作的特点,采用混淆多项式技术,着重研究适合该网络的数据认证机制,主要工作包括以下几个方面:
(1)针对无线传感器网络中已有的广播认证机制难以支持广播优化、存在延迟等不足,本文基于虚拟骨干网的思想,构建一个动态阶梯型网络,采用多项式技术,提出了一种能够识别转发节点身份的广播认证机制及其改进方案,与已有广播认证机制相比,该机制计算简单、认证延迟低、能够容忍大量的俘获节点,而且能够支持层次广播优化策略,更适用于大规模网络。
(2)针对无线传感器网络中已有的网内数据认证机制通常受到t门限值的限制,且难以支持动态路由的缺陷,本文基于虚拟证人簇的思想,采用混淆多项式技术,由云团内部多个节点协作生成认证多项式,加大了攻击难度;在此基础上提出的网内数据认证机制,能即时验证数据的有效性,并且支持动态路由。理论分析和仿真测试表明,新算法不受t门限值的限制,随着传输跳数的增加其节能效果更为明显,与已有的网内数据认证机制相比,抗俘获能力增强,更适用于可信度较低的网络,以及远距离传输场景的应用。
(3)根据上述提出的多项式数据认证机制,在OMNet++平台上,实现了基于多项式认证的仿真系统,包括定义该仿真系统的总体结构,各功能层次所实现的具体功能,以及算法的具体实现等。本文采用源节点随机发送正确的数据包和伪造的数据包的方式来测试分析所提算法的认证能力,仿真结果表明,该系统能够有效地对数据包的新鲜性、完整性和可靠性进行认证,并能识别和剔除虚假数据。http://ic.big-bit.com/