上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

黄智聪-基于机器学习的密码学误用的检测(22页).pdf

编号:83966 PDF 22页 2.25MB 下载积分:VIP专享
下载报告请您先登录!

黄智聪-基于机器学习的密码学误用的检测(22页).pdf

1、基于机器学习的密码学误用检测黄智聪阿里巴巴密码学误用相关背景Combination of bugs1.All 0 IV2.Allowing 0-length password3.No timestamp check金融应用领域 Top 2 漏洞科技应用领域 Top 1 漏洞监管合规密码学常见误用场景过时的算法 例如:DES AES/ECB MD5静态秘密 例如:硬编码密钥 静态 IV、Salt 时间弱密钥 例如:RSA 1024 DH 1024 EC 160不规范编码 例如:PBE 密钥衍生小于1000轮迭代 RFC 8018简化的 SSL 验证流程RFC 8018 https:/tools.

2、ietf.org/html/rfc8018,Section 4.2相关工作与挑战工作工作方法方法规则数规则数过时算法过时算法静态秘密静态秘密弱密钥弱密钥不规范编码不规范编码可解释性可解释性可扩展性可扩展性误报误报CryptoLint CCS13静态,规则6CRYSL ECOOP18静态,规则(严格)23CryptoGuard CCS19静态,规则16Coverity静态,规则6 1?CRYLOGGER SP21动态,规则26SO1 SP17静态,模型-SO2 Usenix19静态,模型-1 Count from the Coverity manual.*每个工作对规则的细化程度不一样,规则数不

3、能完全代表覆盖的错误范围大小*每个工作的误报率和召回率不一样,整体来说,越前沿的工作在论文中展示的准确率越好*可扩展性:能否在不改动软件的情况下添加新的检测类型基于规则的检测器Broken CryptoKeyGenerator kg=KeyGenerator.getInstance(AES);SecretKey key=kg.generateKey();String plaintext=MY_MESSAGE;Cipher cipher=Cipher.getInstance(AES);/Cipher cipher=Cipher.getInstance(AES/ECB/PKCS5Padding);

4、cipher.init(Cipher.ENCRYPT_MODE,key);byte ciphertext=cipher.doFinal(plaintext.getBytes();KeyGenerator kg=KeyGenerator.getInstance(AES);SecretKey key=kg.generateKey();String plaintext=MY_MESSAGE;Cipher cipher=Cipher.getInstance(AES/CBC/PKCS5Padding);cipher.init(Cipher.ENCRYPT_MODE,key);byte ciphertex

5、t=cipher.doFinal(plaintext.getBytes();CrySL规定 Cipher 类的构造和使用规则(白名单)getInstance init doFinalTypestateTypestate Analysis Analysis(finite-state machine)getInstance 的算法参数必须在预定义的集合里“AES/CBC/PKCS5Padding”,“ElGamal/ECB/PKCS1Padding”On-demand pointer analysis pointer analysis(backward)提取参数源值处理所有 getInstance

6、 和 init 重载getInstance(_),getInstance(_,_)init(_,_),init(_,_,_)KeyGenerator kg=KeyGenerator.getInstance(AES);SecretKey key=kg.generateKey();String plaintext=MY_MESSAGE;Cipher cipher=Cipher.getInstance(AES);/Cipher cipher=Cipher.getInstance(AES/ECB/PKCS5Padding);cipher.init(Cipher.ENCRYPT_MODE,key);by

7、te ciphertext=cipher.doFinal(plaintext.getBytes();Static Program SlicingStatic Program SlicingSlicing Criterion:javax.crypto.Cipher.getInstance(string)往前追溯影响到该语句 string 参数的所有语句和变量(def-use analysisdef-use analysis)不同点:不关心后续的 init 和 doFinalE.g.,用 ElGamal 密钥去 init AES CipherCryptoGuard 仅检测安全问题,不关心非安全性b

8、ugCryptoGuardChallenge:误报 vs 漏报byte k=obj.getKey(“UTF-8”);SecretKey key=new SecretKeySpec(k,“AES”);Cipher cipher=Cipher.getInstance(AES/CBC/PKCS5Padding);IvParameterSpec ivSpec=new IvParameterSpec(iv);cipher.init(Cipher.ENCRYPT_MODE,key,ivSpec);byte k=obj.decodeKey(“YWJjZGVmanNrYWxkZWtkYQ=”);SecretK

9、ey key=new SecretKeySpec(k,“AES”);Cipher cipher=Cipher.getInstance(AES/CBC/PKCS5Padding);IvParameterSpec ivSpec=new IvParameterSpec(iv);cipher.init(Cipher.ENCRYPT_MODE,key,ivSpec);静态分析:进入函数内部,继续追踪万一 obj 是某个外部类,未被打包,或者为了性能考虑减少分析深度CryptoGuard 启发式做法:如果 class.method(KEY)出现在一个赋值语句中,则忽略 KEY如果出现在非赋值语句中,则需要

10、考虑参数是否为 constantFalse negative:右框代码不会被报告论文 Argument:没有完美的分析器,实际项目检测表现很好,并未发现类似这种 False negatives性能 vs 精准:实际中可能为了解决这个问题而付出的运算代价很大基于机器学习的检测器ML协助程序分析相关工作工作工作任务任务数据集数据集程序特征程序特征模型模型注意力分配点注意力分配点CODE-NN ACL16源码功能描述66015 份 Stack Overflow 的自然语言LSTM+AttentionLSTM单元的hidden state(对应一个标题单词)Gemini CCS17固件代码漏洞代码?固

11、件中的漏洞OpenSSL33045 个固件镜像154份漏洞代码控制流图Graph Embedding+Siamese-SO1 SP17源码密码学安全性3834 份 Stack Overflow 代码自然语言SVM-VulDeePeckerNDSS18源码漏洞NVD 840 个标记程序SARD 9851个标记程序自然语言双向 LSTM-Yakura et al CODASPY18二进制文件病毒类型VX Heaven:147803个文件,542 种病毒二进制图像CNN+Attention二进制区域Code2vecPOPL19源码函数名Github 10072 个Java项目语法树路径NN+Atte

12、ntion语法树路径SO2 Usenix19源码密码学安全性16000 份 Stack Overflow 代码程序数据依赖图Graph Embedding+Siamese+FC-ML 检测器的关键模块程序特征工程模型设计与实现数据集程序向量简单的中间代码形式程序控制流结构语句类型单词常量 One-hot encoding源码数据集Stack Overflow 代码 Usenix19 JAR、APK 数据集非标注数据程序特征图 是否安全准确率,可解释性Stack Overflow Considered Harmfulpublic void A(String x)String k=“my_key”

13、;SecretKeySpec key=SecretKeySpec(k.getBytes(),“AES”);public void B(String x)byte kBytes=new byte16;SecureRandom r=new SecureRandom();r.nextBytes(kBytes);SecretKeySpec key=SecretKeySpec(kBytes,“AES”);任务任务:源码安全性分类源码安全性分类文本分类特征提取:tf-idf 维护一个源码词条的字典不考虑源码的程序结构模型:SVM with linear kernel数据集:3834 代码样例(手动标注)C

14、ross-validation 准确率:90.4%Stack Overflow Considered Helpful不安全模式public IvParameterSpec A()String secretKey=“0123456789abcdef”;String iv=“fedcba9876543210”;return new IvParameterSpec(iv.getBytes();安全模式public IvParameterSpec B()byte iv=new byte16;new SecureRandom().nextBytes(iv);return new IvParameterS

15、pec(iv);WALA Slicer 1 生成 前向/后向 程序切片:每个方法生成一个对应的 程序依赖图(PDG)从种子语句宽搜提取出指定深度的子图1 http:/ https:/ Overflow Considered HelpfulPDG 特征工程程序结构和统计数据程序结构和统计数据指令类型(one-hot encoding)字符串和常量个数结点度数邻居结点方法名和常量方法名和常量三层神经网络输入:常量 One-hot encoding隐藏层输出:包含改常量的 Java 类型 One-hot encoding提取的特征向量:隐藏层神经元Stack Overflow Considered

16、HelpfulPDG Embedding:Structure2vec检测工具检测工具 HintJCryptHintJCryptencryptionKey=02345;cipher=Cipher.getInstance(AES/CBC/PKCS5Padding);key=new SecretKeySpec(encryptionKey.getBytes(UTF-8),AES);cipher.init(Cipher.ENCRYPT_MODE,key,new IvParameterSpec(encryptionKey.getBytes(UTF-8);dec1=cipher.doF

17、inal(message);byte encoded=Base64Encoder.encode(dec1);System.out.println(prettyPrint(encoded);break;API 用法是否安全?18:r4.SecretKeySpec:void(r2,r3)17:r3=”AES”18:r4=new SecretKeySpec18:r2=r1.()16:r1=“0123456789abcdef”0.480.540.120.1916:String KEY=“0123456789abcdef”;17:String ALGO=“AES”;18:SecretKeySpec sk

18、=new SecretKeySpec(KEY.getBytes(),ALGO);数据+控制流图JAR、APK、源码检测样例与报告反编译工具部分编译器检测效果Usenix19HintJCryptSO 源码(函数内)0.970.997SO 源码(跨函数)0.9790.988CryptoMine0.9370.967CryptoAPI-Bench0.9580.973SO 源码源码-1SO 源码源码-2CryptoMineCryptoAPI-BenchSize97145#Secure/#Insecure6219/101136024/10308435/36230/115TopTop 5 5 MisusesMisuses弱哈希算法弱加密算法硬编码密钥旧 TLS 版本硬编码 IV

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(黄智聪-基于机器学习的密码学误用的检测(22页).pdf)为本站 (小时候) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
相关报告
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部