日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux Kernel aarch64 Crypto原理和框架介绍

發布時間:2025/3/21 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux Kernel aarch64 Crypto原理和框架介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈


相關推薦:
The Armv8 Cryptographic Extension在Linux Kernel中的應用
Armv8 Cryptographic Extension介紹
Linux kernel內核調用crypto算法的方法
Linux Kernel aarch64的ARM-CE aes-ecb的底層代碼解析


說明: 在無特別的說明下,本文講述得都是armv8-aarch64體系、linux kernel 4.14 arm64軟件環境!

文章目錄

        • 1、Linux的aarch64 crypto配置介紹
        • 2、Linux的aarch64 crypto的總結:
          • (1)、開啟ARM-CE
          • (2)、開啟ARM-NEON
          • (3)、純軟實現
        • 3、比較硬件實現和純軟實現

1、Linux的aarch64 crypto配置介紹

開啟ARM-CE或ARM-Neon,編譯aes-glue.c文件,aes-glue.c是Linux kernel crypto aarch32/64下ARM-CE或ARM-NEON加解密調用的頂級文件。

  • CONFIG_CRYPTO_AES_ARM64_CE_BLK
  • CONFIG_CRYPTO_AES_ARM64_NEON_BLK

注意,如果開啟的是ARM-CE,則加入USE_V8_CRYPTO_EXTENSIONS宏定義

在aes-glue.c中,使用USE_V8_CRYPTO_EXTENSIONS宏控制的底層aes的鏈接.

#ifdef USE_V8_CRYPTO_EXTENSIONS #define MODE "ce" #define PRIO 300 #define aes_setkey ce_aes_setkey #define aes_expandkey ce_aes_expandkey #define aes_ecb_encrypt ce_aes_ecb_encrypt #define aes_ecb_decrypt ce_aes_ecb_decrypt #define aes_cbc_encrypt ce_aes_cbc_encrypt #define aes_cbc_decrypt ce_aes_cbc_decrypt #define aes_ctr_encrypt ce_aes_ctr_encrypt #define aes_xts_encrypt ce_aes_xts_encrypt #define aes_xts_decrypt ce_aes_xts_decrypt MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions"); #else #define MODE "neon" #define PRIO 200 #define aes_setkey crypto_aes_set_key #define aes_expandkey crypto_aes_expand_key #define aes_ecb_encrypt neon_aes_ecb_encrypt #define aes_ecb_decrypt neon_aes_ecb_decrypt #define aes_cbc_encrypt neon_aes_cbc_encrypt #define aes_cbc_decrypt neon_aes_cbc_decrypt #define aes_ctr_encrypt neon_aes_ctr_encrypt #define aes_xts_encrypt neon_aes_xts_encrypt #define aes_xts_decrypt neon_aes_xts_decrypt MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 NEON"); MODULE_ALIAS_CRYPTO("ecb(aes)"); MODULE_ALIAS_CRYPTO("cbc(aes)"); MODULE_ALIAS_CRYPTO("ctr(aes)"); MODULE_ALIAS_CRYPTO("xts(aes)"); #endif

在Kconfig中可以看出,在開啟CONFIG_CRYPTO_AES_ARM64_CE_BLK或CONFIG_CRYPTO_AES_ARM64_NEON_BLK,還需要再次選擇底層的算法。

config CRYPTO_AES_ARM64_CE_BLKtristate "AES in ECB/CBC/CTR/XTS modes using ARMv8 Crypto Extensions"depends on KERNEL_MODE_NEONselect CRYPTO_BLKCIPHERselect CRYPTO_AES_ARM64_CEselect CRYPTO_AES_ARM64select CRYPTO_SIMD config CRYPTO_AES_ARM64_NEON_BLKtristate "AES in ECB/CBC/CTR/XTS modes using NEON instructions"depends on KERNEL_MODE_NEONselect CRYPTO_BLKCIPHERselect CRYPTO_AES_ARM64select CRYPTO_AESselect CRYPTO_SIMD

如選擇ARM-CE的aes,除了打開CONFIG_CRYPTO_AES_ARM64_CE_BLK,還需要再次開啟CONFIG_CRYPTO_AES_ARM64_CE,編譯aes-ce-cipher.S,該文件實現了ARM-CE的底層邏輯;

obj-$(CONFIG_CRYPTO_AES_ARM64_CE) += aes-ce-cipher.o CFLAGS_aes-ce-cipher.o += -march=armv8-a+crypto

如選擇ARM-NEON的aes,除了打開CONFIG_CRYPTO_AES_ARM64_NEON_BLK,不需要在額外增加別的宏了,因為在aes-neon.S中已經實現了ARM-NEON的底層邏輯;

obj-$(CONFIG_CRYPTO_AES_ARM64_NEON_BLK) += aes-neon-blk.o aes-neon-blk-y := aes-glue-neon.o aes-neon.o

2、Linux的aarch64 crypto的總結:

(1)、開啟ARM-CE

如果開啟ARM-CE,則需要打開:
CONFIG_CRYPTO_AES_ARM64_CE_BLK
CONFIG_CRYPTO_AES_ARM64_CE

接口實現:aes-glue.c
底層實現:aes-modes.S

接口形式:

#define MODE "ce" (同步) .cra_name = "__ecb-aes-" MODE, .cra_name = "__cbc-aes-" MODE, .cra_name = "__ctr-aes-" MODE, .cra_name = "__xts-aes-" MODE, (異步) .cra_driver_name = "ecb-aes-" MODE, .cra_driver_name = "cbc-aes-" MODE, .cra_driver_name = "ctr-aes-" MODE, .cra_driver_name = "xts-aes-" MODE,
(2)、開啟ARM-NEON

如果開啟ARM-NEON,則需要打開:
CONFIG_CRYPTO_AES_ARM64_NEON_BLK

接口實現:aes-glue.c
底層實現:aes-neon.S

接口形式:

#define MODE "neon" (同步) .cra_name = "__ecb-aes-" MODE, .cra_name = "__cbc-aes-" MODE, .cra_name = "__ctr-aes-" MODE, .cra_name = "__xts-aes-" MODE, (異步) .cra_driver_name = "ecb-aes-" MODE, .cra_driver_name = "cbc-aes-" MODE, .cra_driver_name = "ctr-aes-" MODE, .cra_driver_name = "xts-aes-" MODE,
(3)、純軟實現

如果以上都不開,則走純軟實現

接口實現:
linux/crypto$ ls ecb.c cbc.c ctr.c xts.c
cbc.c ctr.c ecb.c xts.c

接口形式:

.name = "ecb", .name = "cbc", .name = "ctr", .name = "xts",

3、比較硬件實現和純軟實現


其實如果是芯片SOC的實現,方法也類似:

總結

以上是生活随笔為你收集整理的Linux Kernel aarch64 Crypto原理和框架介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲熟女www一区二区三区 | av资源站最新av | 国产丰满农村老妇女乱 | 免费一级黄 | 日本成人午夜视频 | 成人欧美一区二区三区黑人 | 91久久精品一区二区三区 | 中文字幕婷婷 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲国产999| 欧美黄色大片网站 | 欧美精品乱码视频一二专区 | 91精品久久久久久 | 欧美日韩免费看 | 成人精品电影 | 亚洲国产精品久久AV | 香蕉网av| 88av.com| 久久久性色精品国产免费观看 | 校园伸入裙底揉捏1v1h | 999xxxx| 撸啊撸在线视频 | 国产精品午夜福利视频234区 | 欧美国产成人精品一区二区三区 | 波多av| 成年人网站免费在线观看 | www狠狠干 | 成人黄色短视频在线观看 | 中文字幕在线免费观看视频 | 日本人妻熟妇久久久久久 | 欧美爱爱一区二区 | 日本一区二区高清视频 | 久久影院午夜 | 少妇人妻一区二区三区 | 性日韩 | 久久久www成人免费无遮挡大片 | 免费精品在线 | 成人在线观 | 欧美日韩一区二区三区电影 | 狠狠躁夜夜躁av无码中文幕 | 香蕉视频免费看 | 美景之屋电影免费高清完整韩剧 | 性色浪潮| 亚洲熟妇无码一区二区三区导航 | 欧美另类在线播放 | 精品91av | 永久免费av网站 | 操碰97| 免费的一级黄色片 | 欧洲一区二区三区在线 | 91免费视频网| 亚洲高潮无码久久 | 四虎影库在线播放 | 男女又爽又黄 | 一区二区三区四区免费观看 | 极品尤物一区二区三区 | 我的公把我弄高潮了视频 | 91香蕉视频在线 | 超碰1000 | 国产又黄又大又粗的视频 | 毛片在线观看网站 | 熟女一区二区三区视频 | 国产欧美一区二区三区国产幕精品 | 亚洲国产传媒 | 欧美亚洲少妇 | 日韩a级大片 | 一区二区视频播放 | 国产中文欧美日韩在线 | 国产丰满果冻videossex | 老熟妇高潮一区二区三区 | 国产精品久久久久影院老司 | 国产精品30p | aa片在线观看视频在线播放 | 欧美高清视频一区 | 国产伦精品一区二区三区免费迷 | 国产十八熟妇av成人一区 | 男人用嘴添女人下身免费视频 | 久久国产福利一区 | 美女福利视频导航 | 日本大尺度吃奶做爰久久久绯色 | 国产欧美一区二区三区白浆喷水 | 亚洲论理| 伊人网综合视频 | 精品熟妇一区二区三区 | 欧美亚洲日本 | 女性女同性aⅴ免费观女性恋 | 欧洲精品久久 | 青青青手机视频在线观看 | h网站在线看 | 国产日韩欧美中文 | 少妇人妻真实偷人精品视频 | 日韩精品 欧美 | 99精品久久久久 | 免费的黄网站 | 日韩一级免费毛片 | 粉嫩av一区二区夜夜嗨 | 免费观看视频在线观看 | 日本少妇性高潮 | 免费国产区 |