《2018年基于深度学习的SSLTLS证书验证程序的自动化测试.pdf》由会员分享,可在线阅读,更多相关《2018年基于深度学习的SSLTLS证书验证程序的自动化测试.pdf(19页珍藏版)》请在三个皮匠报告上搜索。
1、基于深度学习的基于深度学习的SSL/TLS证书验证程序的自动化测试证书验证程序的自动化测试Deep Learning-based Automated Testing of Certificate Verification in SSL/TLS Implementations目录背景相关工作解决的问题系统设计实验背 景身份验证=证书有效!保密性完整性网络通信安全=SSL/TLSHTTPS=SSL/TLS+HTTP什么是证书?-BEGIN CERTIFICATE-MIIEOzCCA6SgAwIBAgISESHzPTkKg5YmQA9zgj5zezCYMA0GCSqGSIb3DQEBBQUAMIG9
2、MSkwJwYDVQQFEyBmRkhxOGItaXRhenRHYURhT1BwNGFSUnViUk9xcGRXZzETMBEGA1UECxMKR1QyMzc1MDkxNjExMC8GA1UECxMoU2VlIHd3dy5yYXBpZHNzbC5j HSMEGDAWgBSWrfqwW7mDZCp2whyKadpC3P79KDANBgkqhkiG9w0BAQUFAAOBgQAOwxx8TYeDFyuXy7aWTxo3KKk584IvcUKKgfViTunuc4aF+gAR7eVwM3qSxnFjV6OvakjI7NU7JOVs9zF/KWo/FwN8gz6/bkCCu4iHq/08T6OboPA
3、W/69NbXSSDezJuToGiaP2czu0czuIraadT+mrtQLsyZJA0L1plwmgDZ9pLQ=-ENDCERTIFICATE-SSL/TLS 协议的实现程序说“该证书有效”=该证书有效?现有许多开源的程序帮助你做复杂的证书校验过程背 景证书校验规则SSL/TLS协议的实现程序的来源:任何失误都可能引入安全风险规则文档编码编码编码编码编码编码A:模糊测试+差分测试Q:怎么测试这些SSL/TLS 协议的实现程序的正确性呢?Q:怎么生成测试证书?Mucert(FSE/ESEC 2015)(Yuting Chen et al.)GuidedDifferentialTestin
4、gofCertificateValidationinSSL/TLSImplementationsFrankencert(S&P 2014)(Chad Brubaker et al.)UsingFrankencerts forAutomatedAdversarialTestingofCertificateValidationinSSL/TLSImplementation随机选择,组合证书1证书2证书3证书4一个新的证书证书3直到得到更高的代码覆盖率随机修改证书1证书2相关工作引入深度学习方法怎么减少、消除?太多的随机性解决的问题新的框架.我们提出了DRLgencert,第一个将深度学习应用于SS
5、L/TLS证书验证模块的自动化测试框架.新的技术.我们为X.509证书设计了新的特征提取方法,更多的证书内容修改操作框架实现及实验发现.我们使用了多个广泛使用的SSL/TLS协议的现实程序,对DRLgencert进行了实验评估。实验结果分析表明DRLgencert是有效;使用深度学习来指导证书的变异是可行的我们的工作系统设计差分测试证书深度强化学习模糊测试证书库测试报告系统概述GnuTLSMatrixSSLMbedTLSNSSOpenSSLWolfSSL校验结果测试证书-2-2-4-71-10证书差分测试深度强化学习系统流程测试了6个SSL/TLS 协议的实现程序收集了181,900个证书生成
6、了181,900个新的证书84,661 个新证书能触发差分测试验证结果异常.总共发现23项代码实现缺陷实验差分测试结果示例23项不当的证书验证代码实现1 if(psBrokenDownTimeCmp(&beforeTime,&timeNowLinger)0)2 3/*beforeTime is in future.*/4 cert-authFailFlags|=PS_CERT_AUTH_FAIL_DATE_FLAG;5 6 else if(psBrokenDownTimeCmp(&timeNow,&afterTimeLinger)0)7 8/*afterTime is in past.*/9
7、cert-authFailFlags|=PS_CERT_AUTH_FAIL_DATE_FLAG;10 1/*The default value of allowed mismatch in timesin X.509 messages and the local clock.Thedefault value of 24 hours is mostlyequivalent to old MatrixSSL behavior ofignoring hours,minutes and seconds in X.509date comparison.*/2#define PS_X509_TIME_LINGER(24*60*60)3.4 memcpy(&timeNowLinger,&timeNow,sizeoftimeNowLinger);5 err=psBrokenDownTimeAdd(&timeNowLinger,PS_X509_TIME_LINGER);示例MatrixSSL中有关有效期校验的代码片段