在WinHTTP中,应使用哪些设置来传递Common Criteria TLS_EXT1.1测试

时间:2018-01-31 14:58:28

标签: delphi certificate tls1.2 winhttp

我的团队正在研究用Delphi for Windows编写的客户产品之一的通用标准验证。该应用程序使用winhttp api发出HTTP请求。我们使用tls-cc-tools来检查应用程序是否通过了所有TLSC EXT1.1保证测试。我们已经能够限制密码套件并启用TLS 1.2应用程序,现在测试1,测试4,测试5.1,测试5.2和5.3正在通过但其余测试未通过。可以找到测试over here

我们在winhttp中设置了以下选项:

 df:={WINHTTP_DISABLE_AUTHENTICATION or }WINHTTP_DISABLE_COOKIES or WINHTTP_DISABLE_KEEP_ALIVE or WINHTTP_DISABLE_REDIRECTS;


 WinHTTPSetOption(iconnection, WINHTTP_OPTION_DISABLE_FEATURE,@df,sizeof(df));

 protocols := $00000800; //WINHTTP_FLAG_SECURETLS1_2;
    WinHttpSetOption(iconnection, WINHTTP_OPTION_SECURE_PROTOCOLS,  @protocols, sizeof(protocols));

  WinHTTPSetOption(iconnection, WINHTTP_OPTION_SECURITY_FLAGS,
   @flags, sizeof(flags));

失败的测试:

测试3:评估者应在TLS连接中发送与服务器选择的密码套件不匹配的服务器证书(例如,在使用TLS_RSA_WITH_AES_128_CBC_SHA密码套件时发送ECDSA证书或发送使用其中一个ECDSA密码套件时的RSA证书。)评估者应在收到服务器的证书握手消息后验证TOE是否断开连接。

测试4:评估者应配置服务器以选择TLS_NULL_WITH_NULL_NULL密码套件并验证客户端是否拒绝连接。

测试5.5:修改服务器完成的握手消息中的字节,并验证客户端在收到时发送致命警报并且不发送任何应用程序数据。

测试5.6:在服务器发出ChangeCipherSpec消息后,从服务器发送乱码消息,并验证客户端是否拒绝连接。

应该采取哪些措施来确保剩余的测试通过?

1 个答案:

答案 0 :(得分:1)

前言:我是经过认证的Common Criteria Evaluator和一名软件开发人员。多年来我一直在处理TLS和X.509测试用例。

在所有情况下,其中一些测试非常重要,例如上面的FCS_TLSC_EXT.1测试3。如果不了解更多关于您的实现和(最重要的)测试设置,就不可能诊断为什么没有看到效果。

但是,测试4非常简单:将TLS服务器设置为仅响应NULL密码,而不管客户端要求什么。这可以通过中间人或通过黑客攻击服务器来完成。两者都应该强迫客户端在它进一步发展之前断开连接。

测试5.5和5.6是纯粹的中间人测试。如果您已经在使用TLS-cc-tools,那么测试的基础已经存在。

查看我的个人资料,了解如何直接与我联系,以获得有关CC和TLS以及X.509一致性的更多帮助。这些测试用例不是行业标准实施,仅适用于那些正在寻求CC认证的人。这是一个利基市场。