強(qiáng)加密是AWS的四大特性之一,談到這一特性,我們不得不提到TLS(之前叫做SSL)加密協(xié)議。TLS在AWS上有廣泛的使用,所有AWS的API,所有面向客戶的服務(wù)包括彈性負(fù)載均衡(ELB)、AWS Elastic Beanstalk、Amazon CloudFront、Amazon S3、Amazon RDS和 Amazon SES中都有使用。
過去的十八個(gè)月當(dāng)中TLS協(xié)議經(jīng)歷了許多重大變動(dòng)。印象深刻的是我們認(rèn)識到一些TLS算法缺陷比之前所想的要嚴(yán)重的多,一些安全研究也發(fā)現(xiàn)了TLS在實(shí)施過程中的問題。整體來說,這些開發(fā)工作都有取得了積極的進(jìn)步,提升了安全性,但在這過程中也發(fā)生了許多費(fèi)時(shí)費(fèi)力的事情,比如軟件升級和證書rotation這些。
過程中遇到的一部分挑戰(zhàn)在于,TLS協(xié)議自身以及所有的可選擴(kuò)展都已經(jīng)變得非常復(fù)雜。以O(shè)penSSL為例,總共50萬行代碼中就有7萬行代碼跟TLS相關(guān)。通常來說,每一行代碼都有出錯(cuò)的風(fēng)險(xiǎn),大批量的代碼無疑將為代碼審核、安全審核、性能和效率都會造成一定影響。
為了簡化TLS,讓每個(gè)人都能用到強(qiáng)加密,我們很高興的向外界公布全新開源的TLS協(xié)議:s2n。s2n是一個(gè)輕量級的庫,注重快速和簡化。s2n去掉了不常用的選項(xiàng)和擴(kuò)展,如今只有大約6000多行代碼。于是我們會發(fā)現(xiàn),s2n的檢視非常輕松,而且s2n還經(jīng)過了三個(gè)外部的安全評估和滲透測試,這一方面我們還將繼續(xù)深入。
未來的幾個(gè)月中,我們會把s2n集成到一些AWS服務(wù)當(dāng)中。TLS是一個(gè)標(biāo)準(zhǔn)化的協(xié)議,而s2n實(shí)現(xiàn)了我們(AWS)用到的那些功能,所以你無需在自己的程序中做出任何改動(dòng),所有東西都還將繼續(xù)保持互操作性。
如果你對s2n感興趣或者想為s2n做點(diǎn)什么,你可以在s2n GitHub庫中找到源代碼、文檔、提交和更改信息。
s2n并不是為了取代OpenSSL,我們還將繼續(xù)為Linux基金會的核心基礎(chǔ)設(shè)施計(jì)劃(Core Infrastructure Initiative)提供支持。 OpenSSL提供了兩個(gè)主要的庫:“libssl”實(shí)現(xiàn)TLS, “libcrypto”是一個(gè)通用的加密庫。你可以把s2n看做是“libssl”這部分。
為什么叫“s2n”這么個(gè)名字呢?s2n是“signal to noise”的縮寫,它把有意義的信息轉(zhuǎn)通過加密偽裝轉(zhuǎn)換成無意義的隨機(jī)噪音。