日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 通信技術(shù) > 云通信與安全
[導(dǎo)讀] RSA算法是一種最廣為使用的“非對稱加密算法”,一般公鑰/私鑰長度越長,安全性就越好,計算也越復(fù)雜。百度云https改造中應(yīng)用了RSA 2048加解密算法,針對高計算復(fù)雜

RSA算法是一種最廣為使用的“非對稱加密算法”,一般公鑰/私鑰長度越長,安全性就越好,計算也越復(fù)雜。百度云https改造中應(yīng)用了RSA 2048加解密算法,針對高計算復(fù)雜度的RSA解密任務(wù),我們運用FPGA上的并行計算資源和定制化的數(shù)據(jù)通路,提供了高達(dá)45000QPS的解密能力(是CPU單線程吞吐率的75倍以上,媲美商用ASIC加解密卡的吞吐率),同時還將提供獨具特色的私鑰管理方案,令系統(tǒng)安全性得到了質(zhì)的提升。
 

軟件調(diào)用API執(zhí)行

編譯

執(zhí)行l(wèi)spci | grep -i Xilinx,輸出非空,證實FPGA已被正確透傳給虛擬機(jī)。

編譯驅(qū)動,進(jìn)入rsa-driver目錄,執(zhí)行make。

如提示“No such file or directory”,請修改Makefile中的KERNELDIR變量,使之指向正確的內(nèi)核編譯目錄,一般為/usr/src/kernels/$(uname -r)。

如編譯時提示符號重定義,請刪除源文件中的PDE_DATA、file_inode、kvalloc、kvfree等符號。

加載驅(qū)動,執(zhí)行insmod fpga_drive.ko。

檢查/dev/fpga0的權(quán)限是否為0666,如過不是,請執(zhí)行chmod 666 /dev/fpga0。

在openssl系統(tǒng)engine目錄創(chuàng)建到rsa-api/output/so/libfpga_rsa_cpp.so的軟鏈接,即執(zhí)行l(wèi)n -s /path/to/rsa-api/so/libfpga_rsa_cpp.so /usr/lib64/openssl/engines/libfpga_rsa_cpp.so。

通過openssl標(biāo)準(zhǔn)engine接口使用RSA加速功能,在正確加載并初始化engine后即可通過RSA_private_encrypt、RSA_private_decrypt進(jìn)行RSA私鑰加解密。

FPGA支持密鑰長度在2048 bits以下的RSA私鑰加解密。如給定密鑰長度超出此范圍,engine會轉(zhuǎn)交CPU計算,此時性能等同于直接使用CPU處理。

#include ‹openssl/rsa.h›
#include ‹openssl/engine.h›
#include ‹openssl/err.h›

OpenSSL_add_all_algorithms();
ERR_load_crypto_strings();
ENGINE_load_dynamic();

/* load engine */
ENGINE *engine = ENGINE_by_id("fpga_rsa_cpp");
if (engine == NULL) {
LOG(WARNING) ‹‹ "Could not Load fpga_rsa_cpp Engine!";
return 1;
}
LOG(INFO) ‹‹ "fpga_rsa_cpp Engine successfully loaded";

/* init engine */
int init_ret = ENGINE_init(engine);
int set_ret = ENGINE_set_default_RSA(engine);
LOG(INFO) ‹‹ "engine name = " ‹‹ ENGINE_get_name(engine);
LOG(INFO) ‹‹ "init_ret = " ‹‹ init_ret;
LOG(INFO) ‹‹ "set_ret = " ‹‹ set_ret;

if ((init_ret != 1) || (set_ret != 1)) {
LOG(WARNING) ‹‹ "Failed to init engine";
return 1;
}

/* use engine */
RSA_private_decrypt(flen, from, to, rsa, padding);

性能測試

qps

執(zhí)行openssl speed rsa2048 -engine fpga_rsa_cpp -mulTI 36,在"sign/s"一欄中可以看到qps。正常情況應(yīng)在40000/s以上。

latency

執(zhí)行openssl speed rsa2048 -engine fpga_rsa_cpp -mulTI 1,在"sign"一欄中可以看到latency。正常情況應(yīng)在700us左右。

RSA私鑰解密QPS對比

FPGA解決方案與使用雙路Intel Xeon E5-2620 v2服務(wù)器(超線程開啟,共24核)進(jìn)行純CPU計算相比,性能優(yōu)勢十分明顯,如下圖所示。當(dāng)RSA密鑰長度為512 bits、1024 bits和2048 bits時,前者的私鑰解密QPS分別是后者的2.13、4.52和9.36倍,latency僅為后者的89%、50%和27%。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉