我有一些敏感信息需要加密並存儲在Azure表存儲中。老實說,從一個天真的方法,使用相同的AES密鑰的所有值可能會是足夠的,因爲我無法接近方法有足夠的數據加密,以便有人做任何有意義的密碼分析。但是,我知道最好的做法是限制使用相同的對稱密鑰。Azure表存儲客戶端加密而不使用KeyVault
最近,Microsoft通過Azure KeyVault發佈了Azure表存儲的客戶端加密。它允許您生成RSA密鑰並將其存儲在KeyVault中,客戶端庫將爲表存儲中的每一行生成一個新的對稱密鑰,並使用RSA密鑰加密對稱密鑰。這是完美的,因爲它們都使用不同的密鑰,因此無法對密文進行差分密碼分析。這是特別好的,因爲他們的圖書館完成所有的管道工作,所有你需要做的就是從KeyVault獲取你的RSA密鑰,用EncryptPropertyAttribute
裝飾你指定的屬性,它處理所有其他事情。
其中存在着磨擦......我個人發現KeyVault有一種鈍角使用和管理。您必須使用powershell來設置您的應用程序和keyvault之間的oauth身份驗證,並且它看起來像是存儲單個RSA密鑰的巨大開銷。如果我們有數百個密鑰存儲,我可以想象它會更有用。
是否有任何方法可以使用Microsoft的所有客戶端加密代碼而不將RsaKey存儲在KeyVault中?
這是解決這個問題的好方法。一般來說,這就是Storage使用IKey接口的原因 - 您可以實現自定義密鑰算法,或者像您一樣執行某些操作,並連接到自定義密鑰服務。看起來你有一個你喜歡的解決方案,但如果你想提交一個問題[這裏](https://github.com/Azure/azure-sdk-for-net)或者直接在emgerner上發郵件給我microsoft dot com ,我們很樂意就任何KeyVault可用性問題提供反饋意見,並/或幫助您實現滿足您的需求! –