簡體   English   中英

使用Linux內核加密子系統的arc4算法

[英]using arc4 algorithm of linux kernel crypto subsystem

我正在嘗試使用“ arc4”算法來加密來自模塊的任意數據流。 但是我對應該如何處理一無所知。實現在<crypto/arc4.c>

$find . -type f -name '*.[ch]' -exec grep 'EXPORT_SYMBOL' {} \; | grep
'rc4'

什么也沒返回。 所以我想沒有外部接口

static void arc4_crypt(struct crypto_tfm *tfm, u8 *out, const u8 *in). 

寄存器功能定義為

static int __init arc4_init(void)
 {
         return crypto_register_alg(&arc4_alg);
 }

並且有一個struct crypto_alg的靜態實例。

通過這些提示,我得出的結論是,我需要一個更高級別的接口來訪問此算法。

在我看來,唯一相關的功能是:

EXPORT_SYMBOL_GPL(crypto_alloc_tfm);

來自<crypto/api.c>

void *crypto_alloc_tfm(const char *alg_name,
                       const struct crypto_type *frontend, u32 type, u32 mask)

它返回void * ,這是我的第一個關注點。

也來自<crypt/api.c>

crypto_alloc_tfm()將首先嘗試查找已加載的算法。 如果失敗,並且內核支持動態可加載模塊,則它將嘗試加載相同名稱或別名的模塊。 如果失敗,它將向所有已加載的加密管理器發送查詢以動態構建算法。 在該算法上獲取引用計數,該引用計數隨后與新轉換相關聯。

返回的轉換為不確定類型。 大多數人應該使用更具體的分配功能之一,例如crypto_alloc_blkcipher。

但是我找不到任何特定的crypto_alloc_*將提供arc4算法。

第二個關注點:

struct crypto_type in看起來很難手工實例化。

最后,如果得到一個tfm實例,我如何使用它來進行實際加密?

對於用戶空間程序,您必須使用“ CryptoDev for Linux”,這是一個內核模塊,使您可以通過/ dev / crypto使用crypto API。 參見http://www.logix.cz/michal/devel/cryptodev/ 您可以下載示例http://www.logix.cz/michal/devel/cryptodev/cryptodev-demo1.c

查看您的內核源文檔./kernel/documentation/crypto/

對於內核代碼,請看一下: http : //www.linuxjournal.com/article/6451?page=0,0

它說明了如何使用加密API時,一些內核代碼需要對數據進行加密。

許多內核模塊已經使用crypto API,在內核源文件中搜索單詞“ crypto_”,還搜索stackoverflow ... 如何在Linux內核2.6中使用CryptoAPI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM