いやSecureStringをString経由せずbyte arrayにする方法が分からなかったんだろ。
Marshal.SecureStringToGlobalAllocAnsiしてからMarshal.Copy、Marshal.ZeroFreeGlobalAllocAnsi
複合終わったらbyte arrayはゼロ埋めしとけ。

これで複合時以外は平文のキーをメモリの上におかなくていい。
複合時にキーが平文でなければならないのは当たり前だから諦めろ。

理論上無理とかそういう茶々を気にするな。
初めから自分の精神安定の為にやってるんだろ。自覚しろ。
海千山千のクラッカーを相手にしなければならない状況にいるのか。よく考えろ。