0

libgcrypt マニュアルから:

Libgcrypt はセキュア メモリと呼ばれる概念を使用します。これは機密データを格納するために確保されたメモリ領域です。このようなメモリは希少なリソースであるため、事前に固定サイズに設定する必要があります。さらに、ほとんどのオペレーティング システムには、セキュア メモリの使用方法に関する特別な要件があります。たとえば、アプリケーションを「setuid(root)」としてインストールして、そのようなメモリを割り当てられるようにする必要がある場合があります。[...] メモリ内のキーやその他の情報がディスクにスワップ アウトされないように保護し、使用済みメモリと解放済みメモリの自動上書きを有効にする必要がある場合は、[...]

この安全なメモリがどのように機能するかについて、私は少し混乱しています。
私はaes256-cbcファイル暗号化を行うソフトウェアを開発しており、IV + CIPHERTEXTのMAC(sha512を使用したhmac)も計算するため、機密情報を保存するにはセキュアメモリを使用する必要があります。
「セキュアメモリ」の概念について私が理解していないのは次のとおりです。

  1. 私がこれを持っているとしましょう: unsigned char *key; key = malloc(32);. ライブラリは、この変数がセキュア メモリを "malloced" にすることを望んでいることをどのように知ることができますか?
  2. 「解放されたメモリの自動上書き」は、それが消去されることを意味するfree(key)ので、ポインタを解放する前にメモリをmemsetする必要はありませんか?
4

1 に答える 1

1

コピーして貼り付けた同じページを読み続けてください: http://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html

ライブラリを初期化する方法の例があります。

一般に、セキュア メモリは mlock でロックされているため、ページ アウトできません。

ライブラリはもちろん、プログラムの他の場所での malloc 呼び出しを認識していません。使用方法については、そのドキュメントを確認してください。

于 2013-02-02T20:07:20.453 に答える