SlideShare a Scribd company logo
Murphy Choy
University College Dublin
Data Masking with Classical
Ciphers
Introduction
•Data privacy has been a major problem.
•Data encryption algorithms
Caesar’s cipher
•One of the earliest known ciphers
•A shift in the in the alphabet order
•The encryption function is expressed below as
•The decryption function is expressed below as
How does Caesar’s cipher work?
ABCDEFGHIJKLMNOPQRSTUVWXYZ
NOPQRSTUVWXYZABCDEFGHIJKLM
I am alive
V nz nyvir
I am
V nz
Implementation
/********************************************************
GENERATION OF THE CIPHER THROUGH CHARACTER SHIFTS
*********************************************************/
DATA _NULL_;
/*ALPHABETICAL STRING: 26 CHARACTERS*/
ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
/*SHIFTING THE STRING BY THE NUMBER OF CHARACTER*/
CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT+1)
%DO I = 1 %TO &SHIFT;
||SUBSTR(ORIGINAL,&I,1)
%END;
);
/*ASSIGNING A MACRO VARIABLE FOR SUBSEQUENT USE*/
CALL SYMPUT('ORIGINAL',COMPRESS(ORIGINAL));
CALL SYMPUT('CIPHER',COMPRESS(CIPHER));
RUN;
Implementation
/********************************************************
ENCRYPTION OR DECRYPTION OF DATA
*********************************************************/
DATA &INPUT;
SET &INPUT;
/*ENCRYPTION*/
%IF &MODE = "ENCRYPT" %THEN %DO;
ENCRYPTED_&VAR = TRANSLATE(&VAR,"&ORIGINAL","&CIPHER");
%END;
/*DECRYPTION*/
%ELSE %IF &MODE = "DECRYPT" %THEN %DO;
DECRYPTED_&VAR = TRANSLATE(ENCRYPTED_&VAR,"&CIPHER","&ORIGINAL");
%END;
/*NO ACTION*/
%ELSE %DO;
&VAR = &VAR;
%END;
RUN;
Alberti’s cipher
•Leon Battista Alberti in the mid 15th century
•Method uses a wheel with 2 circles
•Substitution wheel changes for every Nth words
by a shift of K
How does the Alberti’s cipher work?
ABCDEFGHIJKLMNOPQRSTUVWXYZ
FGHIJKLMNOPQRSTUVWXYZABCDE
KLMNOPQRSTUVWXYZABCDEFGHIJ
PQRSTUVWXYZABCDEFGHIJKLMNO
ZABCDEFGHIJKLMNOPQRSTUVWXY
Implementation
/*FIRST TIME INITIALIZATION*/
IF _N_ = 1 THEN DO;
CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT_1+1)
%DO I = 1 %TO &SHIFT_1;
||SUBSTR(ORIGINAL,&I,1)
%END;
);
ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER);
COUNT = 1;
END;
/*EVERY NTH TIME REINITIALIZATION*/
ELSE IF COUNT = &SHIFT_2 THEN DO;
CIPHER = COMPRESS(SUBSTR(CIPHER,&SHIFT_3+1)
%DO I = 1 %TO &SHIFT_3;
||SUBSTR(CIPHER,&I,1)
%END;
);
ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER);
COUNT = 1;
END;
BIFID cipher
•Complex cipher
•Polybius square with transposition and
fractionation
•2 string substitution
How does the BIFID cipher works?
Iamalive
41211415
21313251
4121141521313251
DBQVBCHE
Implementation
/******************************************************************************
POLYBIUS CREATION SECTION
*******************************************************************************/
/*INITIALIZATION OF THE POLYBIUS TABLE*/
DATA POLYBIUS_TABLE;
ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789.';
LENGTH_OF_STRING = LENGTH(ORIGINAL);
DO I = 1 TO LENGTH_OF_STRING;
/*SELECTING EACH LATTER AND OUTPUTTING THEM*/
WORD = SUBSTR(ORIGINAL,I,1);
OUTPUT;
END;
DROP ORIGINAL LENGTH_OF_STRING I;
RUN;
Implementation
/*CREATING RANDOMNESS TO PRODUCE SQUARES*/
DATA POLYBIUS_TABLE;
SET POLYBIUS_TABLE;
/*PRODUCING THE RANDOMNESS*/
CHANCE = RANUNI(&SEED);
RUN;
/*SORTING THE TABLE SIMULATE RANDOMNESS IN TABLE*/
PROC SORT DATA = POLYBIUS_TABLE;
BY CHANCE;
RUN;
Implementation
/*SETTING THE POSITION OF THE POLYBIUS TABLE*/
DATA POLYBIUS_TABLE;
SET POLYBIUS_TABLE;
RETAIN X Y COUNT;
/*FIRST INITIALIZATION*/
IF _N_ = 1 THEN DO;
X = 1;Y = 1;
COUNT = 1;
END;
/*REPETITION FOR THE SQUARE BEHAVIOR*/
ELSE IF COUNT = 6 THEN DO;
X = 1;Y = SUM(Y,1);
COUNT = 1;
END;
/*INTERMEDIATE CALCULATIONS*/
ELSE DO;
X = SUM(X,1);
COUNT = SUM(COUNT,1);
END;
RUN;
Implementation
/******************************************************************************
VALUE ASSIGNING SECTION
*******************************************************************************/
/*CIPHER CREATION SECTION*/
DATA _NULL;
SET POLYBIUS_TABLE;
/*LENGTH DECLARATIONS*/
LENGTH CIPHER1 $45 CIPHER2 $45 KEY $45;
/*KEY RETENTION FOR BOTH CIPHER AND DECIPHER*/
RETAIN CIPHER1;
RETAIN CIPHER2;
RETAIN KEY;
/*ENCRYPTION KEY AND CIPHERS*/
KEY = COMPRESS(KEY||WORD);
CIPHER1 = COMPRESS(CIPHER1||X);
CIPHER2 = COMPRESS(CIPHER2||Y);
Implementation
/*ASSIGNMENT OF KEY AND CIPHER AS MACRO VALUES*/
CALL SYMPUT('CIPHER1',COMPRESS(CIPHER1));
CALL SYMPUT('CIPHER2',COMPRESS(CIPHER2));
CALL SYMPUT('KEY',COMPRESS(KEY));
/*SUBSTITUTION KEY SECTION*/
SUB_KEY = COMPRESS(X||Y);
CALL SYMPUT('SUBKEY'||TRIM(LEFT(_N_)),SUB_KEY);
CALL SYMPUT('LETTER'||TRIM(LEFT(_N_)),WORD);
PUT SUB_KEY = KEY = CIPHER1 = CIPHER2 =;
RUN;
Implementation
/*DECLARATION OF THE LENGTH OF THE ENCRYPTED FIELD*/
LENGTH ENCRYPTED_&VAR $ &MAX_LENGTH;
/*REMOVAL OF SPACES WITH DECIMALS*/
&VAR = SUBSTR(TRANSLATE(&VAR,'.',' '),1,LENGTH(&VAR));
/*CREATING CIPHER KEYS*/
CIPHER1_&VAR = TRANSLATE(&VAR,"&CIPHER1","&KEY");
CIPHER2_&VAR = TRANSLATE(&VAR,"&CIPHER2","&KEY");
/*COMBINED CIPHER KEY*/
CIPHER_&VAR = COMPRESS(CIPHER1_&VAR||CIPHER2_&VAR);
Implementation/*SUBSTITUTION OF KEYS*/
DO I = 1 TO LENGTH(CIPHER_&VAR)-1 BY 2;
/*INITIALIZATION*/
IF I = 1 THEN ENCRYPTED_&VAR = '';
/*SUBSTITUTION STEPS*/
IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&SUBKEY1") THEN ENCRYPTED_&VAR =
COMPRESS(ENCRYPTED_&VAR||"&LETTER1");
%DO J = 1 %TO 36;
ELSE IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&&SUBKEY&J") THEN ENCRYPTED_&VAR =
COMPRESS(ENCRYPTED_&VAR||"&&LETTER&J");
%END;
END;
/*REMOVAL OF UNNECESSARY COLUMNS*/
DROP I CIPHER1_&VAR CIPHER2_&VAR CIPHER_&VAR;
Conclusion
•Ciphers are easily implemented using SAS

More Related Content

PPTX
Right time Vs real time
TXT
SAS codes and tricks Comprehensive all codess
DOCX
SAS codes and tricks Comprehensive all codes
DOC
Quiz using C++
PDF
Java Print method
DOCX
Sas code for examples from a first course in statistics
PDF
Circular queue
PDF
Right time Vs real time
SAS codes and tricks Comprehensive all codess
SAS codes and tricks Comprehensive all codes
Quiz using C++
Java Print method
Sas code for examples from a first course in statistics
Circular queue

More from Murphy Choy (7)

PPT
Applications of the DOW loop
PPTX
Building a decision tree from decision stumps
PPTX
Data masking in sas
PPTX
A simple introduction to candlestick charts in sas
PPTX
General Insurance Conference 2014: Big Data for Insurance Companies
PPT
Edison chen and Cammie Tse Scandal: A twitter study
PPTX
Real Time Process Compliance using Nomenclature Approach
Applications of the DOW loop
Building a decision tree from decision stumps
Data masking in sas
A simple introduction to candlestick charts in sas
General Insurance Conference 2014: Big Data for Insurance Companies
Edison chen and Cammie Tse Scandal: A twitter study
Real Time Process Compliance using Nomenclature Approach
Ad

Recently uploaded (20)

PPTX
Business Ppt On Nestle.pptx huunnnhhgfvu
PPTX
SAP 2 completion done . PRESENTATION.pptx
PPTX
IBA_Chapter_11_Slides_Final_Accessible.pptx
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PDF
annual-report-2024-2025 original latest.
PPTX
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
PPTX
IB Computer Science - Internal Assessment.pptx
PDF
168300704-gasification-ppt.pdfhghhhsjsjhsuxush
PDF
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
PPTX
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
PPTX
The THESIS FINAL-DEFENSE-PRESENTATION.pptx
PPTX
Supervised vs unsupervised machine learning algorithms
PPTX
Acceptance and paychological effects of mandatory extra coach I classes.pptx
PPTX
Introduction to Knowledge Engineering Part 1
PPTX
Introduction to machine learning and Linear Models
PDF
[EN] Industrial Machine Downtime Prediction
PPTX
ALIMENTARY AND BILIARY CONDITIONS 3-1.pptx
PPTX
1_Introduction to advance data techniques.pptx
PPTX
STUDY DESIGN details- Lt Col Maksud (21).pptx
Business Ppt On Nestle.pptx huunnnhhgfvu
SAP 2 completion done . PRESENTATION.pptx
IBA_Chapter_11_Slides_Final_Accessible.pptx
Miokarditis (Inflamasi pada Otot Jantung)
annual-report-2024-2025 original latest.
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
IB Computer Science - Internal Assessment.pptx
168300704-gasification-ppt.pdfhghhhsjsjhsuxush
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
The THESIS FINAL-DEFENSE-PRESENTATION.pptx
Supervised vs unsupervised machine learning algorithms
Acceptance and paychological effects of mandatory extra coach I classes.pptx
Introduction to Knowledge Engineering Part 1
Introduction to machine learning and Linear Models
[EN] Industrial Machine Downtime Prediction
ALIMENTARY AND BILIARY CONDITIONS 3-1.pptx
1_Introduction to advance data techniques.pptx
STUDY DESIGN details- Lt Col Maksud (21).pptx
Ad

Data masking with classical ciphers

  • 1. Murphy Choy University College Dublin Data Masking with Classical Ciphers
  • 2. Introduction •Data privacy has been a major problem. •Data encryption algorithms
  • 3. Caesar’s cipher •One of the earliest known ciphers •A shift in the in the alphabet order •The encryption function is expressed below as •The decryption function is expressed below as
  • 4. How does Caesar’s cipher work? ABCDEFGHIJKLMNOPQRSTUVWXYZ NOPQRSTUVWXYZABCDEFGHIJKLM I am alive V nz nyvir I am V nz
  • 5. Implementation /******************************************************** GENERATION OF THE CIPHER THROUGH CHARACTER SHIFTS *********************************************************/ DATA _NULL_; /*ALPHABETICAL STRING: 26 CHARACTERS*/ ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; /*SHIFTING THE STRING BY THE NUMBER OF CHARACTER*/ CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT+1) %DO I = 1 %TO &SHIFT; ||SUBSTR(ORIGINAL,&I,1) %END; ); /*ASSIGNING A MACRO VARIABLE FOR SUBSEQUENT USE*/ CALL SYMPUT('ORIGINAL',COMPRESS(ORIGINAL)); CALL SYMPUT('CIPHER',COMPRESS(CIPHER)); RUN;
  • 6. Implementation /******************************************************** ENCRYPTION OR DECRYPTION OF DATA *********************************************************/ DATA &INPUT; SET &INPUT; /*ENCRYPTION*/ %IF &MODE = "ENCRYPT" %THEN %DO; ENCRYPTED_&VAR = TRANSLATE(&VAR,"&ORIGINAL","&CIPHER"); %END; /*DECRYPTION*/ %ELSE %IF &MODE = "DECRYPT" %THEN %DO; DECRYPTED_&VAR = TRANSLATE(ENCRYPTED_&VAR,"&CIPHER","&ORIGINAL"); %END; /*NO ACTION*/ %ELSE %DO; &VAR = &VAR; %END; RUN;
  • 7. Alberti’s cipher •Leon Battista Alberti in the mid 15th century •Method uses a wheel with 2 circles •Substitution wheel changes for every Nth words by a shift of K
  • 8. How does the Alberti’s cipher work? ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHIJKLMNOPQRSTUVWXYZABCDE KLMNOPQRSTUVWXYZABCDEFGHIJ PQRSTUVWXYZABCDEFGHIJKLMNO ZABCDEFGHIJKLMNOPQRSTUVWXY
  • 9. Implementation /*FIRST TIME INITIALIZATION*/ IF _N_ = 1 THEN DO; CIPHER = COMPRESS(SUBSTR(ORIGINAL,&SHIFT_1+1) %DO I = 1 %TO &SHIFT_1; ||SUBSTR(ORIGINAL,&I,1) %END; ); ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER); COUNT = 1; END; /*EVERY NTH TIME REINITIALIZATION*/ ELSE IF COUNT = &SHIFT_2 THEN DO; CIPHER = COMPRESS(SUBSTR(CIPHER,&SHIFT_3+1) %DO I = 1 %TO &SHIFT_3; ||SUBSTR(CIPHER,&I,1) %END; ); ENCRYPTED_&VAR = TRANSLATE(&VAR,ORIGINAL,CIPHER); COUNT = 1; END;
  • 10. BIFID cipher •Complex cipher •Polybius square with transposition and fractionation •2 string substitution
  • 11. How does the BIFID cipher works? Iamalive 41211415 21313251 4121141521313251 DBQVBCHE
  • 12. Implementation /****************************************************************************** POLYBIUS CREATION SECTION *******************************************************************************/ /*INITIALIZATION OF THE POLYBIUS TABLE*/ DATA POLYBIUS_TABLE; ORIGINAL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789.'; LENGTH_OF_STRING = LENGTH(ORIGINAL); DO I = 1 TO LENGTH_OF_STRING; /*SELECTING EACH LATTER AND OUTPUTTING THEM*/ WORD = SUBSTR(ORIGINAL,I,1); OUTPUT; END; DROP ORIGINAL LENGTH_OF_STRING I; RUN;
  • 13. Implementation /*CREATING RANDOMNESS TO PRODUCE SQUARES*/ DATA POLYBIUS_TABLE; SET POLYBIUS_TABLE; /*PRODUCING THE RANDOMNESS*/ CHANCE = RANUNI(&SEED); RUN; /*SORTING THE TABLE SIMULATE RANDOMNESS IN TABLE*/ PROC SORT DATA = POLYBIUS_TABLE; BY CHANCE; RUN;
  • 14. Implementation /*SETTING THE POSITION OF THE POLYBIUS TABLE*/ DATA POLYBIUS_TABLE; SET POLYBIUS_TABLE; RETAIN X Y COUNT; /*FIRST INITIALIZATION*/ IF _N_ = 1 THEN DO; X = 1;Y = 1; COUNT = 1; END; /*REPETITION FOR THE SQUARE BEHAVIOR*/ ELSE IF COUNT = 6 THEN DO; X = 1;Y = SUM(Y,1); COUNT = 1; END; /*INTERMEDIATE CALCULATIONS*/ ELSE DO; X = SUM(X,1); COUNT = SUM(COUNT,1); END; RUN;
  • 15. Implementation /****************************************************************************** VALUE ASSIGNING SECTION *******************************************************************************/ /*CIPHER CREATION SECTION*/ DATA _NULL; SET POLYBIUS_TABLE; /*LENGTH DECLARATIONS*/ LENGTH CIPHER1 $45 CIPHER2 $45 KEY $45; /*KEY RETENTION FOR BOTH CIPHER AND DECIPHER*/ RETAIN CIPHER1; RETAIN CIPHER2; RETAIN KEY; /*ENCRYPTION KEY AND CIPHERS*/ KEY = COMPRESS(KEY||WORD); CIPHER1 = COMPRESS(CIPHER1||X); CIPHER2 = COMPRESS(CIPHER2||Y);
  • 16. Implementation /*ASSIGNMENT OF KEY AND CIPHER AS MACRO VALUES*/ CALL SYMPUT('CIPHER1',COMPRESS(CIPHER1)); CALL SYMPUT('CIPHER2',COMPRESS(CIPHER2)); CALL SYMPUT('KEY',COMPRESS(KEY)); /*SUBSTITUTION KEY SECTION*/ SUB_KEY = COMPRESS(X||Y); CALL SYMPUT('SUBKEY'||TRIM(LEFT(_N_)),SUB_KEY); CALL SYMPUT('LETTER'||TRIM(LEFT(_N_)),WORD); PUT SUB_KEY = KEY = CIPHER1 = CIPHER2 =; RUN;
  • 17. Implementation /*DECLARATION OF THE LENGTH OF THE ENCRYPTED FIELD*/ LENGTH ENCRYPTED_&VAR $ &MAX_LENGTH; /*REMOVAL OF SPACES WITH DECIMALS*/ &VAR = SUBSTR(TRANSLATE(&VAR,'.',' '),1,LENGTH(&VAR)); /*CREATING CIPHER KEYS*/ CIPHER1_&VAR = TRANSLATE(&VAR,"&CIPHER1","&KEY"); CIPHER2_&VAR = TRANSLATE(&VAR,"&CIPHER2","&KEY"); /*COMBINED CIPHER KEY*/ CIPHER_&VAR = COMPRESS(CIPHER1_&VAR||CIPHER2_&VAR);
  • 18. Implementation/*SUBSTITUTION OF KEYS*/ DO I = 1 TO LENGTH(CIPHER_&VAR)-1 BY 2; /*INITIALIZATION*/ IF I = 1 THEN ENCRYPTED_&VAR = ''; /*SUBSTITUTION STEPS*/ IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&SUBKEY1") THEN ENCRYPTED_&VAR = COMPRESS(ENCRYPTED_&VAR||"&LETTER1"); %DO J = 1 %TO 36; ELSE IF SUBSTR(CIPHER_&VAR,I,2) = COMPRESS("&&SUBKEY&J") THEN ENCRYPTED_&VAR = COMPRESS(ENCRYPTED_&VAR||"&&LETTER&J"); %END; END; /*REMOVAL OF UNNECESSARY COLUMNS*/ DROP I CIPHER1_&VAR CIPHER2_&VAR CIPHER_&VAR;
  • 19. Conclusion •Ciphers are easily implemented using SAS