delphi – 在WinHTTP中,应该使用什么设置来传递Common Criteria TLS_EXT1.1测试

我的团队正在研究用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消息后,从服务器发送乱码消息,并验证客户端是否拒绝连接.

应该做些什么来确保剩下的测试通过?

最佳答案 前言:我是一名经过认证的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认证的人.这是一个利基市场.

点赞