시간 패드 암호화를 사용하여 두 개의 파일을 XOR하는 프로그램이 있습니다. 키 파일은 매우 민감한 특성을 지니고 있기 때문에 키 파일의 흔적이 컴퓨터의 하드 드라이브에 나타나서 보안을 손상시킬 수 있습니다.C - RAM에서 프로그램 실행
질문은 어떻게 RAM에서 프로그램을 실행하여 HD에 흔적이 남지 않았는지 확인하는 것입니다. 또는 플래시 드라이브에서 프로그램을 실행하면 키 파일의 흔적이 플래시 드라이브에 포함됩니까? 다음은
는 키 파일이 프로그램에서 처리하는 방법입니다 :이 인터넷 검색을하지만 내가 필요로 무엇을 할 것 같지 않았다 때 내가 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);
.
감사합니다. 그게 정확히 내가 원하는 것 같다. 귀하의 가정은 아주 옳았습니다. – youjustreadthis
안녕하세요, 최근에 또 다른 스레드가 있습니다 : http://stackoverflow.com/questions/12990214/is-this-usage-of-mlockall-correct#12990658 그리고 당신이 뭘했는지 모순 된 것처럼 보이는 혼란스러운 대답이 있습니다. 여기에 말했다. 당신은 아마도 한 번 둘러보고 대답에 대한 당신의 의견을 말할 수 있습니까? @ Geoff Reedy – youjustreadthis