利用组合加密和隐藏密钥通过文本加密和图像隐藏技术传输安全性强制(IJEM-V8-N1-1)

利用组合加密和隐藏密钥通过文本加密和图像隐藏技术传输安全性强制(IJEM-V8-N1-1)
利用组合加密和隐藏密钥通过文本加密和图像隐藏技术传输安全性强制(IJEM-V8-N1-1)

I.J. Engineering and Manufacturing, 2018, 1, 1-15

Published Online January 2018 in MECS (https://www.360docs.net/doc/f0614626.html,)

DOI: 10.5815/ijem.2018.01.01

Available online at https://www.360docs.net/doc/f0614626.html,/ijem

Transmitting Security Enforcement By Text Encrypting and Image Hiding Technique using Combined Encrypt/Hide Keys

Mohammed Jawar Khami *

Basra technical institute, Southern technical university, Basra, Iraq.

Received: 13 May 2017; Accepted: 11 September 2017; Published: 08 January 2018

Abstract

Comparative study of cryptography and steganography techniques shows that they have some strong and weak points when they used alone. But as we know from soft computing techniques (neural, genetic, and fuzzy computing), that when combining (hybridizing), more than one techniques, by the suitable way to do a job, the outcome will be a better technique with more strong points and less weak points. Work of this paper represents an attempt to prove that combining cryptography with steganography techniques will result in hard transmitting system to break and thus enforcing security issues of secret text data transmitting over public channels. Matlab programs are written to encrypt plain text secret information following AES encrypt/decrypt algorithm with a key of 128 bits long and then hide/extract the text according to LSB insertion method with a key of 128 bits long too. System tests show that both techniques enforce each other and private data transmitting become more secure.

Index Terms: Cryptography, Steganography, Keys combining, AES algorithm, LSB hide/extract techniques. ? 2018 Published by MECS Publisher. Selection and/or peer review under responsibility of the Research Association of Modern Education and Computer Science.

1.Introduction

Nowadays, the Internet has made it possible for users to send and receive all types of digital data (Audio, image, text, video), from anywhere around the world. Also, from security point view, communication of private and secret information (electronic financial transactions, e-business applications, and secure video surveillance systems), is a major challenge and its complexity increases with the levels of sophistication [1]. Many attempts have been made to secure data transmitting over the internet either by making it illegible or unreadable through encoding or masking. In general, solutions for maintaining the secrecy of data transmission over an unsecured media such as the internet can have two approaches. These are cryptography and steganography. Regardless * Corresponding author. +964 780 133 4525

E-mail address: mjkhami@https://www.360docs.net/doc/f0614626.html,.iq, mjkhami@https://www.360docs.net/doc/f0614626.html,

many papers showed that neither cryptography nor steganography comes up with the ultimate solution for privacy preservation in open systems. However, the combination of steganography and cryptography can greatly increase the security of communication and is usually considered a good practice for securing security driven communication environments[2].

Cryptography is the process of converting original data into cipher copy so that the original data is not readable by the third party or making it difficult for intruders to extract the original data. [3], Steganography, on the other hand, is the process of hiding secret data in another clear covering media so there is no knowledge of secret data existence in that cover [4]. Comparative study of these two approaches shows that they have strong and weak points. Security point enforcements come out when combining (hybridizing), both of them in one system, the outcome will be harder than ever for any intruder to get the original data. Since when the steganography fails and the secret data can be detected, it is still of no use as it is encrypted and thus unreadable[5].

There are many algorithms and methods to accomplish data steganography [6-9] and cryptography [10-12]. And to combine them in one system, it requires selecting the best method from each one of them to suit and verify the intended needs of the applications. In this work, the encryption method is according to the advanced encrypting standard (AES) algorithm with a Private encrypting key of 128 bits long and the steganography technique is text-in-image (image hiding technique), hiding by least significant bit (LSB) insertion method [13-15]. Both methods (Encrypt/Hiding), are selected for many reasons such as their simplicity, difficult to break, and easily programmed.

2.Proposed System

The goal of this work is to design a software to Encrypt file of secret English plain text first and then embed it into gray or color cover image. The size of encrypted text (and thus the original secret plain text size), is bounded only by the size of the selected cover image. Many programming tricks have been included in writing this software. For example, at encryption stage and in order to make any attempt for breaking the encrypting technique much harder, the main encrypting key is generated by combining two different keys. First key (S-Key), is the one that must be given by the sender while the second key (R-Key), should be obtained from the receiver. Each key should be exactly 128 bits (16 characters) long, and so will the length of the combined key (SR-Key). By this way, an effort to decrypt the encrypted text and getting back the original secret plain text needs to know not just one key but both of them at the same time and Knowing the way by which they combined together, and this is less probable to happen.

At the embedding stage the following steps are included:

?Hide encrypted text at the least significant bit, in bit-plain-1, of the cover image starting at byte 1 of the image, seems to be easy to extract it back, this may look true but the difficulty comes out here by not letting intruders knowing the exact size of the embedded text and thus any attempt to read and reconfigure it back will be definitely difficult since, if the encrypted text size is unknown then decrypting it also will be difficult.

?The applied hiding technique uses a hiding key. This key is the sender key (S-Key) which will be embedded in the same cover image on bit-plain-2 of randomly selected bytes. The randomness of locations, where sender key is hidden, depends on setting the seed of system random number generator to the value of the receiver key (R-Key).

The proposed system can be described in steps at two locations as follow:

Sender location:

Step-1: Read input plain text,

-Read cover image data matrix,

-Read sender key string (S-Key), and,

-Read receiver key string (R-Key).

Step-2: Combine S-Key and R-key into the same length encrypting key (SR-Key).

Step-3: Encrypt input plain text according to AES encrypting algorithm and SR-Key.

Step-4: Hide encrypted text in cover image starting at byte 1 and bit-plain-1.

Step-5: Hide size of encrypted text in last 32 bytes of the cover image and in bit-plain-1.

Step-6: -Set system random number generator seed to the value of R-Key string,

-Use system random number generator to create a vector of 128 elements. All vector elements values are unique and in the range from 1 to (cover image size – 32).

-Hide S-Key in the cover image at byte locations equal to element values of the created vector and in bit-plain-2.

Step-7: Modified image with hidden text is ready to transmit.

Receiver location:

Step-1: -Read the received image data matrix, and

-Read receiver Key string (R-Key)

Step-2: Extract size value of encrypted text from the last 32 bytes of the received image and from bit-plain-1. Step-3: Extract encrypted text from received image starting at byte 1 and from bit-plain-1.

Step-4: Set system random number generator seed to the value of R-Key string,

-Use system random number generator to create a vector of 128 unique elements values in the range of 1 to (cover image size – 32).

-Extract S-Key from cover image byte on locations equal to element values of the created vector and from bit-plain-2.

Step-5: Combine S-Key and R-key into decrypting key SR-Key of the same length.

Step-6: Decrypt the obtained encrypted text according to AES encrypting algorithm and SR-Key.

Step-7 Use the decrypted text as the retrieved secret plain text.

The proposed system is coded using Matlab programming language. Main program descriptive flow charts are depicted in Fig. 1. for the sender location and Fig. 2. for the receiver location. The written program can deal with image’s files of type ‘.bmp’, ‘.tif’, ‘.png', and ‘.jpg'. The current plain text shou ld be from English text writing. These programs could be edited and modified to be capable of encrypting/hiding Arabic and other writing languages. Main programs and functions are listed at the end of this paper (Appendix A). The only unlisted functions are the encrypt (cipher), and decrypt (decipher), functions. These functions have a standard form and can be easily downloaded from the internet.

Fig.1. System Flow Diagram at Sender Location.

Fig.2. System Flow Diagram at the Receiver Location.

3.System Test and Implementation

The proposed system is tested, as shown in Fig.3., by using two files of English plain text. First one contains 4361 characters while the second has 215 characters. Also, the test is done with color and gray images of

different types (bmp, tiff, png, and jpg images), with different images size. All peak signal to noise ratio

(PNSR), calculations have been written in Table 1. and they all satisfy the purposes of the hard visual detection of the embedded text. The only noticeable value that was shown in Table 1. is the big change in the row for the image of type ‘jpg'. Its size changes from 12.8 kB to 240 kB. That is because after the text is hidden in it, its type is changed deliberately from ‘jpg’ to ‘bmp’, in order to save the image without compression, (since ‘.jpg' image changes its size when re-saving it again due to compression processing property).

Fig.3. System Implementation.

Table 1. PSNR for Different Image Types and Hidden Text Sizes

4. Conclusions

Combining AES encrypt/decrypt algorithm with 128 bits key, and hide/extract LSB insertion method with 128 bits hiding key too, give new and more secured transmitting technique. Sender and receiver Keys

Combined Key

Main Encrypt Text and Hide It In Image Matlab Program

Main Extract and Decrypt Text From Image Matlab Program

Receiver Key

Public Transmitting Channel

combining make the process of breaking any one of them more difficult, since intruder need to know both keys to break the system. if one technique fails, the system will continue securing the secret information by the other technique. Experiments show that secret text size only bounded by cover image size. Noise added to the cover image, due to embedding process, is small and modifications on original images are hard to be detected for most image types (except for ‘.jpg’ image type). This paper programs can be updated easily to encrypt-hide-extract-decrypt text writing other than English text. The programs can be used also in increasing security features in communication technology for smartphones since security issues for these devices are limited. References

[1]Palak Mahajan, “Steganography: A data hiding technique”, Inte rnational journal of advanced research in

computer science and software engineering, Vol. 4, Issue 11, Nov. 2014.

[2]Auqib Hamid Lone, Ab Waheed Lone, Moin Uddin, "A novel scheme for image authentication and secret

data sharing", International journal of computer network and information security(IJCNIS), Vol.8, No.9, pp.10-18, 2016.DOI: 10.5815/ijcnis.2016.09.

[3] A. Anuradha, Hardik B. Pandit, “Review on information techniques: A comparative analysis”, IJRET, Vol.

5, Issue 2, Feb. 2016, pp. 128-132.

[4]Ramanpreet Ka ur, Baljit Singh, “Survey and analysis of various steganography techniques”, IJESAT, Vol.

2, Issue 3, May-June 2012.

[5]Arvind Kumar, Km. Pooja, “Steganography –A data hiding technique”, IJCA (0975-8887), Vol. 9, No. 7,

Nov. 2010, pp. 19-23.

[6]Sahar A. El_Rahman, "A comprehensive image steganography tool using LSB scheme", IJIGSP, vol.7,

no.6, pp.10-18, 2015.DOI: 10.5815/ijigsp.2015.06.02

[7]Sabyasachi Samanta, Saurabh Dutta, Goutam Sanyal,"A Novel approach of text steganography using

nonlinear character positions (NCP)", IJCNIS, vol.6, no.1, pp.55-60,2014. DOI: 10.5815/ijcnis.2014.01.08 [8]Fahd Alharbi,"Novel high-quality data hiding system", IJIGSP, vol.5, no.7, pp.47-53, 2013.DOI:

10.5815/ijigsp.2013.07.07

[9]Ibrahim M. Hussain, M. Kamran Khan, Mohammad Naseem, Aisha Ajmal, Osama M. Hussain,

"Improved bit plane splicing LSB technique for secret data hiding in images using linear congruent method", IJIGSP, vol.4, no.7, pp.1-14, 2012.

[10]P. Srinivasarao, P. V. Lakshmipriya, P. C. S. Azad, T. Alekhya, K. Raghavendrarao, K. Kishore, “A

technique for data encryption and decryption”, International journal of future generation communication and networking, vol. 7, no. 2 (2014), pp.117-126.

[11]Thomas Baigneres, Pascal Junod, Yi Lu, Jean, “A classical introduction to cryptography exercise book”,

Springer science & business media, 2006.

[12]Douglas Selent, “Advanced encryption standard”, nSight: Rivier academic journal, Vol. 6, Num. 2, Fall

2010.

[13]Mohammed J. Khami, Lemya G. Shehab and Zeynab M. Jawar, “Matlab Coding For Text Steganograph y

System By Using LSB Insertion Method With Key”, Basrah journal of science (A) Vol.33 (2), 37-51, 2015.

[14]Champakamala .B.S, Padmini.K, Radhika .D. K., “Least significant bit algorithm for image

steganography”, International journal of advanced computer tec hnology (IJACT) ISSN: 2319-7900 34 | Vol. 3, Issue. 4. August 25, 2014.

[15]Gabriel Macharia Kamau, Stephen Kimani, Waweru Mwangi, “An enhanced least significant bit

steganographic method for information hiding”, Journal of information engineering and applicat ions ISSN 2224-5782 (print) ISSN 2225-0506 (online) Vol 2, No.9, 2012.

Authors’ Profiles

Mohammed Jawar Khami(1953) is an assistant professor of computer science at Basra

technical institute in the Southern technical university, Iraq. He received his B.Sc. (Hon.) in

electrical and electronic engineering 1982 from Sunderland Polytechnic, England, UK. Also, he

received his MSc (1989) and Ph.D. (2000) in computer science from college of science, Basra

University, Iraq. His area of research includes pattern r ecognition, computer based device’s

control systems, data encryption, and data hiding. He is a former computer center manager and head of the computer systems department at Basra technical institute.

Appendix A. The proposed system Matlab software

A.1. Encrypt/Hide Program.

% EncryptHide.m

% Dr. Mohammed J. Khami

% Comp. Sys. Dep./ Basra Tech. Institute.

% mjkhami@https://www.360docs.net/doc/f0614626.html,.iq, mjkhami@https://www.360docs.net/doc/f0614626.html,, mjkhami@https://www.360docs.net/doc/f0614626.html,

% 29/04/2017

%

clc; clear; close all;fclose all; commandwindow; WD=cd();

% Set off warning for big size image.

warning ( 'off','images:initSize:adjustingMag') ;

%

% This program is to encrypt content of plain text file "filename.txt"

% by AES-algorithm with sender and receiver keys. And to save output

% encrypted-text in "En_filename.txt" file on the same path of the

% input plain text file. And then hide it in image.

% Note: Sender and Receiver keys have maximum lengths of 128 bits.

%% Input Cover image Path and Filename

[CoverImageFilename, CoverImagePth]=uigetfile({'Image file(*.png;*.tif;

*.jpg;*.bmp)'},'Choose Cover Image To Encode.');

if isequal(CoverImageFilename,0) || isequal(CoverImagePth,0)

return % User canceled.

End

% Read CoverImage Data Matrix.

fmt=CoverImageFilename(end-2:end); % Get image type

CoverImage= imread([CoverImagePth, CoverImageFilename],fmt);

%% Prog. Section-2 : Get Encryption/Decryption PlainKey.

[S_key, R_key]=getplainkey5(); %Get S-key/R-Key (each of 128 bit long).

PlainKeyLength1=length(S_key); PlainKeyLength2=length(R_key);

% Make sure each key is 128 bit long.

if PlainKeyLength1<1 || PlainKeyLength1>16 ...

|| PlainKeyLength2<1 || PlainKeyLength2>16

ttext='Error: Sender/Reciever Keys must be 1-to-16 characters Long.';

uiwait(msgbox({ttext},'Error','error','modal'));

cd(WD); clc; return;

end

% Combine S_Key with R_Key to Get SR_Key by calling (two_keys_in_one5) SR_key=two_keys_in_one5(S_key, R_key);

PlainKey=SR_key; % Encryption key is ready.

% Prepare AES algorithm's Parameters, by calling standard function

% 'aes_init.m' loaded from the internet.

[s_box, inv_s_box, w, poly_mat, inv_poly_mat] = aes_init(PlainKey);

%% Read Plaintext Filename

[filen1, path1] =uigetfile({'*.txt';},'Choose Plain Text File: ');

if isequal(filen1,0) || isequal(path1,0)

ttext='Error: Filename must not be empty';

uiwait(msgbox({ttext},'Error','error','modal'));

cd(WD); return % User cancelled.

end

PlainTextFileName=[path1,filen1]; FE1=fopen(PlainTextFileName,'r');

% Read Plaintext

plaintext=fread(FE1); PlainText=plaintext';

%% Divide the read Plaintext into slices of 16 characters wide. PlainTextLength=length(PlainText);

loop_int=fix(PlainTextLength/16); loop_rem=mod(PlainTextLength,16);

if loop_rem>=1 && loop_rem<=15

for i=loop_rem+1:16

PlainText=[PlainText,' '];

end

loop_int=loop_int+1;

end

PlainText = double(PlainText);

for cy=1:loop_int

PlainText1=PlainText((cy-1)*16+1:cy*16);

% Encrypt one text slice at a time by calling cipher function.

ciphertext = cipher (PlainText1, w, s_box, poly_mat);

if cy==1

EncText =ciphertext;

else

EncText =[EncText,ciphertext];

end

end % End of Ciphering all file contents.

%% Hide encrypted text in CoverImage

% 1) Hide encrypted text in CoverImage by LSB in bit-plain-1 of image

% data starting from the first byte from the CoverImage.

% 2) Calculate encrypted-text-size then hide size value at the last 32

% bytes of the CoverImage (after converting text size value into

% binary string of 32bits).

% 3) Hide Reciever key string in bit-plain-2 of randomly selected data

% points of CoverImage.

% All above Hidings will be done by calling function:

% "EmbedEncryptedTextInImageWithKeys.m".

%

ModifiedCoverImageH=EmbedEncryptedTextInImageWithKeys(CoverImage,EncText, S_key,R_key);

% End of hiding Process.

figure(1);

subplot(121);imshow(CoverImage,[]);title('Original Cover Image');

subplot(122);imshow(ModifiedCoverImageH,[]);title('Image with hidden text'); OutPutImageFilename=[CoverImagePth,'O_', CoverImageFilename];

% When image is of '.jpg' type it must be save as '.bmp' file.

if lower(OutPutImageFilename(end-2:end))=='jpg'

OutPutImageFilename(end-2:end)='bmp';

end

imwrite(ModifiedCoverImageH,OutPutImageFilename);

fclose all; cd(WD);

% End of Encryption/Hide Program.

A.2. Extract/Decrypt program.

% ExtractDecrypt.m

% Dr. Mohammed J. Khami

% Comp. Sys. Dep./ Basra Tech. Institute.

% mjkhami@https://www.360docs.net/doc/f0614626.html,.iq , mjkhami@https://www.360docs.net/doc/f0614626.html, , mjkhami@https://www.360docs.net/doc/f0614626.html,

% 29/04/2017

%

clc; clear; close all; fclose all;

% Set warning for big size image off.

warning ( 'off','images:initSize:adjustingMag');

%% Read the Modified Image Data File.

% Get the ModifiedCoverImageH Filename and its Path

[filen pth]=uigetfile({'O_*.*'},'Choose Modified Cover Image To Encode.');

if isequal(filen,0) || isequal(pth,0)

return % User cancelled.

end % if

ModifiedCoverImageH= imread([pth filen]); % Original cover image

close all;

% Gets Rows and Columns of input image.

[ImageRows,ImageCols,ImageClr]=size(ModifiedCoverImageH);

if ImageClr>1

ModifiedCoverImage=ModifiedCoverImageH(:,:,1);

else

ModifiedCoverImage=ModifiedCoverImageH(:,:);

end

RetrievedCoverImageInBinary=dec2bin(ModifiedCoverImage);

% Get Reciever R_Key

R_Key=getplainkey_receiver();

% RC_Hidden is row & col. number where we hide the secret text size.

RC_Hidden='';

for i=ImageRows*ImageCols-31:ImageRows*ImageCols

RC_Hidden=[RC_Hidden,char(RetrievedCoverImageInBinary(i,8))];

end

Row_tr=bin2dec(RC_Hidden(1:16)); Col_tr=bin2dec(RC_Hidden(17:32)); RetrievedTextInBinary=RetrievedCoverImageInBinary(1:Row_tr*Col_tr,8); RetrievedTextIn_ascii=bin2dec(reshape(RetrievedTextInBinary ,Row_tr,Col_tr)); RetrievedTextInChar= char(RetrievedTextIn_ascii)';

% Set seed of the random number generator to R_Key

rkey=0;

for i=1:16

rkey=rkey+2^i*double(R_Key(i));

end

rng(rkey);

% Generate random byte locations

indx=randperm(size(ModifiedCoverImage,1)*size(ModifiedCoverImage,2)-32,128); % Hide S_Key in the randomly generated byte locations

S_Key_Bin='';

for i=1:128

S_Key_Bin=[S_Key_Bin,RetrievedCoverImageInBinary(indx(i),7)];

end

S_Key='';

for i=1:8:128

S_Key=[S_Key,char(bin2dec(S_Key_Bin(i:i+7)))];

end

CompositeKey=two_keys_in_one(S_Key, R_Key);

PlainKey=double(CompositeKey);

% Prepare AES algorithm parameters.

[s_box, inv_s_box, w, poly_mat, inv_poly_mat] = aes_init(PlainKey);

PlainText=RetrievedTextInChar; PlainTextLength=length(PlainText);

% Divide PlainTex into slices each of 16-characters.

loop_int=fix(PlainTextLength/16); loop_rem=mod(PlainTextLength,16);

if loop_rem>0 && loop_rem<16

for i=loop_rem+1:16

PlainText=[PlainText,' '];

end

loop_int=loop_int+1;

end

PlainText0 = double(PlainText);

for cy=1:loop_int

if cy==1

PlainText1=PlainText0((cy-1)*16+1:cy*16);

else

PlainText1=PlainText0((cy-1)*16+1:cy*16);

end

decText = inv_cipher (PlainText1, w, inv_s_box, inv_poly_mat);

if cy==1

DecText =decText;

else

DecText =[DecText,decText];

end

end

DecText=char(DecText);

DecText

% End of Extract/Decrypt Program.

A.3. Getplainkey Function

function [SPlainKey, RPlainKey]=getplainkey()

% Function to returns sender key ‘SPlainKey' and Receiver key 'RPlainKey' % using inputdlg() matlab command.

SPlainKey=''; RPlainKey=''; PlainKey='';

prompt = {'Sender (Encryption) Key?','Receiver (Decryption) Key?'};

dlg_title = 'Input Keys'; num_lines = 1; defaultans ={'Khami1953';''}; options='on';

PlainKey=inputdlg(prompt,dlg_title,num_lines,defaultans,options );

if isempty(PlainKey)

return;

end

PlainKey1=char(PlainKey{1}); PlainKey2=char(PlainKey{2});

while true

if PlainKey1(1)==char(32)

PlainKey1=PlainKey1(2:end);

else

break;

end

end

while true

if PlainKey2(1)==char(32)

PlainKey2=PlainKey2(2:end);

else

break;

end

end

PlainKeyLength1=length(PlainKey1); PlainKeyLength2=length(PlainKey2);

if PlainKeyLength1<16

for i=1:16-PlainKeyLength1

PlainKey1=[PlainKey1,' '];

end

end

if PlainKeyLength2<16

for i=1:16-PlainKeyLength2

PlainKey2=[PlainKey2,' '];

end

end

SPlainKey=PlainKey1; RPlainKey=PlainKey2;

% End of function 'getplainkey()'.

A.4. Two_keys_in_one Function

function CompositeKey = (SenderKey ,RecieverKey)

% Function to convert two key strings each of 16 char's into one

% composite 16 char key.

%% Make sure both given keys are 16 char long.

s=length(SenderKey); r=length(RecieverKey);

if (s~=16)||(r~=16)

CompositeKey='';

return

end

a_bin=''; b_bin='';

for i=1:16

a_bin=[a_bin,dec2bin(SenderKey(i),8)];

b_bin=[b_bin,dec2bin(RecieverKey(i),8)];

end

ab=[];

for i=1:128

ab(i)=xor(str2num(a_bin(i)),str2num(b_bin(129-i)));

end

nk=reshape(ab,16,8); CompositeKey=[];

for i=1:16

CompositeKey(i)=(bin2dec(num2str(nk(i,1:8))));

end

% End of function 'two_keys_in_one(SenderKey,RecieverKey)'.

A.5. EmbedEncryptedTextInImageWithKeys function

function ModifiedCoverImageH = EmbedEncryptedTextInImageWithKeys(CoverImage,Message,S_Key,R_Key) % Function 'EmbedEncryptedTextInImageWithKeys' to do the following:

% 1) Hide encrypted text 'Message' in CoverImage by LSB in bit-plain-1 of % image data starting from the first byte from the CoverImage.

% 2) Calculate encrypted-text-size then hide size-value in the last 32

% bytes of the CoverImage (after converting text size-value into

% binary string of 32 bits).

% 3) Hide Reciever key 'R-Key' string in bit-plain-2 of randomly selected

% data points of CoverImage.

%

MessageInDouble=Message;

% Convert text array into binary number of ii*jj rows and 8 columns.

MessageInBinary=dec2bin(MessageInDouble,8);

% Get size of the binary message

[MessageBinaryRows, MessageBinaryCols]=size(MessageInBinary);

% Combine MessageBinaryRows & MessageBinaryCols into one string in

% binary representation.

MessageBinaryRowsInBinary=dec2bin(MessageBinaryRows,16); MessageBinaryColsInBinary=dec2bin(MessageBinaryCols,16);

MessageBinaryRows_ColsInBinary=[MessageBinaryRowsInBinary,MessageBinaryColsInBinary]; % Test if the CoverImage is Color image

[ImageROW,ImageCOL,ImageColor]=size(CoverImage);

if ImageColor>1

% Change cover image to be gray image

gray_cover_im=CoverImage(:,:,1);

else

gray_cover_im=CoverImage;

end

% Convert gray_cover_im image into a binary representation.

CoverImageInBinary=dec2bin( gray_cover_im);

%% First: Hide Encrypted Text size "Row % Columns" in bit-plan-1

% of the last 32 byte of CoverImage.

temp=0;

for i=ImageROW*ImageCOL-31:ImageROW*ImageCOL

temp=temp+1;

CoverImageInBinary(i,8) =MessageBinaryRows_ColsInBinary(temp);

end

%% Second: Hide all Encrypted Text in bit-plain-1 of last-32 bytes of CoverImage.

for i=1:MessageBinaryRows*MessageBinaryCols

CoverImageInBinary(i,8) =MessageInBinary(i);

end

%% Third: Hide S_Key in bit-plain-2 of randomly select byte location of CoverImage.

% This requires first, putting S_Key in 128 bit string format

S_Key_Bin=''; DSKey=double(S_Key);

for i=1:16

S_Key_Bin=[S_Key_Bin,dec2bin(DSKey(i),8)];

end

% then second set the seed of the random number generatore to R_Key.

rkey=0;

for i=1:16

rkey=rkey+2^i*double(R_Key(i));

end

rng(rkey);

% Generate random byte locations

indx=randperm(size(CoverImage,1)*size(CoverImage,2)-32,128);

% Then third hide S_Key in the randomly generated byte locations.

for i=1:128

CoverImageInBinary(indx(i),7) =S_Key_Bin(i);

end

SKey='';

for i=1:128

SKey=[SKey,CoverImageInBinary(indx(i),7)];

end

S_Key='';

for i=1:8:128

S_Key=[S_Key,char(bin2dec(SKey(i:i+7)))];

end

% Convert CoverImageInBinary to unsigned 8-bit integer, after reshaping

% it as an array of (r) rows and (c) column as in the original cover

% image array.

ModifiedCoverImage=uint8(reshape(bin2dec(CoverImageInBinary),ImageROW,ImageCOL )); if ImageColor>1

ModifiedCoverImageH(:,:,1)=ModifiedCoverImage;

ModifiedCoverImageH(:,:,2)=CoverImage(:,:,2);

ModifiedCoverImageH(:,:,3)=CoverImage(:,:,3);

else

ModifiedCoverImageH=ModifiedCoverImage;

end

% End of function 'EmbedEncryptedTextInImageWithKeys'.

A.6. Getplainkey_Receiver Function

function PlainKey=getplainkey_receiver()

% Function "PlainKey=getplainkey()" returns key-text 'PlainKey' of 16

% characters using inputdlg() matlab command.

PlainKey='';

while 1

prompt={'Input Reciever Key (1 to 16) characters? '};

name = 'Input Reciever Key'; defaultans = {' '};

options.Resize ='on'; options.WindoStyle ='modal';

options.Interpreter = 'tex';

PlainKey=inputdlg(prompt,name,[1 40],defaultans,options );

PlainKey=char(PlainKey);

if isempty(PlainKey)

return;

end

PlainKey=PlainKey;

% Remove any leading spaces if in PlainKey.

while true

if PlainKey(1)==char(32)

PlainKey=PlainKey(2:end);

else

break;

end

end

PlainKeyLength=length(PlainKey);

if PlainKeyLength<1 || PlainKeyLength>16

uiwait(msgbox([{'Error: Key length must be in'};{'between 1- to-

16 characters.'}],'Error','error','Modal'));

cd(WD); clc; return;

end

break;

end

% Append spaces if it is not 16 char. long.

add_key=16-PlainKeyLength;

if PlainKeyLength<16

for i=1:16-PlainKeyLength

PlainKey=[PlainKey,' '];

end

end

return

How to cite this paper: Mohammed Jawar Khami,"Transmitting Security Enforcement By Text Encrypting and Image Hiding Technique using Combined Encrypt/Hide Keys", International Journal of Engineering and Manufacturing(IJEM), Vol.8, No.1, pp.1-15, 2018.DOI: 10.5815/ijem.2018.01.01

密码学对称加密算法

对称加密算法 一、网络安全 1.网络安全 (1) 网络的安全问题:有以下四个方面 A. 端-端的安全问题,主要指用户(包括代理)之间的加密、鉴别和数据完整性维护。 B. 端系统的安全问题,主要涉及防火墙技术 C. 安全服务质量问题,主要指如何保护合法用户的带宽,防止用户非法占用带宽。 D. 安全的网络基础设施,主要涉及路由器、DNS服务器,以及网络控制信息和管理信息的安全问题。 (2)网络的安全服务:有以下五个方面 A.身份认证:这是考虑到在网络的应用环境下,验证身份的双方一般是通过网络而非直接交互,所以传统的验证手段如根据对方的指纹等方法就无法应用。同时大量的黑客随时都可能尝试向网络渗透,截获合法用户的口令并冒充顶替,以合法身份入网。所以应该提供一种安全可靠的身份认证的手段。 B.授权控制:授权控制是控制不同用户对信息资源的访问权限。授权控制是以身份认证为基础的。通过给不同用户的提供严格的不同层次和不同程度的权限,同时结合可靠的身份认机制,可以从很大程度上减少非法入侵事件发生的机会。 C.数据加密:数据加密技术顾名思义。在互联网上应用加密技术来保证信息交换的可靠性已经的到了人们普遍的认可,已经进入了应用阶段。目前的加密技术主要有两大类:一类是基于对称密钥加密的算法,另一类是基于非对称密钥加密的算法。它们都已经达到了一个很高的强度,同时加密算法在理论上也已经相当的成熟,形成了一门独立的学科。而从应用方式上,一般分成软件加密和硬件加密。前者成本低而且实用灵活,更换也方便;而后者加密效率高,本身安全性高。在应用中,可以根据不同的需要来进行选择。 D.数据完整性:数据完整性是指通过网上传输的数据应该防止被修改、删除、插入、替换或重发,以保证合法用户接收和使用该数据的真实性。 E.防止否认:在网上传输数据时,网络应提供两种防止否认的机制:一是防止发送方否认自己发送过的信息,而谎称对方收到的信息是别人冒名或篡改过的;二是防止接收方否认自己收到过信息。利用非对称加密技术可以很好的实现第一个否认机制。 二、加密技术 (1) 加密技术的产生和发展 A. 古代,目前记录的比较早的是一个在公元前2世纪,由一个希腊人提出来的,26个字母放在一个5×5的表格里,这样所有的源文都可以行列号来表示。 B. 近代,在第二次世界大战里,密码机(如紫罗兰)得到了比较广泛的已经技术,同时破译密码的技术也得到了发展,出现了一次性密码技术。同时密码技术也促进了计算机的发展。 C. 现代,由于计算机和计算机网络的出现,对密码技术提出了更高的需求。密码学的论文和会议不断的增加,以密码技术为主的商业公司开始出现,密码算法层出不穷,并开始走向国际标准化的道路,出现了DES,AES等国家(美国的)标准。同时各个国家和政府对密码技术也越来越重视,都加密技术的出口和进口都作了相当严格的规定。 (2) 加密技术的分类 A.对称加密技术 a. 描述 对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性

非对称加密实验

非对称加密实验 【实验环境】 ISES客户端 Microsoft CLR Debugger 2005或其它调试器 【实验内容】 通过运算器工具实现RSA和ElGamal算法的加解密计算 手工计算RSA密钥并检验,将其应用于签名中并验证 对RSA密钥生成、RSA密钥加密、ElGamal参数生成、ElGamal密钥生成和ElGamal加密进行算法跟踪 非对称加密实验 【实验原理】 非对称密码体制又称为公钥密码体制,加解密使用公私钥密钥对,私钥由密钥拥有者保管,公钥可以公开,基于公开渠道进行分发,解决了对称密钥体制中密钥管理、分发和数字签名等难题。 一、 RSA算法 RSA公钥算法由Rivest、Shamir、Adleman于1978年提出的,是目前公钥密码的国际标准。算法的数学基础是Euler定理,是基于Deffie-Hellman的单项陷门函数的定义而给出的第一个公钥密码的实际实现,其安全性建立在大整数因子分解的困难性之上。 RSA算法的明文空间M=密文空间C=Z整数,其算法描述如下: n (1) 密钥生成 随机选择两个大素数p和q,计算n=p?q,;选择一个随机整数e<,满足,计算整数;公开公钥(n,e),安全的销毁p、q和,并保留(d,n)作为私钥。

(2) 加密 (3) 解密 使用中国剩余定理可以加速RSA密码算法的实现。 二、 ElGamal算法 ElGamal算法是Deffie-Hellman单项陷门函数的一个成功应用,把函数转化为公钥加密体制,其安全性建立在有限域上的离散对数问题。 ElGamal算法的描述如下: (1) 密钥生成 随机选择一个素数p,计算p个元素的有限域的乘法群的一个随机乘法生成元g;均匀随机地在模p-1的整数集合中选取x,计算;把(p,g,y)作为公钥公开,把(p,g,x)作为私钥。 (2) 加密 均匀随机地在模p-1的整数集合中选取k,消息m

流密码加密原理

流密码加密实验 【实验原理】 流密码(stream cipher)也称为序列密码,每次加密处理数据流的一位或一个字节,加解密使用相同的密钥,是对称密码算法的一种。1949年Shannon证明只有一次一密密码体制是绝对安全的,为流密码技术的研究提供了强大的支持,一次一密的密码方案是流密码的雏形。流密码的基本思想是利用密钥K产生一个密钥流k1k2…k n对明文流M=m1m2…m n进行如下加密:C=c1c2…c n=E k1(m1)E k2(m2)…E kn(m n)。若流密码所使用的是真正随机产生的、与消息流长度相同的密钥流,则此时的流密码就是一次一密的密码体制。 流密码分为同步流密码和自同步流密码两种。同步流密码的密钥流的产生独立于明文和密文;自同步流密码的密钥流的产生与密钥和已经产生的固定数量的密文字符有关,即是一种有记忆变换的序列密码。 一、RC4流密码算法 RC4是1987年Ron Rivest为RSA公司设计的一种流密码,是一个面向字节操作、具有密钥长度可变特性的流密码,是目前为数不多的公开的流密码算法。目前的RC4至少使用128为的密钥。RC4的算法可简单描述为:对于n位长的字,有共N=2n个可能的内部置换状态矢量S=S[0],S[1],…,S[N-1],这些状态是保密的。密钥流K由S中的2n个元素按一定方式选出一个元素而生成,每生成一个密钥值,S中的元素就重新置换一次,自始至终置换后的S包含从0到N-1的所有n比特数。 RC4有两个主要算法:密钥调度算法KSA和伪随机数生成算法PRGA。KSA算法的作用是将一个随机密钥变换成一个初始置换,及相当于初始化状态矢量S,然后PRGA利用KSA 生成的初始置换生成一个伪随机数出序列。 密钥调度算法KSA的算法描述如下: fori=0to N-1do S[i]=i; j=0; fori=0to N-1do j=(j+S[i]+K[i mod L])mod N; swap(S[i],S[j]); 初始化时,S中元素的值被设置为0到N-1,密钥长度为L个字节,从S[0]到S[N-1]对于每个S[i]根据有密钥K确定的方案,将S[i]置换为S中的另一个元素。 伪随机数生成算法PRGA的算法描述如下: i=0; j=0; while(true) i=(i+1)mod N; j=(j+S[i])mod N; swap(S[i],s[j]); output k=S[(S[i]+S[j])mod N]; PRGA算法主要完成密钥流的生成,从S[0]到S[N-1],对每个S[i],根据当前S的值,将S[i]与S中的另一个元素置换,,当S[N-1]完成置换后,操作再从S[0]开始重复。

非对称密钥加密

<2> 非对称密钥加密又叫作公开密钥加密算法。在非对称加密体系中,密钥被分解为一对(即一把公开密钥或加密密钥和一把私有密钥或解密密钥)。这对密钥中的任何一把都可作为公开密钥(加密密钥)通过非保密方式向他人公开,而另一把则作为私有密钥(解密密钥)加以保存。公开密钥用于对机密性信息的加密,私有密钥则用于对加密信息的解密。私有密钥只能由生成密钥对的用户掌握,公开密钥可广泛发布,但它只对应于生成该密钥的用户。公开密钥加密技术解决了密钥的发布和管理问题,是目前商业密码的核心。使用公开密钥技术,数据通信的双方可以安全的确认对方的身份和公开密钥。非对称密钥加密算法主要有RSA、PGP等。 ----数据加密技术可以分为三类,即对称型加密、不对称型加密和不可逆加密。 ----对称型加密使用单个密钥对数据进行加密或解密,其特点是计算量小、加密效率高。但是此类算法在分布式系统上使用较为困难,主要是密钥管理困难,使用成本较高,保安性能也不易保证。这类算法的代表是在计算机专网系统中广泛使用的DES(Digital Encryption Standard)算法。 ----不对称型加密算法也称公用密钥算法,其特点是有二个密钥(即公用密钥和私有密钥),只有二者搭配使用才能完成加密和解密的全过程。由于不对称算法拥有两个密钥,它特别适用于分布式系统中的数据加密,在Internet中得到了广泛应用。其中公用密钥在网上公布,为数据源对数据加密使用,而用于解密的相应私有密钥则由数据的收信方妥善保管。 ----不对称加密的另一用法称为“数字签名(Digital signature)”,即数据源使用其密钥对数据的校验和(Check Sum)或其他与数据内容有关的变量进行加密,而数据接收方则用相应的公用密钥解读“数字签名”,并将解读结果用于对数据完整性的检验。在网络系统中得到应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA算法(Digital Signature Algorithm)。不对称加密法在分布式系统中应用时需注意的问题是如何管理和确认公用密钥的合法性。 2、对称性加密和非对称性加密 根据密钥技术的不同,可分为对称加密和非对称加密两种方法;对称加密是指用单一的密钥对明文进行加密,同时必须用该密钥对密文进行解密,加密和解密双方必须知道该密钥。非对称加密技术又称公共密钥技术,密钥成对存在,分别称为私有密钥(private key)和公共密钥(public key);在加密过程采用公共密钥,在解密过程采用私有密钥。 由此可以看出,非对称性加密技术使密钥更加安全,一般用于对密钥进行管理;但是非对称加密技术速度很慢,在数据传输过程中的加密一般采用对称加密算法。 对于VPN网关产品来说,因为非对称加密算法太慢,所以一般采用对称加密算法进行数据传输加密。 3、数据加密强度和加密算法

RSA加密算法的基本原理

RSA加密算法的基本原理 1978年RSA加密算法是最常用的非对称加密算法,CFCA 在证书服务中离不了它。但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解。我们经过整理和改写特别推荐给大家阅读,希望能够对时间紧张但是又想了解它的同事有所帮助。 RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron Rivest,Adi Shamir,Leonard Adleman的名字首字母命名,这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法。 RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。 RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表: 可能各位同事好久没有接触数学了,看了这些公式不免一头雾水。别急,在没有正式讲解RSA加密算法以前,让我们先复习一下数学上的几个基本概念,它们在后面的介绍中要用到: 一、什么是“素数”? 素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。 二、什么是“互质数”(或“互素数”)? 小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数。”这里所说的“两个数”是指自然数。 判别方法主要有以下几种(不限于此): (1)两个质数一定是互质数。例如,2与7、13与19。 (2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与26。(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。(4)相邻的两个自然数是互质数。如15与16。 (5)相邻的两个奇数是互质数。如49与51。 (6)大数是质数的两个数是互质数。如97与88。 (7)小数是质数,大数不是小数的倍数的两个数是互质数。如7和16。 (8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,

非对称加密技术非对称加密技术的教学探讨

非对称加密技术非对称加密技术的教学探讨 一、问题的提出非对称加密技术是电子商务安全的基础,是电子商务安全课程的教学重点。笔者查阅许多电子商务安全教材、网络安全教材,发现这些教材过于注重理论,涉及具体操作较少,内容不够通俗易懂。笔者认为,学生掌握非对称加密技术,需要学习以下四个方面:图形直观认识、 RSA File演示软件直观操作、RSA算法直接计算、PGP的实际应用。 二、非对称加密图形直观认识 非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷提出来的。在公钥加密系统中,加密和解密会使用两把不同的密钥,加密密钥(公开密钥)向公众公开,解密密钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,顾其可称为公钥密码体制。非对称密码体制的加密模型如图所示。 非对称加密的优势:一方面解决了大规模网络应用中密钥的分发和管理问题。如采用对称加密进行网络通信,N个用户需要使用N (N-1)/2个密钥,而采用对称加密体制,N个用户只需要N对密钥。

另一方面实现网络中的数字签名。对称加密技术由于其自身的局限性,无法提供网络中的数字签名。公钥加密技术由于存在一对公钥和私钥,私钥可以表征惟一性和私有性,而且经私钥加密的数据只能用与之对应的公钥来验证,其他人无法仿冒。 三、RSA File演示软件直观操作 利用一款RSA File演示软件可向学生直观展示非对称加密解密过程。其步骤如下: 第一,点击图标,生成密钥对,公钥保存为1.puk,私钥保存 为2.prk。 第二,新建RSA.txt文本,输入内容“RSA演示”。 第三,点击加密图标,装载公钥1.puk,然后载入明文文件RSA.txt,点击加密文件按钮,生成密文“RSA.txt.enc”。若将密文扩展名改为TXT,打开将全是乱码。 第四,点击解密图标,装载私钥2.prk,然后载入密文文件RSA.txt.enc,点击解密文件按钮,生成明文“RSA.dec.txt”。

对称密钥与非对称密钥的区别

对称密钥与非对称密钥的区别 一、对称加密(Symmetric Cryptography) 对称密钥加密,又称私钥加密,即信息的发送方和接收方用同一个密钥去加密和解密 数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个 问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。 对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。 二、非对称加密(Asymmetric Cryptography) 非对称密钥加密系统,又称公钥密钥加密。非对称加密为数据的加密与解密提供了一 个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用 这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

目前最常用的非对称加密算法是RSA算法。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子: (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。 (2) Alice的浏览器向银行的网站请求公钥。 (3)银行将公钥发送给Alice。 (4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。 (5) Alice的浏览器将加密后的对称密钥发送给银行。 (6)银行使用私钥解密得到Alice浏览器的对称密钥。 (7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。 三、总结 (1)对称密钥加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在

RSA非对称密码算法

RSA非对称密码算法 1、RSA非对称密码算法简介 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。 2、工作原理 1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。 4.A将这个消息发给B(已经用B的公钥加密消息)。 5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。 3、主要功能 非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。

【深度分析】运用非对称加密技术进行去中心化身份验证

【深度分析】运用非对称加密技术进行去中心化身份验证 文章出自Fr8 Network首席工程师Yevgeniy Spektor Fr8 Network简介 Fr8 Network希望通过其分布式网络彻底改变物流业。他们旨在为承运人和托运人创建一个点对点的网络,这可能会对商品和服务产生重大影响。因为整个过程将在区块链上公开,从而降低商品价格。 这个系列的文章分为两部分,这篇文章侧重于身份识别和验证,而下一篇文章将讨论智能合约的权限问题。

传统的身份验证和身份识别始终依赖中央服务器,用户必须向其发送密码进行验证。这种中心化的身份验证方法存在一些安全漏洞,最近几年发生过几起重大的恶性事件,导致企业损失数百万美元。 本文中提出的身份验证方案利用非对称加密技术对用户进行身份验证,无需中央服务器,也无需密码或私钥。用户将使用公钥和带有私人密钥签名的随机字符串进行身份验证,而不是使用用户名和密码进行身份验证。 OAuth 2.0和SAML 2.0 身份验证的最大挑战之一,就是用户需要管理和维护大量软件、服务和平台的凭据。而OAuth 2.0或SAML能解决这个问题,让用户可以在多个平台上使用一组凭据来进行识别和验证。但需要注意OAuth 2.0还具有的资源授权的功能,而这一功能很多时候不会常用。 传统验证方案有两个主要缺陷。首先,OAuth 2.0和SAML都需要中央身份验证服务器来验证登录资格和代币访问权限。身份验证依赖于中央实体,这就让应用程序和服务存在了安全风险。如果授权服务器(OAuth)或身份提供商(SAML)因任何原因不可用或者受到破坏,用户将无法登录。例如,假设应用程序A允许用户使用他们的脸书帐户登录,但如果脸书遭到入侵无法使用,应用程序

密钥原理

金融行业密钥详解 金融行业因为对数据比较敏感,所以对数据的加密也相应的比较重视。在其中有关密钥及加密方面的文章很少,并且散发在各个银行及公司的手中,在网上没有专门对这部分进行介绍的。本文对金融行业的密钥进行较深入的介绍,包括象到底什么是主密钥(MasterKey)、传输密钥(MacKey),为什么我们需要这些东西等。 本文采取追源溯本的方式,力求让对这感兴趣的人达到知其然,同时也知其所以然,而不是模模糊糊的知道几个概念和名词。因为本文主要是针对对金融行业密钥不是很熟悉的人,所以如果你对密钥很熟悉就不必仔细看了。 好了,咱们言规正传。我们知道,金融行业有很多数据要在网络上传递,包括从前置到主机,从自助终端到前置等,这些数据在网络上传来传去,我们很容易就会想到安全性的问题,如果这些数据被人窃取或拦截下来,那我们怎么敢在银行存钱了。这个问题在计算机出现时就被前人考虑到了,所以出现了很多各种各样的加解密技术。 抛开这些不管,假设当初由我们自己来设计怎样解决数据被窃取的情况。假设我们有一段数据,是ATM 取款的报文,包括一个人的磁卡号、密码、取款金额,现在需要将这些数据从一台ATM机器传到前置机处理,这些数据是比较机密的,如果被人窃取了,就可以用该卡号和密码把帐户中的钱取走。 首先,我们可以想到用专用的银行内部网络,外面的人无法获得网络的访问权。这个仔细想想显然不可行的,因为一是不能保证外人一定没办法进入银行内部网络,二是银行内部人员作案是没法防止的。 接着,我们很容易想到,既然保证数据不被窃取的可能性很小,那我们何不变换一下思路,数据避免不了被窃取,那我如果将数据处理下,让你即使窃取到数据,也是一些无用的乱码,这样不就解决问题了吗。这个想法比较接近现在的做法了,当前置机接收到了数据,它肯定是对数据进行反处理,即与ATM端完全步骤相反的数据处理,即可得到明文的数据。我们再进一步想想,如果因为某种原因,报文中的取款金额被改变了,这样就会导致ATM出的钱和前置扣帐记录的钱不一致的情况,看来我们必须加上一个验证机制,当前置机收到ATM发送的一个报文时,能够确认报文中的数据在网络传输过程中没有被更改过。 怎样实现?最简单的,象计算机串口通讯一样,对通讯数据每一位进行异或,得到0或1,把0或1放在在通讯数据后面,算是加上一个奇偶校验位,收到数据同样对数据每位进行异或,得到0或1,再判断下收到数据最后一位与算出来的是否一致。这种方式太简单了,对于上面提到的ATM到前置机的报文来说,没什么用处,不过我们可以将对数据每一位异或的算法改成一个比较复杂点的。 因为DES算法已经出来了很多年了,并且在金融行业也有广泛的应用,我们何不用DES算法进行处理,来解决上面的问题呢。我们应该了解DES算法(此处指单DES)的,就是用一个64bit 的Key对64bit 的数据进行处理,得到加密后的64bit数据。那我们用一个Key对上面的报文进行DES算法,得到加密后的64bit数据,放到报文的最后,跟报文一起送到前置机,前置机收到报文后,同样用Key对数据(不包括最后的64bit加密数据)进行DES加密,得出64bit的数据,用该数据与ATM发送过来的报文最后的64bit数据比较,如果两个数据相同,说明报文没有中途被更改过。 再进一步,因为DES只能够对64bit的数据进行加密,一个报文可不止64bit,哪我们怎么处理呢?只对报文开头的64bit加密?这个是显然不够的。

浅析非对称加密的应用领域

浅析非对称加密的应用领域 非对称加密 非对称加密能够提供一对密钥,公钥和私钥,使用公钥加密的内容无法使用公钥进行解密,必须使用其对应的私钥才能解密,反之亦然,正好符合我们的要求: 我们可以自己保留私钥,把公钥提供给Web程序,这样注册文件只能由私钥生成而无法使用公钥进行生成,用户即使掌握了公钥也无法生成注册文件。 简单介绍一下我们使用的非对称加密方法:RSA,该方法基于一个数学难题:大数的因子分解,该加密方法已经集成在.net的类库中。 在C#中我们可以使用RSACryptoServiceProvider类进行产生密钥对,明文加密和密文解密的动作。 在使用RSACryptoServiceProvider类的时候我们会发现,类库要求我们进行加密的明文必须为128个字节,多于这个数量会引发异常,所以很多朋友在网上提出解决方案,比如把明文切断,分别加密啦等等,其实我觉得这是一个误区,要解释这个误区,我们得先从非对称加密的常用领域说起。

非对称加密的常用领域 使用非对称加密时我们一般会将私钥保留,将公钥分发给用户,当然,具体的分发动作是通过证书还是怎么样不在我们这次的讨论范围内。 第一种场景:用户使用公钥进行加密,则只能由我们自己的私钥进行解密,就可以保证我们传递的信息是加密过的只有私钥的持有人能够对密文进行解密,其他人(包括公钥的持有人)也是无法解密密文的,但是这同样带来一个问题,由于非对称加密实现算法较为复杂,加密过程比较耗时,因此,我们一般将对称加密和非对称加密结合使用。即:使用对称加密算法对明文进行加密,使用非对称加密算法对对称加密的密钥进行加密,其实说到底,就是使用非对称加密算法进行对称加密密钥的发布,这也是“一次一密”的一种实现方法。 第二种场景是我们使用私钥进行加密,公钥的持有人都可以使用公钥进行解密,这样,公钥持有人就可以确认该内容是由私钥的持有人发布出来的,同样,由于非对称加密和解密比较耗时的原因,我们可以对该实现方式进行改良,最常见的改良方式为:我们可以对明文进行散列操作,最终将明文散列为较短的一个散列码,然后我们使用私钥对该散列码进行加密,在公钥的持有人收到消息后,可以重复上面的操作,比对自己的散列码和解析出的散列码是否相同,如果相同,则可以证明该消息是由公钥的持有人发布的,这就是我们常说的电子签名,当然我们也可以将上面提到的对称密钥的发布过程也包含在电子签名的过程中,以此来保证消息的内容只有公钥的持有人能够查看。 通过上面两种应用场景我们可以发现,非对称加密算法只要能够满足128个字节的加密就能满足所有的应用需求。

非对称加密算法有什么特点

非对称加密算法有什么特点 什么非对称加密算法非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。 另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。 甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。 工作原理1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。 4.A将这个消息发给B(已经用B的公钥加密消息)。 5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。

RSA公开密钥密码系统的数学原理

密钥管理中心产生一对公开密钥和秘密密钥的方法如下:在离线方式下,先产生两个足够大的强质数p、q。可得p与q的乘积为n=pxq。再由p和q算出另一个数 z=(p-1)×(q-1),然后再选取一个与z互素的奇数e,称e为公开指数;从这个e值可以找出另一个值d,并能满足e×d=1 mod (z)条件。由此而得到的两组数(n,e) 和(n,d)分别被称为公开密钥和秘密密钥,或简称公钥和私钥。 对于明文M,用公钥(n,e) 加密可得到密文C。 C = M mod (n)(1) 对于密文C,用私钥(n,d)解密可得到明文M。 M = C mod (n)(2) (2) 式的数学证明用到了数论中的欧拉定理,具体过程这里不赘述。 同法,也可定义用私钥(n,d)先进行解密后,然后用公钥(n,e)进行加密(用于签名)。 p、q、z由密钥管理中心负责保密。在密钥对一经产生便自动将其销毁或者为了以后密钥恢复的需要将其存入离线的安全黑库里面;如密钥对是用户自己离线产生的,则p、q、z的保密或及时销毁由用户自己负责。在本系统中,这些工作均由程序自动完成。在密钥对产生好后,公钥则通过签证机关CA以证书的形式向用户分发;经加密后的密态私钥用PIN卡携带分发至用户本人。 RSA算法之所以具有安全性,是基于数论中的一个特性事实:即将两个大的质数合成一个大数很容易,而相反的过程则非常困难。在当今技术条件下,当n足够大时,为了找到d,欲从n中通过质因子分解试图找到与d对应的p、q是极其困难甚至是不可能的。由此可见,RSA的安全性是依赖于作为公钥的大数n的位数长度的。为保证足够的安全性,一般认为现在的个人应用需要用384或512比特位的n,公司需要用1024比特位的n,极其重要的场合应该用2048比特位的n。

对称密钥密码系统

对称密钥密码系统 2000多年以前,罗马国王Julius Caesar使用过现今被称为“凯撒密码”的加密算法。此加密算法其实是“移位密码”算法的一个特例。由于移位密码安全性不高,使用穷举爆力技术很容易将其破解,于是人们发明了“代换密码”。而移位密码其实是代换密码的一个子集。虽然代换密码安全性有所提高,使用穷举爆力技术较难破解,然而使用统计密码分析技术却可以很容易地破解代换密码。 到了几百年前,有人发明了“置换密码”有时也叫“换位密码”,之后现代密码技术开始出现。很多人把Claude Shannon誉为现代密码学之父,他提出了“扩散”和“混淆”来构造密码体制的基本要素。这种加密技术可以有效的挫败使用统计分析技术来破解密码。 1973年,Horst Feistel公开了他的“Feistel密码”,这是第一个体现密码之父Shannon思想的密码系统。目前,几乎所有的对称密码系统都使用了Feistel密码的设计特征。 1973年,(美)国家标准局(NBS),即现在的(美)国家标准技术研究所(NIST)公布了征求国家密码标准的提案,人们建议了许多的密码系统。 1977年7月,NBS经过对众多的密码系统进行评估后,采纳了IBM在20世纪60年代(1960s)研制出来的一个密码系统作为数据加密标准(DES),此系统是由Horst Feistel领导的一个研究组研制出来的。这个密码系统基于一个称为LUCIFER[Fic73]的密码系统。LUCIFER密码系统本质上是Feistel密码的一个推广。 1983年、1988年和1993年,DES再度被认定为(美)国家标准。 1997年,RSA实验室发布了一个以10000美元作为酬金的挑战:寻找一个前面带有一个已知明文块的密文的DES密钥。由Roche Verse牵头的一个工程小组动用了70000多台通过因特网连接起来的计算机系统,使用穷举爆力攻击程序大约花费96天的时间找到了正确的DES密钥。意识到DES已经快完成它的历史使命,NIST于1997年1月宣布了一项选择一个用作高级加密标准(AES)的候选算法的计划:这个新的标准的将取代DES。

加密技术原理

加密技术原理 一.密钥与算法 (一) 密码技术 1. 密码技术的必要性 必须经过公共通道(如Internet)传输的敏感信息通常不是以明文而是以密文的方式进行通讯传输的。电子商务特别依赖于加密或秘密代码形式来保护信息。加密的目的是使黑客在获得通过网络传输的秘密文件时,无法将它恢复为原文,密码技术是保证网络、信息安全的核心技术。 2.加密技术 加密是对原来明文信息中的加密为衔文数字信息。解密是将加密的一段密文信息恢复为原来的明文信息。加密就是信息的变异,它将某种形式(文本、视频、图像)的信息转变为仅通过解密密钥解密后才可读的形式。 基本的加密方法有:替换加密和转换加密。 3. 替换加密法 (1) 单字母加密方法 即利用另一个字母表(与正常的字母表符号或顺序不同)中的字母替代明文中的字母。单字母加密的方法有很多中,这里介绍其中几种。 例1:恺撒(Caesar)密码, 这是加密法中最古老的一种,它使用的密码字母表与普通字母表相同,加密时把明文中的每个字母都用字母表中该字母右边移动固定数目后的位置的字母替代,并认为Z 后面是A。这个固定数目称为偏移量,我们称其为密钥(Key)。比如,取每个字母其右边第K个字母作为偏移量,则密钥为这个数字K。 举例来说,如果明文为“important”,其偏移量为3,Key=3,第一个字母“i”在字目表上右移 3 个字母后为“L”,照此类推,则密文(记做C)则为“LPSRUWDQW”。 可见,即使算法公开,别人如果不知道偏移量为3,仍然不能解密。加密者不必担心算法被他人知道,他主要关心密钥不被他人知道。 单字母替换加密法由于是一个明文字母对应唯一一个密文字母。密码分析者可将密文中字母出现的频率与这些统计相比较,因而容易逐个击破直至最后破译。 (2) 多字母加密方法 多字母加密是使用密钥进行加密。密钥是一组信息(一串字符)。同一个明文经过不同的密钥加密后,其密文也会不同。 例1:维吉尼亚(Vigenere)密码。V igenere(维吉利亚)是法国密码专家,以他名字命名的密码是这样的:假设明文m=m1m2m3......mn, 密钥Key=K1K2K3......Kn,对应密文C=https://www.360docs.net/doc/f0614626.html,, 则:Ci = mi + Ki mod 26,i = 1,2,......n,其中,26 个字母的序号对应是0------25 mi 是明文中第i 个字母的序号,

对称密钥密码

1引言 计算机的发展给人类带来了前所未有的便利,以计算机信息技术为手段的企业信息化建设,已成为企业必不可少的部分。计算机CAD技术高速度、高精度和高效等的优点,已经逐步取代手工设计,广泛应用于产品设计工作中。CAD图纸,在任何时候,都是一个企业的命脉。在使用SolidWorks等软件绘制图纸的过程中,作为企业是否经常会考虑:我们厂刚刚设计出来的新产品,怎么市场上别的牌子的产品也已经上市啦?技术人员的流动,是否会同时有图纸的流动?我们花了几十万买的图纸,怎么隔壁的那个厂子图纸和我们的一样呢?我们的光驱、软驱、U盘接口都封掉了,可是图纸怎么还是传出去啦?解决这些问题的一种有效方法就是使用现代密码技术,加密技术是保障信息安全的最基本的、最核心的技术措施。对CAD图纸进行加密应该是一种比较合适的安全保密措施 2密码技术 2.1基本概念 密码学是研究编制密码和破译密码的技术科学。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。随着先进科学技术的应用,密码学已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。密码就是一组含有参数K的变换E。设已知信息M,通过变换E得到密文C。即C=EK(M)这个过程称之为加密,参数K称为密钥。

2.1.1传统密码学 自从有了人类社会就有了信息交流,特别是出现了战争,为了信息交流的安全,就出现了密码技术。从古代到16世纪末由于这个时期生产力低下,产生的许多密码体制都是可用纸笔或者简单的器械实现加密/解密的,这个时期的密码体制主要有两大类:一类是换位密码体制,另一类是代替密码体制。从二十世纪初到20世纪50年代末,为了适应密码通信的需要,密码设计者设计出了一些采用复杂的机械和电动机械设备实现信息加密/解密操作,他们代替了繁重的手工作业方式,在战争中发挥了重要的作用。转轮密码机是这一时期的杰出代表。 2.1.2现代密码学 对称密钥密码体制又称为单密钥密码体制或秘密密钥密码体制。这种密码体制的加密密钥和解密密钥相同,或者虽然不相同,但可由其中的任意一个可以和容易地推导出另一个。传统的密码学都是属于对称密钥密码体制。现在,在传统密码学地基础上对称密码体制也有了新地发展,像序列密码,分组密码,还有对称密钥密码体制的典型代表:数据加密标准DES和高级数据加密标准AES。非对称密钥密码体制又称为双密钥密码体制或公开密钥密码体制。这种密码体制的加密/解密操作分别使用两个不同地密钥,并且不可能由加密密钥推导出解密密钥。采用非对称密钥密码体制的每个用户都有一对相互关联而又彼此不同地密钥,使用其中的一个密钥加密的数据,不能使用该密钥自身进行解密,而只能使用对应的另一个密钥进行解密。在这一对密钥中,其中一个密钥称为公钥,它可以公开并通过公开的信道发给任何一位想与自己通信的另

用非对称密码RSA算法加密文件

大连民族学院计算机学院 《网络安全》实验报告 学院:计算机科学与工程 题目:用非对称密码RSA算法加密文件 专业:网络工程 姓名:熊秋蕾 学号:2009083124 指导老师:姜楠

1、实验类型:设计型 2、实验目的 通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。 3、实验内容 (1)RSA算法分析。 (2)RSA算法编程。 4、实验原理 RSA密码体制描述: 1.密钥的生成 选择p,q,p,q为两个大的互异素数,计算n=p*q, ?(n)=(p-1)(q-1), 选择整数e使gcd(?(n),e)=1,(1

(3)实验结束后进行角色互换,再重复(1)中的实验,直到每个人都轮流当过三种角色。 7、实验步骤及注意事项 (1)利用奇数生成器,生成密钥对和私钥、公钥 java提供了密钥的生成器函数KeyPairGenerator;公钥保存在Skey_public.dat文件中,私钥保存在Skey_privat.dat package newpackge1; import java.io.*; import java.security.*; public class Skey_RSA{ public static void main(String args[]) throws Exception{ //创建密钥对生成器,指定加密和解密算法为RSA KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA"); //指定密钥的长度,初始化密钥对生成器 kpg.initialize(1024); //生成密钥对 KeyPair kp=kpg.genKeyPair(); //获取公钥 PublicKey pbkey=kp.getPublic(); //获取私钥 PrivateKey prkey=kp.getPrivate(); //保存公钥到文件 FileOutputStream f1=new FileOutputStream("Skey_public.dat"); ObjectOutputStream b1=new ObjectOutputStream(f1); b1.writeObject(pbkey); //保存私钥到文件 FileOutputStream f2=new FileOutputStream("Skey_privat.dat"); ObjectOutputStream b2=new ObjectOutputStream(f2); b2.writeObject(prkey); }} (2)加密过程,提取公钥,对字符串进行加密,将密文以字符串形式保存在文件中package newpackge1; import java.security.interfaces.*; import java.math.*;

相关文档
最新文档