【信号加密】基于递归水印(RWM)算法实现硬实时信号加密附matlab代码

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【信号加密】基于递归水印(RWM)算法实现硬实时信号加密附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

网络安全对工业控制系统(ICS)至关重要,如船舶自动化、制造、建筑和能源自动化系统。许多控制应用需要硬实时通道,其延迟和抖动在几毫秒或更少的水平。据我们所知,没有一种加密算法对于现有的工业现场总线的硬实时通道来说足够快,因此,使关键任务的应用容易受到网络攻击,如延迟和数据注入攻击。在这篇文章中,我们提出了一种新型的递归水印(RWM)算法,用于硬实时控制系统数据完整性验证。使用水印密钥,发射器将水印噪声应用于硬实时信号,并通过未加密的硬实时通道发送。同样的密钥通过加密的非实时信道传输给接收器。通过相同的密钥,接收器可以检测到数据是否被攻击者修改,并采取行动防止灾难性的破坏。我们提供分析和方法来设计适当的水印密钥以确保可靠的攻击检测。

⛄ 部分代码

%%

% Real time water mark signal prototype

% Zhen Song

% Parameter

Len=1000

Seed=123

mu=0.2

Nq=1024 % quantiation level

N0=1

% Nc=50 % reset every 50 cycles


% Attack Parameters prototype

AttTime = 400;

AttType = 'delay';

% AttType = 'inject';


rng(Seed) % pseudo rand

Hf=rand(Len,1);


% Hashing Dictionary

HashR=rand(Len,1);


%% Original signal

t=linspace(1,5*pi,Len)';

% Simple

%S=sin(t);

% More demanding

S=sin(t)+cos(2*t) + [2*ones(Len/2,1); transpose(linspace(2,-2,Len/4)) ;-2*ones(Len/4,1)];


Vsf=S+mu*Hf; %V = S+Hf*mu

Vsfr=zeros(length(S),1);

Vsfr(1)=S(1);

% Vsfr(2:end)=Vsf(2:end)+mu*HashPM1(Vsf(1:end-1), HashR); % scaling factor

% must be the same!

%  %V = S+Hf*mu+Hr*mu

for idx=2:Len

   Vsfr(idx)=S(idx)+mu*Hf(idx)+mu*HashPM1(Vsfr(idx-1), HashR) - mu;

end


%% Recovery without attack

Shat=zeros(length(Vsfr),1);

% Reset point

Shat(1)=Vsfr(1);

for idx=2:Len

   Shat(idx)=Vsfr(idx)-mu*Hf(idx)-mu*HashPM1(Vsfr(idx-1), HashR)+mu;

end

Sdiff=Shat-S;


%% Man in the midle attack

% Injection attack

AttInjection = Vsfr + [0*ones(AttTime,1); transpose(linspace(0,5,Len/4)) ; 5*ones(Len-Len/4-AttTime,1)];

% Time delay (Replay) attack

AttDelay = [Vsfr(1:AttTime); Vsfr(AttTime); Vsfr(AttTime+1:end-1)];

% Choose the attack

if strcmp(AttType, 'delay')

   Vhack1=AttDelay;

elseif strcmp(AttType, 'inject')

   Vhack1=AttInjection;

else

   Vhack1= Vsfr;

end

%% Recovery with attack

Shat_hack1=zeros(length(Vhack1),1);

% Reset point

Shat_hack1(1)=Vhack1(1);

for idx=2:Len

   Shat_hack1(idx)=Vhack1(idx)-mu*Hf(idx)-mu*HashPM1(Vhack1(idx-1), HashR) + mu;

end

Sdiff_hack1=Shat_hack1-S;


%% Chi^2 square test calculation

chi2test=[0];

% Chi square test

clear Y Y_attack n

for idx=2:Len

   chi2test(idx)=chi_2(Shat_hack1(idx),Shat_hack1(idx-1));

end

   


%% Displaying results

close all;

subplot(3,2,1)

plot(S);

hold on;

plot(Vsfr, 'k');

% legend('S', 'S+Hf', 'S+Hf+Hr');

legend('S', 'V')

title('With Water Mark');


subplot(3,2,2)

plot(Vsfr);

hold on;

plot(Vhack1, '-.r');

plot([AttTime AttTime],[1.3*min([Vsfr; Vhack1]) 1.3*max([Vsfr; Vhack1])],'k--')

legend('V', 'V hack');

title(strcat('Attack at t=',num2str(AttTime)));


subplot(3,2,3)

% recover

plot(S);

hold on;

plot(Shat,'-.r');

legend('S', 'S hat');

title('Recovered signal.');


% subplot(3,2,4)

% % plot(abs(fft(Shat)));

% plot(abs(fft(diff(Shat))));

% title('FFT(diff (S hat) )')


subplot(3,2,4)

% plot(abs(fft(Shat)));

hold on

plot(chi2test);

plot([AttTime AttTime],[0 1.2*max(chi2test)],'k--')

title('Chi^{2} test')

legend('Chi^{2} test');


subplot(3,2,5)

h1=plot(S);

hold on;

h2=plot(Shat_hack1, 'r');

legend([h1, h2], 'S', 'S hat hack1');

plot([AttTime AttTime],[1.3*min([Shat_hack1; S]) 1.3*max([Shat_hack1; S])],'k--')

title(strcat('Attack at t=',num2str(AttTime)));


subplot(3,2,6)

% plot(abs(fft(Shat_hack1)));

hold on

h1=plot(abs(fft(diff(Shat_hack1))));

h2=plot(abs(fft(diff(Shat))));

legend([h1,h2],'S', 'hacked');

title('FFT(diff(S hat hack1))')




% Correction with Hf

A=[Hf S];

disp('Raw data')

cor=corrcoef(A)

A0=[Hf Vsfr];

disp('Noise')

cor0=corrcoef(A0)

A1=[Hf Shat];

A2=[Hf Shat_hack1];

disp('No attack')

cor1=corrcoef(A1)

disp('With delay attack')

cor2=corrcoef(A2)


function y = HashPM1_old(in, hash_dict)

% in is a column vector [-1, 1]

dict_len=length(hash_dict);

y = zeros(size(in));

%     for idx =1:length(in)

if max(in) > min(in)

   idx_dict = round((in-min(in))/(max(in)-min(in))*dict_len);

else

   idx_dict = round((in-1.5)/(2.5)*dict_len);

end

idx0 = find(idx_dict<=0);

idx_dict(idx0)=1;

idx1 = find(idx_dict>=dict_len);

idx_dict(idx1)=dict_len;

y = hash_dict(idx_dict);

%     end

end


%% Simplified Hashing function

% The upper one did not work properly so I created this simplified one, I

% did not want to touch your code :)

function y = HashPM1(in, hash_dict)

% dictionary length

dict_len=length(hash_dict);

y = zeros(size(in));

% Simple index search

% Signal bounded on [-10,10]

idx_dict = mod(round((in+10)/20 * dict_len),dict_len)+1;

y = hash_dict(idx_dict);

end


%% Chi^2 test function

function [gk_chi] = chi_2(y,y_attack)

persistent Y Y_attack n

% time-window length

window =50;

% variance of the noise - amplification

Variance = 10e-3;

if isempty(Y)

   n = 0;

   Y = zeros(window,1);

   Y_attack = zeros(window,1);

else

   if(n > 2)

       % simple system dynamics compensation

       dY = Y(1)-Y(2);

       %dY = 0;

   else

       dY = 0;

   end

   % Buffering signal

   Y = [y; Y(1:end-1)];

   Y_attack = [y_attack+dY; Y_attack(1:end-1)];

   n=n+1;

end

% test calculation

gk_chi = sum((Y-Y_attack).*Variance^-1.*(Y-Y_attack));

end

⛄ 运行结果

⛄ 参考文献

[1] 孙爱娟. 基于AES加密算法的改进及其MATLAB实现[D]. 哈尔滨理工大学, 2010.

[2] 刘昭勇, 代安定, 李康,等. 基于复合混沌系统的彩色图像加密算法及Matlab实现[J]. 湖南城市学院学报(自然科学版), 2018.

[3] 张晓峰, 贾晓强. 一种基于数字音频信号的加密算法[J]. 电子设计工程, 2018, 26(14):5.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
6天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于生物地理算法的MLP多层感知机优化matlab仿真
本程序基于生物地理算法(BBO)优化MLP多层感知机,通过MATLAB2022A实现随机数据点的趋势预测,并输出优化收敛曲线。BBO模拟物种在地理空间上的迁移、竞争与适应过程,以优化MLP的权重和偏置参数,提升预测性能。完整程序无水印,适用于机器学习和数据预测任务。
|
5天前
|
资源调度 算法 数据可视化
基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF
本项目基于MATLAB2022A实现IEKF迭代扩展卡尔曼滤波算法的数据跟踪仿真,对比EKF和UKF的性能。通过仿真输出误差收敛曲线和误差协方差收敛曲线,展示三种滤波器的精度差异。核心程序包括数据处理、误差计算及可视化展示。IEKF通过多次迭代线性化过程,增强非线性处理能力;UKF避免线性化,使用sigma点直接处理非线性问题;EKF则通过一次线性化简化处理。
|
6天前
|
算法 数据安全/隐私保护
基于二次规划优化的OFDM系统PAPR抑制算法的matlab仿真
本程序基于二次规划优化的OFDM系统PAPR抑制算法,旨在降低OFDM信号的高峰均功率比(PAPR),以减少射频放大器的非线性失真并提高电源效率。通过MATLAB2022A仿真验证,核心算法通过对原始OFDM信号进行预编码,最小化最大瞬时功率,同时约束信号重构误差,确保数据完整性。完整程序运行后无水印,展示优化后的PAPR性能提升效果。
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于sift变换的农田杂草匹配定位算法matlab仿真
本项目基于SIFT算法实现农田杂草精准识别与定位,运行环境为Matlab2022a。完整程序无水印,提供详细中文注释及操作视频。核心步骤包括尺度空间极值检测、关键点定位、方向分配和特征描述符生成。该算法通过特征匹配实现杂草定位,适用于现代农业中的自动化防控。
|
3天前
|
机器学习/深度学习 资源调度 算法
基于入侵野草算法的KNN分类优化matlab仿真
本程序基于入侵野草算法(IWO)优化KNN分类器,通过模拟自然界中野草的扩散与竞争过程,寻找最优特征组合和超参数。核心步骤包括初始化、繁殖、变异和选择,以提升KNN分类效果。程序在MATLAB2022A上运行,展示了优化后的分类性能。该方法适用于高维数据和复杂分类任务,显著提高了分类准确性。
|
7月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
286 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
7月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
171 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
7月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
151 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
10月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)