斯坦福Javascript加密库(托管在GitHub上)是斯坦福计算机安全实验室的一个项目,旨在构建一个安全、强大、快速、小巧、易于使用的跨浏览器Javascript密码库。
SJCL易于使用:只需运行sjcl.crypt(";password";,";data";)加密数据,或运行sjcl.deccrypt(";password";,";Encrypted-data";)进行解密。对于具有更复杂安全需求的用户,有一个功能更强大的API,如文档中所述,并在此演示页面中进行了说明。
SJCL规模虽小,但实力雄厚。该库的缩小版压缩不到6.4KB,但它发布了令人印象深刻的速度结果。(TODO:创建一个基准页面。)。
SJCL是安全的。它使用128位、192位或256位的行业标准AES算法;SHA256哈希函数;HMAC验证码;PBKDF2密码加强器;CCM和OCB认证加密模式。同样重要的是,默认参数是合理的:SJCL会将您的密码加强1000倍,并对其进行加密以防止彩虹表,并且它会对其发送的每条消息进行身份验证以防止其被修改。我们相信SJCL提供了在Javascript中实际可用的最好的安全性。(不幸的是,这不像在桌面应用程序中那样强大,因为完全防止代码注入、恶意服务器和旁路攻击是不可行的。)。
SJCL是跨浏览器的。我们希望如此。我们已经在安全实验室电脑上的所有安装浏览器(包括Mac、Linux和Windows上的各种版本的Internet Explorer、Chrome、Firefox、Safari和Opera)以及Rhino引擎上对它进行了测试,但仍需要进行更全面的测试。我们在此站点上有一个测试页;如果它报告任何故障,请报告问题。
SJCL开业了。您可以在BSD许可证或GNU GPL 2.0版或更高版本下使用、修改和重新分发它。
SJCL还支持椭圆曲线加密(ECDH公钥加密和ECDSA签名)。如果要使用它,则必须编译您自己版本的sjcl.js。
“SJCL”的作者是斯坦福大学的艾米丽·斯塔克、迈克·汉堡和丹·博尼。特别感谢Aldo Cortesi和Roy Nicholson报告了SJCL早期版本中的错误。一份关于SJCL的白皮书(也是由Emily Stark、Mike Hamburg和Dan Boneh撰写)在2009年年度计算机安全应用会议上发表。