2012-10-16 8 views
5

タイムパッドの暗号化を使用して2つのファイルをXORするプログラムがあります。キーファイルはそのような敏感な性質のものなので、私はキーファイルの痕跡をコンピュータのハードドライブに表示してセキュリティを脅かすことは望んでいません。C - RAMでプログラムを実行する

質問は、HDに残っている痕跡を避けるために、プログラムをRAMでどのように実行するのですか?または、フラッシュドライブからプログラムを実行すると、キーファイルのトレースがフラッシュドライブに含まれますか?以下は

は、キーファイルをプログラムで処理する方法である。これをグーグルで、それは私が必要なものであるように思われなかったとき、私はinram機能に出くわした

/* Check if keyfile can be opened. */ 
if((keyfile = fopen(argv[3], "rb"))== NULL) 
{ 
printf("Can't open keyfile.\n"); 
printf("Please enter a valid filename.\n"); 
printf("USAGE: OTP <source file> <output file> <keyfile>\n"); 
perror("Error"); 
return(1); 
}        

/* Get size of keyfile */ 
fstat(fileno(keyfile), &keybuf); 

/* Check if keyfile is the same size as, or bigger than the sourcefile */ 
if((keybuf.st_size) < (statbuf.st_size)) 
{ 
printf("Source file is larger than keyfile.\n"); 
printf("This significantly reduces cryptographic strength.\n"); 
printf("Do you wish to continue? (Y/N)\n"); 
fgets(buffer, 20, stdin); 
sscanf(buffer, "%c", &ans); 
if(ans == 'n' || ans == 'N') 
{ 
return (1); 
} 
if(ans == 'y' || ans == 'Y') 
{ 
    printf("Proceeding with Encryption/Decryption.\n"); 
    } 

/* Encrypt/Decrypt and write to output file. */ 
while(count < (statbuf.st_size)) 
{ 
key=fgetc(keyfile); 
data=fgetc(sourcefile); 

output=(key^data); 

fputc(output,destfile); 
count++; 
} 

/* Close files. */ 
fclose(keyfile); 
fclose(sourcefile); 
fclose(destfile); 

答えて

4

私はあなたには、いくつかの外部メディアからのキーファイルを読んでいると、あなたはOTPを含むI/Oバッファと一緒にディスクにスワップされているプロセスを心配していると仮定します。あなたはおそらく、平文が書かれていることにも等しく心配しています。あなたがPOSIXシステム(Linuxのような)を使っているなら、mlockmlockallの機能を調べるべきです。これらの呼び出しは、メモリページをRAMにロックし、ディスクへのスワップを禁止します。マニュアルページでは、これらの呼び出しのセキュリティ使用例を具体的に呼び出しています。もう1つの選択肢は、ファイルmmapです。マップされたページは外部メディアによってバックアップされるため、同じ保証が付いていませんが、スワップスペースに表示されることはありません。

+0

ありがとうございました!それはまさに私が必要としているようです。あなたの前提はかなり正しい。 – youjustreadthis

+0

もう一度、私は最近別のスレッドを持っています:http://stackoverflow.com/questions/12990214/is-this-usage-of-mlockall-correct#12990658そしてあなたが抱いていることと矛盾するような混乱した答えがありましたここに言った。おそらく見て、答えにあなたの意見を与えることができますか? @Geoff Reedy – youjustreadthis

関連する問題