24小时热门版块排行榜    

查看: 881  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 2026国自然放榜时间 +3 布布和一二 2026-08-08 3/150 2026-08-08 18:15 by Lightingo
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 qTvzQBRAHjCi 2026-08-07 4/200 2026-08-08 17:27 by oEVWOejN9taj
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 qTvzQBRAHjCi 2026-08-07 4/200 2026-08-08 17:22 by oEVWOejN9taj
[考研] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 qTvzQBRAHjCi 2026-08-07 5/250 2026-08-08 16:47 by oEVWOejN9taj
[基金申请] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 Vi50GxzrFcSG 2026-08-07 4/200 2026-08-08 16:19 by oEVWOejN9taj
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 Vi50GxzrFcSG 2026-08-07 4/200 2026-08-08 16:02 by oEVWOejN9taj
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 WQyTGMbfH7Cx 2026-08-07 4/200 2026-08-08 15:02 by oEVWOejN9taj
[基金申请] fileCode有新解读? +9 Tide man 2026-08-08 17/850 2026-08-08 14:56 by archvillain
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 HEQlVqMTIA7d 2026-08-07 5/250 2026-08-08 14:27 by oEVWOejN9taj
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 HEQlVqMTIA7d 2026-08-07 5/250 2026-08-08 14:22 by oEVWOejN9taj
[基金申请] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 KXLV3nuBVBY7 2026-08-07 5/250 2026-08-08 14:07 by oEVWOejN9taj
[基金申请] 关于代码变化问题,想知道的进来 +11 且听虎啸 2026-08-07 14/700 2026-08-08 12:50 by 布布和一二
[基金申请] 听说今天filecode变了 +24 布布和一二 2026-08-06 47/2350 2026-08-07 16:02 by zhiyanjiang
[基金申请] filecode与中标关系的预测 +3 布布和一二 2026-08-07 3/150 2026-08-07 15:09 by gltch
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
信息提示
请填处理意见