²é¿´: 876  |  »Ø¸´: 0

Çá̾12321

гæ (³õÈëÎÄ̳)

[ÇóÖú] AES CPA

±àдÁËAES¼ÓÃÜËã·¨µÄÀûÓúºÃ÷¾àÀëÄ£Ð͵ÄCPA¹¥»÷´úÂ룬ÏÖÔÚ½ö¿ÉÒÔ¹¥»÷³öµÚÒ»£¬µÚÎ壬µÚ¾Å£¬µÚÊ®Èý×Ö½ÚµÄÕýÈ·ÃÜÔ¿£¨¹¥»÷λÖÃΪ×îºóÒ»ÂÖSºÐµÄÊäÈ룩£¬ÆäÓà×Ö½ÚµÄÃÜÔ¿ÓÐ´í£¬ÇóÖú´óÉñµ½µ×ÄÄÀï³ö´í£¬¸ÄÁ˺ü¸ÌìÁË£¬Íò·Ö¸Ðл~È«²¿´úÂ븽ÉÏ£¬ÆäÖÐoriginal_dataÊÇÀûÓÃÁíÒ»¶Î´úÂë»ñµÃµÄ¹¦ºÄËù×öµÄ±í¸ñ¡£

keySize=8;
expectKey=17;
blockSize=128;
traceNum=1000;
startPoint=1;
endPoint=148002;
traceDir='..\mat';
matName='original_data'; % matÎļþÃû  T3259_for_hspice_cf.mat
txtName='cipher1.txt'; % Ã÷ÎÄ»òÕßÃÜÎÄÎļþÃû
load('../InvSbox.mat');
load('../HW8.mat');


%%
%
% ×°ÔØ¹¦ÂÊÇúÏß, Éú³ÉÓÐЧ¹¦ºÄ¾ØÕóNxT
%
disp('Loading the power trace to generate NxT matrix ...');
eval(strcat('load(''',traceDir,'/',matName,''');'));
eval(strcat('AxT=',matName,';'));
eval(['clear ',matName,';']);
NxT=AxT(1:traceNum,startPoint:endPoint);%ÔÚËùÓеŦºÄÇúÏßÖÐÈ¡³öÎÒÃÇÒª¹Û²âµÄ¾ØÕ󣬼´Êµ²âÄÜÁ¿¼£
clear AxT;

%%
%
% ×°ÔØÃ÷ÎÄÊäÈë, Éú³ÉÓÐЧÃ÷/ÃÜÎľØÕóNxB
%
disp('Loading the plaintext to generate NxB matrix ...');
eval(strcat('fp = fopen(''',traceDir,'/',txtName,''',''r'');'));
db = fscanf(fp, '%s', 1);
FSIZE = length(db);
frewind(fp);
db = fscanf(fp, '%s');
fclose(fp);
NFILE = length(db) / FSIZE;
db = reshape(db,FSIZE,NFILE)';
NxB=zeros(traceNum,blockSize);
for i=1:traceNum
    FILELIST=db(i,;
    POS =  1;
    for j=1blockSize/4)
        NxB(i,j*4-3:j*4) = bitget(hex2dec(FILELIST(POS+j-1)), [4 3 2 1]);
    end
end
clear db;

%%
%
% ½¨Á¢ººÃ÷¾àÀë»òÖØÁ¿Ä£ÐÍ, Éú³É²Â²â¹¦ºÄ¾ØÕóNxK
%
disp('Building the hypothetical power model to generate NxK matrix ...');
[N,T] = size(NxT);
K=2^keySize;
HD=zeros(N,K);
for candidate=1:K
    for trace_index=1:N
        DFFt2=NxB(trace_index,9:16);
        preXOR=bitxor(bitget((candidate-1),keySize:-1:1), NxB(trace_index,9:16));
        preSBOX=InvSbox(preXOR*[128 64 32 16 8 4 2 1]'+1);%ת»»³É10½øÖÆ£¬ÒòΪmatlab´Ó1¿ªÊ¼£¬ËùÒÔ´Ë´¦Òª¼Ó1
        DFFt1=bitget(preSBOX,keySize:-1:1);
        HD(trace_index,candidate)=bitxor(DFFt1,DFFt2)*[128 64 32 16 8 4 2 1]';
    end
end
NxK=HW8(HD+1);
clear HD;

%%
%
% ¼ÆËãPearsonÏà¹ØÏµÊý, Éú³ÉÏà¹ØÏµÊý¾ØÕóKxT
%
disp('Calculating the correlation to generate KxT matrix ...');
KxT=zeros(K,T);
chunksize=50;
chunks=T/50;
first=1;
last=K;
for i=first:last % ±éÀúÃÜÔ¿ËÑË÷¿Õ¼ä
    for j=1:chunks
        cmatrix= corrcoef([NxT(:,1+(j-1)*chunksize:j*chunksize)  NxK(:,i)]);
        KxT(i,1+(j-1)*chunksize:j*chunksize) =cmatrix(chunksize+1,1:chunksize);
    end
end
%clear NxK;

%%
%
% ½øÐÐͳ¼Æ·ÖÎö
%
TxK=KxT';
clear KxT
[max_corr_each_key,max_index_each_key]=max(TxK);
[max_corr,max_index]=max(max_corr_each_key);
point_of_max_corr=max_index_each_key(max_index);

%%
%
% ´òÓ¡½á¹û
%
fprintf('\n--------------- RESULT @%d TRACES FROM %s --------------\n',traceNum,matName);
fprintf('RK = %d%d%d%d_%d%d%d%d\n',bitget(max_index-1,8:-1:1));
fprintf('Max correlation = %d\n',max_corr);
fprintf('The index of point sequence of max correlation = %d\n',point_of_max_corr+startPoint-1);
fprintf('Percentage = %d %%\n',(point_of_max_corr/T)*100);
toc;
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ Çá̾12321 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[»ù½ðÉêÇë] Сľ³æÃ»ÂäÁË£¬³ýÁËÆíµ»Ìû×Ó£¬¼¸ºõ¿´²»µ½ÓмÛÖµµÄÌû×Ó +14 botar 2026-07-14 15/750 2026-07-19 00:15 by beefly
[»ù½ðÉêÇë] ÃæÉϵÄË®ºÜÉî +13 ²¼²¼ºÍÒ»¶þ 2026-07-18 18/900 2026-07-18 20:37 by ÈÕÔÂÌìµØ
[»ù½ðÉêÇë] ¹úÉç¿ÆÍ¨Ñ¶ÆÀÉó +4 DZˮ¹Ú¾ü123 2026-07-18 5/250 2026-07-18 19:58 by chenmodeyu
[»ù½ðÉêÇë] 5¸ö%2F£¬·Ç¹Ì¶¨¶Î22¸ö×Öĸ +8 jaasxulu 2026-07-15 9/450 2026-07-18 17:40 by dxcgbm
[»ù½ðÉêÇë] ÉúÃü¿ÚC13ÃæÉÏ»áÆÀʱ¼ä +7 luckinging 2026-07-14 11/550 2026-07-17 20:43 by ³æ²·1988
[½Ìʦ֮¼Ò] ÄÚÐÄØÑ·¦ +16 Ë®±ùÔÂÔÂÒ°Íà 2026-07-12 16/800 2026-07-17 19:25 by otani
[»ù½ðÉêÇë] ÉúÃü¿ÚÃæÉÏ»áÆÀ½áÊøÁËÂð´ó¼ÒÓÐÖªµÀ½á¹ûÂð£¿ÏÖÔÚ»¹Ã»Óнá¹ûÕý³£²»£¿ +6 ±ÌË®00 2026-07-16 9/450 2026-07-17 15:21 by jaasxulu
[ÂÛÎÄͶ¸å] ͶӢÎÄÆÚ¿¯ÈçºÎ²éÖØ 10+5 ²»ÖªµÀȡʲôÃû× 2026-07-15 6/300 2026-07-17 09:07 by bobvan
[»ù½ðÉêÇë] ²»ÒªÔÙÊý¹ú×ÔÈ»ÉêÇëÊéµÄ filecode µÄ·Ö¸ô·û¸öÊýÁË +14 sadpencil 2026-07-12 21/1050 2026-07-17 00:15 by wangze12014
[Óлú½»Á÷] ²®°·Éϼ׻ùÇóÖú 100+4 002tmumu 2026-07-14 7/350 2026-07-16 19:47 by 002tmumu
[ÂÛÎÄͶ¸å] ¿ç³ö°æÉçÉÌͶ¸å 20+5 ÄߺÃ520 2026-07-13 5/250 2026-07-16 17:24 by ÎÞÊÓ¾üÍÅ
[»ù½ðÉêÇë] ÉúÉúÃüѧ²¿»áÆÀ +4 wuke100666 2026-07-15 4/200 2026-07-16 00:12 by À²À²Ð¡ÄÝ×Ó
[»ù½ðÉêÇë] H¿Ú£¬ÃæÉÏ£¬Ê±¼ä´Á7ÔÂ7ÈÕ¡£ +3 plumage5 2026-07-15 3/150 2026-07-15 21:06 by 6543yes
[»ù½ðÉêÇë] »áÆÀ +5 ÎÞÃûÕßµÇɽ 2026-07-15 5/250 2026-07-15 18:15 by ¸Ü¾ÍÊÇÄã¶Ô
[»ù½ðÉêÇë] E¿Ú»áÆÀ +11 ²¼²¼ºÍÒ»¶þ 2026-07-13 13/650 2026-07-15 16:34 by Kittylucky
[»ù½ðÉêÇë] E¿ÚÇàC»áÆÀ½áÊøÁËÂ𣿠40+3 ССÊ鳿c 2026-07-14 9/450 2026-07-15 16:04 by °²¾²µÄÖªÁË
[ÂÛÎÄͶ¸å] ũҵ»úеѧ±¨Í¶¸åÖÜÆÚ +3 G0DLIN 2026-07-14 7/350 2026-07-15 09:26 by xs74101122
[»ù½ðÉêÇë] ¹ú×ÔÈ»ÃæÉÏD¿ÚÆíµ» +4 monkeynana 2026-07-14 4/200 2026-07-15 09:14 by °×Ë®Öó
[»ù½ðÉêÇë] ûÊÕµ½ÏûÏ¢£¬ÔÙ´ÎÅãÅÜ +3 Ìì¿ÕÐdz½fly 2026-07-14 3/150 2026-07-14 19:14 by 6543yes
[»ù½ðÉêÇë] Ã÷ÌìE¿ÚÃæÉÏ»áÆÀ +8 ²¼²¼ºÍÒ»¶þ 2026-07-12 9/450 2026-07-13 22:59 by QTSorange
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û