《黄智聪-基于机器学习的密码学误用的检测(22页).pdf》由会员分享,可在线阅读,更多相关《黄智聪-基于机器学习的密码学误用的检测(22页).pdf(22页珍藏版)》请在三个皮匠报告上搜索。
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