LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la...

61
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA TEMA 'DISEÑO DE UN SISTEMA DE ENCRIPTACION DE VOZ UTILIZANDO EL MICROPROCESADOR ADSP-2181" LISTADO DE PROGRAMAS NOMBRE MIGUEL E. VICUÑA MUÑOZ Quito, Noviembre de 1.999

Transcript of LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la...

Page 1: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA

TEMA

'DISEÑO DE UN SISTEMA DE ENCRIPTACION DE VOZ

UTILIZANDO EL MICROPROCESADOR ADSP-2181"

LISTADO DE PROGRAMAS

NOMBRE

MIGUEL E. VICUÑA MUÑOZ

Quito, Noviembre de 1.999

Page 2: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

LISTADO DE LOS PROGRAMAS Y ALGORITMOS UTILIZADOS PARA EL

PROCESO DE ENCRIPTACIÓN Y DESENCRIPTACIÓN DJE LA SEÑAL DE VOZ.

Para la comprobación y ejecución de los programas principales de Encriptación y

Desencriptación con sus respectivos algoritmos, es necesario que en el computador se haya

instalado el siguiente sotfware, el cual viene incluido con el EZ-Kit Lite:

C:\ADIJDSP\N (Assembler, Linker, Simulador, Prom Splitter)

21XX\LIB (Archivos de Descripción de la Arquitectura)

21XX\EZfGTL (Programa Host, y Programas Utilitarios)

Los archivos que contienen los utilitarios para ejecutar los programas en el EZ-LAB y

los programas de encriptación y desencriptación de la señal de voz, escritos en el lenguaje

ensamblador del ADSP-2181 son:

C:\ENCRIPTAC10N\P (Programa de Inicialización)

IN1_KJK3.DSP (Programa de Inicialización)

REG_CTRL.DSP (Programa de Control de Registros)

FIN.DSP (Programa de Finalización)

EZKIT_LT.ACH (Archivo de Descripción de la Arquitectura)

PERMUTA\p (Algoritmo E/D N°l)Tx_perm.dspTx_perm.linRx_perm.dspRx__perm.linTablapl.hexTablap2.hex

Page 3: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

XOR\\\\pdexor.dspTx_xor.dspTx_xor.linRx_xor.dspRx_xor.lin

pseu.dspTx_pseu.dspTx.__pseu.IinRx_pseu.dspRx_pseu.lin

pseu2l81.dspTx_p2181.dspTx_p2l81.1inRx_p2181.dspRx_p2181.1in

dcs'2181.dspidcs2181.dspgen_key.dspTx_dcs.dspTx_des.IinRx_des.dspRx des.lin

(Algoritmo E N° 2)(Algoritmo D N° 2)

(Algoritmo E/DN" 3)

(Algoritmo E/D N° 4)

(Algoritmo E N° 5 )(Algoritmo D N° 5)

Todo los archivos indicados en cada una. de las carpetas anteriores (dentro de

C:\EncriptacionV.), son archivos de textos que contienen los algoritmos de cncriptación y

clesencriptación, así como los programas principales con los cuales se ejecutan en cada uno

de los bloques del sistema (Tx_*.dsp y Rx_*.dsp). Estos archivos de programa se

encuentran en lenguaje ensamblador, el cual puede ser editado utilizando cualquier editor

de texto, como por ejemplo el cdit de DOS, lo importante es que el archivo que contenga el

l is tado del programa sea de extensión .DSP.

Page 4: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Una vez escrito los programas en lenguaje ensamblador con extensión .DSP, se

procede a Compilar y Enlazar, el archivo fuente utilizando los programas Assembler

(asm21.exe) y Linkcr (Id21.exe), mediante las siguientes intrucciones desde el DOS:

Assembler:

C:\Encriplacion\CARPETA\asm2t programa -2181

Con este paso se genera a partir del archivo fuente programa.dsp como respuesta tres

archivos, .CDE, .INT, .OBJ. El swítch -2T81 utilizado es aquel que le permite al Assembler

aceptar instrucciones especificas del ADSP-2181. Algo muy importante que hay que

indicar es que todos los archivos *.dsp deben ser previamente esamblados separadamente

para luego ser enlazados y formar así un programa ejecutable.

Linker;

C:\Encriptacion\CARPETA\ld21-i programa.lin-a ..\ezkil_lt -e programa -x -g

En es*ie paso el Linkcr crea un archivo ejecutable a partir de los módulos objeto

creados por el Assembler, dando como resultado el archivo programa.exe.

Los switchs utilizados en este proceso nos dan las posibilidades de:

-i programa.lin : Los archivos listados en el archivo indirecto programa.lin sonenlazados.

-a ..\: El archivo de arquitectura es leído por el Linker.

-e programa: El nombre del archivo dudo a los archivos de salida es programa.exe

-x: Genera un archivo del mapa de memoria -MAF.

-g: Genera un archivo de tabla de símbolos .SYM

Page 5: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

E3 archivo programa.lin es un listado donde se encuentran todos los archivos que se

van a enlazar mediante el programa Linker (Id2l.exe) para generar un archivo ejecutable

programa.exe. A continuación se detalla el contenido de cada uno de los archivos, .lin que

se utilizaron en este trabajo de tesis.

C:\Encriptacion\Permuta\Tx_perm.lin\Tx_permpermulG

C:\Encnptacion\Permuta\Rx_perm.lin\Rx_permpermu!6

C:\Encriptacion\Xor\Txjsor.lin\Tx_xorXor

C:\Encriptacion\Xor\Rx_xorJin\Rx_xorDexor

C:\Encnptacion\Pseu\Tx_pseu.linYTx_pseupseu2!81

C:\En criptacion\Pseu\Rx_pseu.lm\Rx_pseupseu2181

C:\Encripiacion\Pseu2181\Txjp2181Jin\Tx_p2l81. .\permuta\perrnul6pseu2181..\xor\xor

C:\Encriptacion\Pseu2181\Rx_p2181.Iin\Rx__p2181..\permuta\permul6pseu2181..\xor\xor

C:\Encriptacion\Des\Tx_dcs.lin\Tx_des..\permuta\permul6des2181..\xor\xor

Page 6: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

C:\Encriptacion\Oes\Rx_desJhi\Rx__des..\permuta\permul6ides2181..\xor\xorgen key

Una vez obtenido el programa ejecutable programa.exe, este se almacena en el ADSP-

2181 utilizando el Programa Host proporcionado en el EZ-KIT Lite, para ejecutar los

procesos de encriptación (Tx_*.exe) y dcsencriptación (Rx_*.exe) en cada uno de los

bloques del sistema.

Algoritmos de Encriptación N;̂^(Archivo ejecutable en el ADSP-2181)

Out

Esquema del Bloque de Encriptación.

Page 7: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

f^'iuWitt.jpá'fti-^iC'w^í "K**iM?w-y-t9rrr/«*K'K-ií í.'- r^wííyHíy^í;^i'vs*ipy«í*'Jsaipiwtir£*tíSi*^Vví^M3a«

Out

Esquema del Bloque de Desencriptación

A continuación se encuentra el listado de todos los archivos fuentes en lenguaje

emsamblador que se utilizaron en la tesis: "DISEÑO DE UN SISTEMA DE

ENCRIPTACION DE VOZ, UTILIZANDO ELMICROPROCESADORADSP-2181"

Page 8: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa cié Tnici'al iznción ÍNI7.DSP:

Este programa incluye los archivos de inicialización del microprocesador ADSP-21S1

y del codee ADIS47. Se utiliza con los programas de Tx_*.DSP y Rx_*.DSP de los

algoritmos de encriplación y desencripLación respectivamente. Excepto en los del algoritmo

DES2181.DSPe IDES2181.DSP

{ ¡ni7.clsp - Programa de Inicializacion del ADSP-2181 y el CODECMiguel E. Vicuña Muñoz/ Encriptacíón de Voz/ Octubre 1999

Código lomado del programa mic2out.dsp de Analog Devices,

Modificado para utilizar i6,Í7,m7 para laTx. y Rx de datos del CODECIncluye siibrutina de atención a la Interrupción IRQ2

í

{ Variable and Buffer declarations

.var/dm/ram/circ rx_buf[3]; {Status + L data -f- R data, AD1847 rx buffcr}

.var/dm/ram/circ tx_buf[3]; {Cmd + L data + R data, AD1847 tx buffer)

.var/dm/ram/circ init_cmds[13];

.var/din stat_flag;

.var/dm fin_flag;

| Variable and buffer initializaüon

. ini t tx_buf: OxcOOO, 0x0000, 0x0000; {Ini t ial ly set MCE}

.init ¡n¡t_cinds:

Oxc003, {Lcíl input control regb7-6: 0=Ieft Une 1

- l=left aux 12=lef t l ine23=lefl Une 1 post-mixed loopback

b5-4:resb3-0: lefl ¡nput gain x 1.5 dB

1Oxcl03, {

Righí input control regb7-6: 0=nght Une 1

I=right aux 12=rigbt Une 23=right Une 1 post-mixed loopback

b5-4: resb3-0: right input gain x 1.5 dB

Page 9: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Oxc2SS, {Icft aux 1 control regb7 : l=Ieft aux 1 muléb6-5: resb4-0: gaín/atten x 1.5, 08= OdB, 00= 1 2dB}

Oxc3SS, {right aux 1 control regb7 : l=righí aux ! muléb6-5: resb4-0: gaín/attcn x 1.5, 08= OdB, 00= 12dB}

Oxc4S8, {Icft aux 2 control regb7 : l=lefl. aux 2 nnitcb6-5: resb4-0: gain/atlen x 1.5, 08= OdB, 00= 12dB}

Oxc588, {righí aux 2 control regb7 : I=right aux 2 muteb6-5: resb4-0: gain/atlen x 1.5, 08= OdB, 00= 12dB}

OxcóSO, {leít DAC control regb? : I=!efl DAC muteb6 : resb5-Q; attenuatíon x 1.5 dB}

Oxc780, {right DAC control regb7 : l=right DAC muteb6 : resb5-0: attenuaíion x 1.5 dB

data forma t registerb7 : resb5-6: 0=8-bit unsigned linear PCM

I=8-bÍt u-law companded2=16-bitsigned linear PCM3=8-bÍt A-Ia\ companded

b4 : 0=mono, l=stereobO-3: 0= 8,

1= 5.51252^ 16.3=* 11.0254= 27.428575= 18.96=32.7= 22.058= .9=37.8

Page 10: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

}Oxc909,

c=48.d= 33.075e= 9.6f= 6.615

(bO): 0=XTAL1 24.576 MHz; I=XTAL2 16.9344 MHz

interface configuration regb7-4: resb3 : l=autocalibratcb2-1: resbO : l=playback enablcd

OxcaOO,pin control regb7 logíc state of pin XCTL1b6 logic state of pin XCTLOb5 mastcr- l=lri-state CLKOUT

slave -x-tri-stalcCLKOUTb4-0:res

0,xcc40,miscellaneous information regb7 : 1=1 6 slots per frame, 0=32 slots per frameb6 : I=2-wirc system, 0=1 -wire systemb5-0: res

OxcdOO; _

digital mix control 'regb7-2: attenuation x 1,5 dBb I : resbO : l=digital mix enabled

Interrupt vector table --

dis ints; jump start; rti; rti; {00: reset}jump irq2; rti; rti; rti; {04: IRQ2Jrli; rti; rli; rti; {08: IRQ LI -}rti; rli; rti; rti; {Oc: 1RQLOJ

ar = dm(slat_flag);ar=passar; •if eq rt!;jump ncxt_cmd;

jump Ínput_samp]es; rti; rti; rti;jump irqe; rti; rl¡; rti;rti; rti; rti; rti;rti; rti; rti; rti;rti; rti; rti; rti;rti; rti; rti; rti;rti; rti; rti; rti;

10: SportOtx}

{14:SportOrx}{18: IRQE}

{le: BOMA}{20: Sport 1 t x o r I R Q l }{24:Sportl rxorIRQO}{28: timer}{2c: power down}

Page 11: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

{—: ADSP 2181 intialization

stait:¡ó = Ar.x_buf; {poínl lo slart of buffcr jICÍ = %r,\_buf; {inilialíze lenglh rcgister}¡7 = Alx_buf;I7 = %tx__buf;¡3 = AinÍt__cmds;13 =%in¡t_cmds;mi = 1;m i - I;

Serial Port O (SportO) Sct Up

axO = OxOfef; dm (SportO_Autobuf_CtrI) = axO;

axO = 0; dm (SportO_Rfsdiv) = axO;

axO = 0; dm (SportO_Sclkdiv) = axO;

axü - b# 100001100000 l i l i ; dm (SportO_Ctrí_Reg) = axO;

axO =* btfOOOOQOOOOQOOO 1 1 1 ; dm (SportO_Tx_WordsO) = axO;

axO = b#000000000000011 I ; dm (SporlO_Tx_WordsI) = axO;

axO = b//OOOOOOÜ0000001 11; dm (SportO_Rx_WordsO) = axO;

axO = b//0000000000000111; dm (S|iortO_Rx_Words 1) = axO;

Sport l Set Up

dm(Sporll__Auíobur_Ctrl) - axO; {autobuffering disabled}dm(Sportl_Rrsdív) = axO; {Rfsdiv not used}dm(Sport l_Sc!kdiv) - axO; {Sclkdiv not used}dm(Sportl_Ctrl__Reg) = axO; {control functions disabled}

dni(Tscale_Reg) = axO; {timer not used}dm(Tcount_Reg) == axO;dm(Tper¡od__Reg) ~ axO;

- Syslcm ancl Memory Set Up

axO = b#0000000000000000; dm (Dm_Wait_Reg) = axO;

axO = bflOOO1000000000000; dm (Sys_CtrI_Reg) « axO; jenable SportO}

ifc = bffOOOOOOl 1 l i l i l í ; {clcar pending interrupt)nop;

10

Page 12: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

icnll = btfOQOOO;

mstat = bfí i 000000;

axO = I-;dm(slat_riag} = axO;ena inls;imask = b#0001000000;

axO = din (i?, m7);txO = :ixO;

check_Jnit:axO-= din (slatjlag);af = píiss axO;if n c j u m p check_ínit;

ayO = 2;

check_aci I:axO = din (rx_buf);a r= axO and ayO;i f c q jump chcck_ac¡l;

ADSP 1847 Codee int íal ization

{clear flag}

{cnable transmit inteniipt}

{start interrupt}

{wait for en tire Init}{buffer to besent lo}{the codee }

{once initialized, wait for codee}{to come out of autocalibration}{wait for bit set}

check_ací2:axO = dm (rx_buQ;ar = nxO and ayO;If ncjump cheek_acÍ2;¡dle;

ayO = OxbOf;axO = dm (inít_cmds + 6);a r = a x O A N D a y O ;dm (tx_buf) = ar;id le;

axO = din (iníl_cnids + 7);ur = axO ANDayO;dm (tx_buO = ar;idle;

axO = Oxc901;

idle;ax 1 = OxíJOOO;dm(tx_bur) = ax l ;

ifc = b#Oüí)00011111nop;

iniask = OxO();axO = 0;din(fin_nag) = axO;

[wait for bit clear}

{unmutc left DAC}

{unmute ríghlDAC}

{clear autocalibration request}

{control word tó clear over-range flags}

¡clear any pending interrupt}

jenable rxO interrupt}

{Inicializa fin_flag}

11

Page 13: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa do Registros de Control REG_CTRL.DSP:

Esle es un programa donde constan los Registros de Control Mapcados en Memoria, Se

lo ut i l iza en los programas de Tx_* .DSP y Rx_*.DSP de los algoritmos de encriptación y

desencriplacíón respectivamente. Excepto en los del algoritmo DES2181.DSP e

IDES21S1.DSP, ya que éste viene incluido en el programa INIJCIK3.DSP

{ rcg_ctrl.dsp - Registros de control del ADSP-2181Miguel E. Vicuña Muño?,/ Encriplación de Voz/ Octubre 1999 }

.consl Sys_Ctrl_Reg= 0x3 fTf;

.consl Dm_Wait_Rcg= Ox3fie; •

.const Tperiod_Reg= 0x3 íTd;

.const Tcount_Reg= Ox3ffc;

.const TscaIe_Reg= 0,x3ffb;

.const SpürtOJlx_Wordsl= Ox3fTa;

.const SportO_Rx_WordsO= Ox3ff9;

.const SportO_Tx_Wordsl = Ox3ff8;

.const SportO_Tx_WordsO= Ox3ff7;

.consl SportO_Ctrl_Reg= '' Ox3ff6;

.const SportO_Sclkdiv= Ox3ff5;

.const SportO_Rrsdiv= B 0x3 ff4;

.const SportO_Aiitobuf,Ctrl=" Ox3ff3;

.const Sportl_Ctrl_Reg= 0x3 ff2;

.const Sportl_Sclkdiv= Ox3fFl;

.const Sportl_Rfsdiv= Ox3f¡Ü;

.const Sport l_Aii tobuf_Ctr l= Ox3fcf;

.const Prog_Flag_Type= Ox3fe6;

.const Prog_Plag__Datci= 0x3 fc5;

.const BDMA_Word_Count= Ox3M;

.const BDMA_Control= 0x3 fe3;

.const BDMA_I;xtcrnal_Addrcss= 0x3fe2;

.const BDMA_Intemíil_Address= 0x3fe 1;

.const IDMA Conlrol= Ox3fcO;

(System Control Registcr){Data Memory Wait Control Rcgister}{Timer Pcnod}{Timcr Count){Timer Scalíng Factor}{SportO Mullichannel Receivc}{Word Enable Regísíer (32-bil)}{SporLO Multichannel Transmit}{Word Enable Regisicr (32-bit)}{SportO Control Regíster}{SportO Serial Clock Divide Modulus}{SportO Rcv Frame Sync Divide Modulus}{SporíO AutobuHer Control Register}{Sportl Control Regisíer}{Sportl Serial Clock Divide Modulus}{Sportl Rcv Frame Sync Divide Modulus}{Sportl Autobufler Control Register}

12

Page 14: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa Ue ln ida l í zac íún nsTJJ<IK3.DSP:

Al igual que en el programa JN17.DSP se incluye en este programa los archivos de

inici í i l ización del inícroprocesador ADSP-2181 y del codee AD1847. Se lo u t i l iza en los

programas de T.x y R.x de ¡os algoritmos DES21SI.DSP e IDES.

{ ini_kik3.dsp-Proyrma de Inicinlíxücion del ADSP-2181 y el CODECMiguel E. Vicuña iMii i loz/ Encripüicíón de Va1/. I Octubre 1999

Código tomado del programa mic2oul.dsp de Analog Devices,

Incluye stibrulina de atención a la Inlcrrtipcion 1RQ2

.modulc/RAM/ABS^O Encriplacion_dc_voz;

{ Constan! Declaralions

{inciiHiry mappcd ADSP-2181 con t ro l rcgistcr.s)

.const Sys_CtrI_Reg= Qx3fff; {System Control Rcgísler}

.const Dm_W;iit_Reg=Ox3frc; {Data Memory Wail Control Register}

.const Tpcriod_Rcg= Ox3ffd; {Timcr Períod}

.const Tcount_Reg= 0x3 ÍTc; {Tínicr Count}

.consl Tscale_Rcg- 0x3 fíb; {Timer Scaling Factor}

.const SporlÜ_Rx_Words 1=0x3fía; {SportO Multichanncl Rcccive}

.const SportO_Rx_WordsO= 0x3nV; {Word Enable Rcgislcr(32-bit)f

.const SporlO_Tx_Wordsl = Ox3ff8; {SportO Mult ichanncl Transmití.const SporlO_Tx_\VordsO= Ox3ff7; {Word Enoble Regislcr (32-bit)}.consl SporlO_ClrI_Rcg* Ox3fnS; {.SportO Control Rcgístcr}.consl Sporlt)_Sclkdiv= Ox3ff5; ¡SporlO Serial dock Divide Modultis) ..const SportO_Rfsd¡v= 0x3ff4; {SportO Rcv Frame Sync Divide Modulus}.consl SportO_Aulobuf__Ctr[=Ox3rD; {SporlO Autobuf fe r Control Regislcr).const Sportl_CLrI_Rcg==Ox3ff2; {Sportl Control Register}.const Sport l_Sclkdiv= 0x3ffl; {Sport 1 Serial dock Divide Modulus}.const Sportl_Rfsdiv= 0x3ffÜ; {Sport l Rcv Frame Sync Divide Modulus}.const SportI_Aulobuf_Círl=Ox3fcr; {Sportl Autobuffer Control Register}.const Prog_Flag_Typc=Ox3fe6;.const Prog Flag_Data=Ox3fe5;.consl I3DMA_Word_CouiU=* 0x3fc4;.const I3DMA_Comrol= 0x3fe3;.const !3DMA_E.xterna!_Addrcss= Ox31"e2;.const I3DMA_Intenuil_Address= 0x3feI ;.consl IDMA Control= Ox3fcO;

Viii-íahic anü I3iiffcr dechirntions

.var/clm/ram/circ rxjniíp]; {Status -I- L data+ R data, ADI847 rx buffer}

.var/dni/rani/circ txJ)iif[3J; ¡Cnid -i- L data 4- R dala, AD1847 tx buffer}

.VEir/dm/ram/circ Ínit_cmds[I3J;

.var/dm staí_flag;

.var/dm fi]iriiig;

13

Page 15: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Variable and buffcr iniüalization

. ini t tx_buf: OxcOOO, 0x0000, 0x0000; {InHíalIy set MCE}

,inií init_cmcls:OxcOQO, {

Lcft input control regb7-6: 0= le f t l inc I

I=left aux I2=lefi I i ne23=left line 1 post-mixed loopback

b5-4: resb3-0: l e f t i n p u L g a i n x I . S d B}

OxclOO, {Right input control regb7-6: 0-right l ine 1

l=riglit aux 12=r¡ghtlÍne23=right Une 1 post-mixed loopback

b5-4: resb3-0: right inpu t gain x 1.5 dB

}Qxc2S8, {

Icft aux 1 control regb? : l=Ieft aux 1 imiteb6-5: resb4-0: gaín/attcn x 1.5, 08= OdB, 00= 12dB}

Oxc388, {right aux 1 control regb7 : l=right aux 1 mu teb6-5: resb4-0: gíiin/atten x 1.5, 08= OdB, 00= 12dB

1Oxc488, {

leñ aux 2 control regb7 : l=left aux 2 muteb6-5: resb4-0: güin/atten x 1.5, 08= OdB, 00= 12dB

}Oxc5SS, {

right aux 2 control regb? : l=right aux 2 imiteb6-5: resb4-0: gain/atten x 1 .5, 08= OdB, 00= 12dB\, {

left DAC control regb7 : Mef tDACmulcb6 : resb5-0: at tenuat ion x 1.5 dB

OxcVSO, {right DAC control reg

14

Page 16: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

b7 : I = r i g h l D A C m u t cbG : resb5-0: atlcnualion x 1.5 clB

fs,daln forma t rcgisíerb? :resb5-6: 0=8-bil imsigned l inear PCM

l=S-bit u-law coinpandcd2= 16-bÍt signcd l inear PCM3=8-bH A-Ia\ conipanded

b'l : 0=1110110, I=stercobü-3:0= 8.

1= 5.51252= 16.3=11.025 ,4= 27.428575= 18.96= 32.7= 22.058= .9=37.8a= .b= 44.1c=48.d= 33.075c= 9.6f= 6.615

(bO): 0=XTAL1 24.576 MMz; 1^XTAL2 16.9344 MHz

Oxc909,¡nlcrfacc configuration regb7-4:resb3 : I=autocalibrateb2-1: resbO : l=playback enabled

OxcaOO,pin control regb7 : logic stale o fp in XCTL1b6 : logic slale o fp in XCTLOb5 Miiastcr- l=lr¡-sUUe CLKOUT

slave -x-lri-slate CLKOUTb4-0: res

niisccllancoiis ¡nformalion regb7 : 1 = 16 .slots per Trame, 0=32 slots per Trameb6 : l=2-wirc system, Ü=I-wirc syslemb5-0: res

OxcdOO;digital niix control regb7-2: altciuiation x 1.5 clB .b 1 : resbu : l=dígi ta l mix enabled }

15

Page 17: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

l.nlerrupt vector tablc —

juiíip stiirl; rli; rlí; rlf;junip Írq2; rti; rlí; rlí;rlí; rli; rti; rti;rli; rt¡; rli; rli;

ar= dm(slaHlag);ar = pass ar;ífcq rli;jump ncxi_cmd;

jimip inpul_sanip!es; rti; rli; rli;jump írqc; rti; rlí; ríi;

rli; r[¡; rti; rti;rli: rli; rli; ríi;rli; rli; rli; rli;rli; rli; rti; rti;rti; rli; rti; rti;

{00: rescl){04: 1RQ2}{OS: I R Q L 1 ){Oc: IRQLOJ

{HhSporlOtx}

{!4:SportOrx}{ISMRQEJ{le; BOMA)¡20: Sport I txorIRQ!}{24: Sport I rxor IRQOJ¡28: timer){2c: powcr downj

A D S P 2 I 8 J ¡nl ia l izal iun

slarl:{poinf toslart of bufler}(ínitializc Icngth regís [crj

ÍO = Arx buf;!0 = %rjT_bur;ÍI =Atx_buf;II =%lx_buf;¡3 = Ainil_cmds;13 =%iníi_cmds;ni 1 = I;

{ scriiil I'ort O (Spoi'(O) Set Up

iixO = b//OOOOÜO!OIOOOOI I I; dm (SportO_Autobuf_C(rl) - axO;

axO = 0; din (SporlO^RTscliv) = axO;

n,\ = 0; clin (SporlO_Se¡kdiv) - axO;

axO = btf lOOOOi 1000001111; din (SpoilO_CtrI__Rcg) = axO;

din (SporLO_T.\_WordsO) = axO;

din (SporlO_Tx_Wordsl) = axO;

din (SporlO_Rx_WordsO) - axO;

dm (SporlO_Rx_\Vordsl) = axO;

Sporí 1 Set Up

axO = bSOOOOOOOOOOOOO!

iixO = b#00000000000001

axO*b/ÍOOOOOOOOOOOOOI

axQ = b//OOOÜOOOÜOOOOOl

nxO « 0;diu(SportI_AiilobLif_CtrI)«3xO;

dm(Sport l^Sclkdiv) = axO;dmCSport l"Ctr]_Rcg) = axO;

{aulaburrcring disabled}¡Rfídiv not uscd}(Sclkdiv not tisedf{control functions dísablcdj

i

16

Page 18: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

axO = 0;dni(Tscalc_Rcg) = axO; {limcr not uscd}dm(Tcount_Rcg) = axO;dm(Tpcriod_J<cg) = axO;

{ -------------------------------- System and Memory Set Up ----------------

axO = b/íOGOOOÜOOOOQQOOOO; dm (Dm_Wait_Reg) = axO;

axO = b//OÜO!OOOOOOOOÜOOO; dm (Sys_CtrI_Rcg) = axO; jenable SporiO}

i f e = bflÜOOOOO ! 1 1 ! 1 1 11 ; {olear pending interrupt}nop;

mstat = b# i 000000;

AOSP 1847 Codee int iaÜTiat ion }

axO= 1; {clear flag}dm(stat_flag) = axO;

imosk = W/0001000000; {enable transmit ¡nlerrupl}

axO - dm (i 1, m 1); {start interrupt}txO = axO;

checkjnil:íixO = dm (statjlag); {wail for eiUire Init}af = p:iss axO; {buffer lo be sent ío}i f n c j u m p checkjnit; {Ihe codee }ayO = 2;

check_acil:axO = dm (rx_buf); {once Initialízed, wait for codee}ar= axO and ayO; {to come out of autocalibration}if eq jump check_acil; {wait forbi t set}

check_EicÍ2:a.xO = dm (rx_buf); {wait for bit clearjar= axO and ayO;if ne jump check_aci2;¡dle;ayO = OxbGf; {unmute left DAC}axO = dm (inil_cmds + 6);ar = axO ANDayO;ti ni (lx_buQ = ar;¡d le;

axO = dm (init_cmds + 7); {unmute right DAC}ar = axO A N D a y O ;

17

Page 19: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

clin (Lxjnif) = ar;¡ule;

axO«Oxc -yQ l ;dm(U\_bnQ = axO;idlc;axl =0x3000;clni(tx_biiQ = a.x I;

i íc=bí/QQOOOOmnop;

imaslc=0;

axO = 0;dni(fin_nag)=:ixQ;rcsc! D I ;

{clcar aulocalibration rcqucsl)

{control word to clear ovcr-range Hags)

{clcarany pcnding in te r rup l j

{cnnblc rxO inlcmipt}

18

Page 20: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

P r u E i n i m n de Fina l izac ión IHN.ÜSP:

Este programa se lo u t i l i z a en todos los programas Tx_*.DSP y Rx_*.DSP, como parte

f inal del programa de mucslrco.

{Mn.dsp - T ' n r l c f i n a l t lel pruyrinna de Mu es (re oMigui- l 15. Vicuña M u ñ o z / Enc r ip tnc ión de VOY, I Octubre 1999 }

Rut ina de l: i l i i t c r r i i p c i f i n de Recepci f ín-

nc.\[_cnid:ena sec_reg;axO = dm (Í3, n i ! ) ; {Obtiene la palabra de comando del bnffcr ¡nit_cmds }(lm (lx_buf) = a.\0; ¡Coloca la palabra de comando en la primera localída de lx_buf}nxO = Í3;nyO = Ainit_cmt!s;a r = axO -ayO; {Verifica hi existencia do palabras de comando adicionales}i f g t rti; {Retorna de la ¡memipcíiín si todav¡a existen palabras esperando}axO = QxaflJÜ; {SÍ no es as¡ rcsetea la stat_flag y remueve MCE si

lia terminado la ¡niciaÜzacic'n }dm (lx_fauO-axO;

- axO = U;dm (s!at_riag} = axO; {Rcsetea la bandera statjlag}

Arcl i ivo de Descr ipción de la A r q u i t e c t u r a EZK1T_LT.ACH:

Este archivo proporeionado con el EZ-K1.T Lite se especifica con el parámetro —a. Su

función es la de describir las características del hardware ut i l izado con el ADSP-21SI (en

este caso el EZ-LAB), Es u t i l i z a d o por el L inkcr y el Simulador para señalar inconsistencia

entre el software y y el hardware.

EZKIT_LT.ACH

$EZKIT$ADSP2181$0000 37FF paxIWT_PM_USER t$0000 3DFF dadINT_DM_USER t$

19

Page 21: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

PROGRAMAS DE ENCRIPTACION Y DESENCRIPTACION DE VOZ

UTILIZANDO EL ALGORITMO PERMU16.DSP Y PERMU16I.DSP

RESPECTIVAMENTE

Programa Pr inc ipa l de Encriptacióii:

{Tx_PERM.DSP-Programa Principa] de Encripi ación del Algori tmo P E R M U I 6 . D S PMiguel E. Vicuña M u ñ o z / ttncriptaeión de Voz/ Octuhrc 1999

¡6 > Puntero para rx_buf¡7 > Puntero para tx_bufni? > Util izado para el aulobufcrado: m7=l

1

.MODULE/RAM/ABS=0 Rx_mueslras_Tx_io;

| Declaración de constantes util izadas en el programa

.CONST [s=0xc85l, num=1024!n¡vel_ru¡do=0x030r; { fs=5.5125 kl-Iz

. INCLUDE <..\reg_ctrl.dsp>;.EXTliKNAL permutar ;

Declaración de variables —

A'AR/DM/CIRC/ABS=Q ' xin[num];.VAR/DM/CIRC xcjx[ñum];

.VAR/DM inicio, inijlenar, ncntr, tabla_per[32];

.1N1T inicío:Ü;

. INIT iniJlcnanO;

.1NIT ncnln iHim;

. INIT tnblaj icr :<tahlapl .hcx>;

. INCLUDE <..\ini7.dsp>; { Programa para la inicialización de! CODEC y el DSP }

mí)=l;10-%x¡n;iO=Axin;ll=%xc_tx;Íl=Axc_tx;13=0;axO=num;dni(nciHi')=EixO;axO=0;dm(inicio)=axO;dni(ini_llcnar)=a.xO;resct fl I ;sel flO; {Activa bandera flO }set f!2; {Acliva bandera H2 }icníl=b^OOIOO; { Activa la interrupción IRQ2 por flanco }

20

Page 22: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

configurar:imask=0;

• ifc=0xff;. nop;

' •. ímnsk=0x230:

Elimina interrupciones pendientes }

Habi l i i a IRQB, IRQ2 y el puerto serial SPORTO }

esperas {Lazo principal del programa }idlc;axO=dm(r¡n_nag);ar=pass axO;Í f u e rts;jump espera;

¡ , S u b r u t i n a donde se procesa las muestras de entrada en base al algoritmo PERMU16.DSP }

Ínput_?amples:ena sec_rcg;ax0=dni(inicio);ar=pass axG;i f c q r t i ;ayí)=dni(rx_bur+l); { Lee muestra de entrada por el canal izquierdo}

{ Rutina para e l iminar ruido de fondo }axO-ayO;ar=abs axt);

. - ay0=nivel_ruido;' • none=ar-ayO:

if gt af=pass axO;1 none=ar-ayO;

if le af=pass 0;ar=pass af;

ayO=ar;i3=/1tabia_pcr;cali permutar;dm(lx_buf+l)=ar;dm(tx_buf+2)=ar;

reset HO;nop;io(0)=ar;nop;set nO;

axO=dm(ini_llcnar);none=pass axÜ;i f e q rli;

dm(ÍO!inO)=ayO;dm(Ü,niO)=ar;ar=dm(ncntr);ar=ar-I;dm(ncnlr)=ar;if ne rii;

{Llama a la subrutina de encriptación}{ Transmite la muestra encriptada por el canal izquierdo }{ Transmite la muestra encriptada por el canal derecho }

{ Resel de la bandera flü}

{Acíiva la bandera flO}

21

Page 23: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

ax0=0xl;din(nnjlag)=axü;rl¡;

{ Siibruíi ir . i que atiende l:i In t e r rupc ión IRQE }

irqc:ciin scc_rcg;togglc H 1 ;;ixQ=din(mÍcio);ar=nol axO;clni(!nicio)=ar;rti;

{ Suhr i i t i na t |ue aíiendü l:i l i H c r r u p c í ñ n IKQ2 }

irq2:cna scc_rcg;togglc n i ;nx 0=0x1;dm(¡ni_llcnar)=axO;rcsct ¡12;rl¡;

'.INCLUDE <Afi[i.ds|)>;

.ENDMOD;

22

Page 24: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa del Algoritmo PERMU16.DSP:

{ PERMU16.dsp.- Algor i lmo tic cncriplacion de muestras r tal izando una permutación de bitsMiguel E. Vicuña Muñoz-Encr iptae ión de Voz- Octubre/ 99

Entrada :ayO = Palabra de 16 bits13=0¡3 —> apuntando inicio de tabla de permutación¡2 —> apuntando inicio de tabla sin permutación

Salida:a r= Palabra de 16 bits permutada

Registros alterados:a,xQ,axl!ayl,ar,ar,srl,sc,i2,m2,12,i3,13

Tiempo de ejecución:106 Ciclos de Maquina

La labia de permutación debe ser llenada de acuerdo al siguiente criterio:

Tabla sin permutación

O — > O O O IFFFE

1 _.__> 0002FFFD

2 —-> 0004FFFI3

3 -—> OOOSFFF7

4_- ._>0010FFEF

5 —> 0020FFDF

6 —> 0040FFBF

7 —> Q080FF7F

S -—> 0100FBFF

9 -—> 0200FDFF

10—- >0400FI3FF

I I—-> 0800F7FF

12-—> l ü O ÜEFFF

13____>2000DFFF

14-__->4000BFFF

Í5_.._>3000

23

Page 25: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

7F

.MODULE/KAM pcnHilacioii_I6bils;

.VA1VDM labla_bits[16j;

. INIT Uib!a_bHs: 0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000;

.ENTRY permutar;

permutar:ayl=0;m2=I;12=0;i2=Atabla_bíts;srl=dm(¡2,m2);axO=dm(i3,ni2);axl=dm(i3,ni2);cnír=15;do \vord_a_bil u n t i l ce;

ar=srl and ayü;sr!=clni(i2,m2);i f n c af=axO or ay l ;i fcq af=ax I and ayar=píiss af;axO=clin(i3,m2);Eixl=clm(i3,ni2);

\vord_a_bit: ayl=ar;

ai-srl and ayO:i ["ne af=axO orayl;i feq aí=ax I and ayl ;ai^pass af;rts;

.RNDMOD;

{Encera e! registro AY!

{Dclcrniinas! el bit n (O..I4) en el registro AYO es 0/1}{Almacena el nuevo dato de la labia sin permutación}{ SÍ n es 1 pone en I la nueva posieiún del bit permutado en A!7}[ SÍ n es o pone en O la nueva posición del bit permutado en Al7}{Almacena en AII el muestra permutada y guardada en AF}{Almacena el nuevo dato de la tabla de pcrmiilíición}{Almacena el siguiente dato de la tabla de permutación){Almacena en AY1 la muestra que se está permutando}(para ser utilizada dentro del lazo}

{Determina si el b i t 15 en el registro AYO es 0/1}{ SÍ el bil 15 es 1 pone en 1 su nueva posición permutada en AF}{ SÍ el bit 15 es O pone en O su nueva posición permutada en AF}{Guarda la muestra del mensaje cifrado al registro AR}

El archivo T A B L A P I . I I E X , es un ai-chivo que contiene los datos TABLAPER1 de la tabla

1 en base a los cuales se realiza la permutación de los bits de las muestras de entrada. En lo

que respecta al proceso de dcscncriplación, se utiliza el Algoritmo PERMU16I.DSP, que es

el mismo PERMU16.DSP, pero con los datos TABLAIPERIdc la tabla 1, con los cuales se

realiza el proceso de rcordcnamicnto cíe !os b i t s de las muestras encripíadas.

24

Page 26: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

a PniicÍ|Kil de Dcjjcncrjrjjncíún:

{ RxJMEKM.DSI1- l'ruíjramn Principnl de ilcscneriplacmn del Algoritmo PISRMUlíjl.DSPMiguel E. Víctina Muño/,/ l£iicnplac¡óii de Vox/ Ocluí) re 1999

¡(j ----- > Puntero para rx_bur¡y ----- > puntero para txj.nil"ni? ----- > Utilizado para el autobuferadu: m7-l

.MODULE/RAM/ABS=0 R,x_muestrasjo_Tx__CODEC;

{ Declaración de conslanles uíilixadas en el programa

.CONST Ps=-0.xcS51, N=2, nuni=l024;

.INCLUD12 <Arcg_clrl.dsp>;

.EXTERNAL permutar;

¡ Dcclarncion cíe varí:il)lcs

.VAR/DM/C!RC/ABS=Ü xc_r.x[rnmij;

.VAIVDM/C1RC xout[nuin];

.VAK/DM/CIRC

.VAR/DM

entrada [N];

iiu_rx, inijlenar, nciilr, lablajicr[32];

.INIT ini_rx:Ü;

.INIT ¡iiMlcnnnO;

.INIT ncntnniJni;

.1NIT critr;ida:0,0;

.INIT lnblaj)er:<tnbliip2.hex>;

.INCLUDE <..\iuÍ7.dsp>;

rcset fl I ;icntl-bííOOlOO;m4=l;I4=N;

(Programa para Inicializacion del CODEC y el DSP }

(Rcsct de la bandera fl I}{ Activa la interrupción IRQ2 por flanco }

i5=Aentrada;mO=l:10=%xc_i-x;iO=Axc rx;ll=%xoul;ü=Axoul;

configurar:¡ni¡isk=0;ií!=Ae ni ráela;¡5=Aei lirada;axO=nuni;

25

Page 27: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

dm(ncntr)=axO;axO=0;dm(ÍnÍj7í)=axO;dm(ÍnÍJlenar)=axO;ifc=Qxff; { Elimina interrupciones pendientes }nop;imask=0x230; { Habilita !RQ2, IRQE y el puerto serial SPORTO }

espera: { Lazo principal del programa }id I e;axO=drn(fm_riag);ar=pass axO;if nc rts;junip espera;

{ Suhrutina que a t iende a la Interrupción IRQ2 }

Írq2:ena sec_rcg;si=io(0)¡dm(i4,rn4)5:ssÍ; { Almacena muestras encriptaüas en el buffer entrada }axO=l;dm(inÍj'X)=axO;toggleTll;rti;

{ Subrut ino donde se procesa las muestras encriptadas en base al algoriüno PERMU16I.DSP }

inpul_samplcs:cna scc_rcg;axí)=dm(ini_ni);ar=pass axO;if eq rti;

ayü=dm(¡5,ni4); { Lee muestras del buffer rcsul }Í3=Atabla_pcr;cali permutar; { Llama a la subrutina de descncriptaclón}

dm(lx_buf+¡)=ar; { Transmite muestra desencríptada por el canal izquierdo jdm(lx_buF+2)=ar; { Transmite muestra dcscncriptadaporel canal derecho }

axQ=dm(Qx3re5);ar=ls tb i lOoraxO;if ne rl¡;

dm(¡0,mO)=ayO;dm(il,mO)=nr;ar=dm(ncntr);ai-=ar-l;dm(ncnlr)=;¡r;if nc rti;axO=Ox.f;dm(fin_nag)=axO;rti;

26

Page 28: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

¡N"

0

1

2

3

4

5

6

7

8

9

10

.11

12

13

14

15

TABLASINPER

0001FFFI-;0002

FFFD0004FFFB0008FFF70010FFEF0020

FFDF0040FFBF0080FF7F0100FGFF0200

FDFF0400FBFF0800F7FFJ O O OEFFF2000OFFF4000

BJT ir [T80007FFF

TABLAl'i

0020FFDF80007FFFÜOOSFFP70040FFIiF0200

FDFF: 1000

JEKITF0004FFFB0100FIÍFF0010FFEF0400FBFF

- 4000BFI7F0002

FFFD0080FF7F2000DFFF0800F7FF0001FFFF,

TABLAP2

80007FFF0800F7FF0040

FFBF0004FFFB0100FIÍFF0001

FFFF,0008FFF71000

EFFF0080FF7F0010FFIÍF0200

FDFF4000BFFF0020FFDF

. 2000- D F F F

0400FBFF0002FFFD

Tablo 1.-.Tablas tic permutación para la Encriplacíún y la Descncriplíieioii

23

Page 29: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

PROGRAMAS PARA LA ENCRIPTACION Y DESEINCRIPTACION DE VOZ

U T I L I Z A N D O EL ALGORITMO XOR.DSP Y OEXOR.DSP RESPECTIVAMENTE

Programa Principal de Encrintación:

{ Tx_XOK.DSP- Programa Principal de eneripíaeión del Algoritmo XOR.DSP¡Miguel E. V i c u ñ a M u ñ o z / lüncr ip lac ión de Voz/ Oelubrc 1999

\() > Puntero paca rx_biiC¡7 > puntero para (x_biifin7 > Utilizado para el anlolni(erado: ni7=l

.MODUL£/RAM/AQS=0 Rx_imieslras_Tx_io;

{ Declaración de conslanícs nlilixadas en el programa —

.CONST ís-OxeS51, mim=!024, n¡vc!_niido=0x02ar; { fs=5.5I25 kHz

.INCLUDE <..\rc'g_círl.dsp>;

.EXTERNAL xor_erip;

/ üecl:iración de variables

,VAR/DM/CIRC/AI3S=0.VAR/DM/CIRC

.VAR/DM

.INIT inicio:Ü;

.INIT ÍnÍ_llcnar:0;

.INIT ncnlnmim;

.INCLUDE <.\Íni7.dsp>;

mO=l ;10=%x¡n;ÍO=Axin;ll=%xc_!x;il=Axc_t.x;axO=[H!in;dm(ncnír}":ixO;axO=Ü;dmCinicio)=!ixÜ;

rcsel H I ;set no;sel H2;i c n l l = W / O O I O O ;

xiii[num];xc_lx[nii[]i];

inicio, ínMIcníir, ncnlr;

Programa para !nlcialización del CODGC y el DSP }

{Aclivii Inbíindcm HOJ{ Act iva la bandera Í12}{ Act iva la interrupción IRQ2 (lüneo

configurar:Ímask=0;

29

Page 30: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

iíc=üxlT;nop;iinask=0.\230;

espera:

Elimina interrupciones pendientes }

Habilita IRQG, lRQ2ycl puerto serial SPORTO

Laxo principal del programa }id le;axO=dni(fin_Miig);¡ir= pass axO;i fue rls;jump cspcni;

{ Subriitina donde se procesan las mueslrus de entrada en base :il algoritmo XOR.DSP }

inpni_sí]inp]cs:ena scc_rcg;axO=dm(inicio);tu—pass axO;ifcq rti;ar=dm(rx_bul'H); { Lee muestra de entrada por cl canal izquierdo}

{ Uutina paríi eliminar ruido de fondo jaxO=ar;ar=abs a.\0;ayü=n¡vcl_niído;nonc=ar-ayQ;¡fgt af=pass axO;none=ar-ayO;i f ie ar=pass 0;ar=pass ai';

mrO=ar;cali xor_crip;dm(lx_buPH)=ar;dm(tx_bur-i-2)^ar;

rcscl nO;nop;io(0)=ar;nop;sel 00;

nxO=dm(inÍJIcn¡)r);none-pass axO;ifeq rli;

tlm{i0,m0)=mrü;dni(ÍI,mO)=ar;ar=dni(nenlr);ar=ar-l;dm(ncnlrj=ar;i fue rti;axü=0xf;

Llama a la subnilina de Ilncriplación}Transmile entrada cncriptada por el canal izquierdoTransmite entrada cncriptada por el canal derecho }

Reselde la bandera HO}

{Activa bandera 110}

30

Page 31: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

IVnyruimi del Al^orilniu XOR.OSP:

{XOR.DSr - Algor i tmo de e i i c r i p l n e i u i i de mucsl ras rcalr/.umlu un XOR :i la secuencia de bitsMiguel I£. V icuña Muño/ , - E n c r i p l a c i ú n de V o z — Octubre/ 99

inri) = dalo original de entradaRegistros a l len idos

ar,sr,axO,ayO,rnxO,mxlS:i l idn

ar = dalo de salida cncriptadoTiempo de ejecución

219 ciclos de maquina

.MODULE/llAMJ-NTRV

sub_xor;xor_er¡p;

xor_cnp:ai-tstbil Ü o r n i r Ü ;axO=ar;ar=tslbít I o fmrO;s r = I s h Í Q a r b y - l (lo);ayO=srO;ar=axO xor ayÜ;s r = I s h i r t m r O b y - l (lo);mxO=srO;s r= l shmarby 15 (hi);m x l = s r l ;cnt r=I4;do lazo u n t i l ce;

srO=mxO;ar=tstbi l O ofsrO;axO~:ir;ar=tslbit 1 ofsrO;sr=ishin a r b y - I (lo);ayQ=srO;ai—axO xor ayO;

do);

{Determina si el bil O de la muestra del mensaje de entrada es O/1{Alnuiceiia el bit O en el registro AXO}{Determina si el bit I d c la muestra del mensaje de entrada es 0/1}{Desplaza el bit I de la muestra una posición hacia la derecha }{Almacena el bit I en AYO guardado en SRO}{Se obtiene el bit Cu de la muestra del mensaje cncriptado}(Desplaza la muestra del mensaje de entrada u n a }{posición hacia la derecha y se almacena en MXO}{Desplaza el bit C<j 15 posiciones a la izquierda y almacena}{el bit aislado en el registro M X I }

{Muestra del mensaje de entrada desplazado al registro SRO}{Determina si el bit O (M¡) de la muestra desplazada es 0/1}{Almacena el bit 0(M¡) en el registro AXÜ}{Determina si el bit 1 (M¡f l) de la muestra desplazada es 0/1 ]{Desplaza el bit I (M¡([) una posición hacia la derecha }{Almacena el bit l(M¡n) en el registro AYO}{Se obtiene e! bit C¡,i de la muestra del mensaje encriptado}

{Se mueve la palabra del mensaje de entrada desplazado u n a ){posición hacia la derecha y se guarda en el registro MXO}

lazo:

sr=I;>hin srO by - imxO=srO;srl =mxl;sr=!shin srl by -I (hi); {l;l bi t C¡ se desplaza una posición hacia la derecha}sr=sror I s h i f t a r b y 15 (hi); {Une el bit Qy el bit G U I y losmx !=srl;

ayO=mxO;ar=tstbit 1 o f s r l ;sr=lshiíl ar b y - I (hi);ar=sr l ;:ir=ar Nontyü;s r l = m x l ;sr=lshiR srl hy -1 (hi);si=sr or Ishif t ar by 15 (hí); { Une el bit Ci¡ con los bits CM.....CD de la muestra encriplada}ai~srl; {Asigna al registro AR la muestra de 16 bits del mensaje encriptado }rts;

{almacena en el registro mx I ¡

{Determina si el bit M!5 de la muestra de entrada es 0/1}

{Se obtiene el bil C[5 de la muestra del mensaje encriptado}

JiNDMOD;

32

Page 32: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa IVincipiil de Dcsencriptaciún:

Pr inc ipa l de Dcseiirnplación üel Algor i tmo OEXOR.DSI'¡Miguel E. Vicnn: i Muño/ , / iCncrípi ación de Voz/ OcUibre 1999

¡5 ----- > Puniera para rx_buf¡7 ----- > Puntero para lx_bufnl7 ----- > Ut i l izado para el autobul'erado: m7=I

1

.MODULI¿/RAM/ABS=0 Rxjiiuestrasjo_Tx_CODEC;

¡ ------------------------------- Dec la rac ión f ie c u n s l n n f e s u l i l i x a d u s en el progrnma ----------

.CONST fs-0.xc85l, N=2, num=l024;

.1NCLUDE <.\rcg_clrl.dsp>;

.EXTEIINAL xor_decrip;

Declarneion de varíublcs

.VAR/DM/CIRC/AI3S=0 xc_rx[iuim];

.VAR/DM/CIIIC xoiULiiurn] ;

.VAR/DM/CIRC enlrada[N];

.VAR/DM ínij'x, Íni_llen:ir, ncntr;

.IN1T Ín¡_rx:0;

.INIT ÍnÍ_llenar:0;

. INIT [ icnt r :nuni ;

.INIT cntnula:Ü,Ü;

. INCLUDE <..\ini7.ds])>; {Programa de Inicial iwción del CODlíC y el DSP

resé! H l ; { Rcsel de la bandera II I }¡ c i i l l - b f fOOlOO; { Activa la interrupción IRQ2 por flanco jim!=l;I4=N;

Í5=Aentrada;mO=l;I0=%xc_r.x;iO=Axc_rx;

i l= A xoul ;

configurar:

i'l=AenIrada;Í5=Acnlrada;í].\0=[Uiin;din(ni;[ifr)-axÜ;

33

Page 33: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

axü-0;

espera:

dm(ini_llenar)~;ixO;i!c=0.xlT;nop;Ímask-0x230;

idlc;axO=dm(fin_riag);ar=pass axO;i f n e rts;jump espera;

El imir i í i interrupciones pendiente:; }

I l a b i l i l a 1RQ2, IRQE y el puerto serial SPORTO

Lazo pr inc ipa l de programa }

-- S i i l t i ' i i l i n í i que : i t i e n d e la I n t e r r u p c i ó n 1RQ2 —

cna scc_rcg;si=¡o(0);dm(i4,m4)-s¡;axÜ=¡;

Almacena muestra cncnptada en c! buffcr cntr:icla

logglc n i ;ni;

j Subrutina (londü se procesa las muestras encrípladas en base al algoritmo DIÍXOR.DSP }

input_s:implcs:cna see_rcg;

Lee dato del bufTcr resul }

Llama a la subru l ina de deseneriplación}

Transmite muestras descnci'iplachi por el canal izquierdoTransmite muestra dcsencriptada por c! canal derecho }

ar=píiss axO;i f c q r t i ;

mrO=din(i5,míl);ayl=mrO;

cal i xor_dccrip;

dm((x_buPH)=ar;dm(tx_buf-¡-2)-ar;

axO=dm(Ox3fe5);:ir=tstbitOoi"axü;¡Tuc rti;

dm(il,mO)-¡ir;ar=dm(ncnlr);nr=ar- l ;tl]n(ncntr)=ar;i f n c rti;axO«=0.\r;clin(nn_nag,)=a.\0;rli:

34

Page 34: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

{ ----------------------- S u l > r i i l i i i : i que aliciuli! hi hiícrrupciún IRQK -----

¡rqe:cn¡i scc_reg;logglc f l l ;;ixO=ü; .(lin(cntríiíla)-axO;

d[ii(Íní_rx)=axO;rii;

.1NCLUDE <..\nn.tls|»;

.I-NDMOD;

35

Page 35: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Pro t /mma del A l g o r i t m o DICXOR.DSF:

¡DKXOU.DSP -Alónimo tic di'.scncnp ración de miics írns realizando un XOR n la .secuencia de bitsMiguel lí- V icuña Muño?,- l íncr ip iac ión de Voz- Oclubre/ 99

}£n Iradainri) = dalo de en I rada cncriplado

Ki!»isln)S aderadosar,sr,axO,ayO,mxO,mx 1

S:ilid:i¡ir - dato de salida dcscncriptadü

'l ' ieinpo de ejecución30! ciclos de maquina

.MODUU-/RAM

.I-NTRYsub_dc.\or;xor_dccrip;

xor_decrip:ar=lstb¡l O o fn i rO;s r=lsh i f ía rby 15 (hi);ax0=srl;iir=lstbil [ S o f i n r O ;ayO=ar;ar=axO xornyO;a.x I=ar;cnlr=!5;do lazo I t i n l i l ce;

sr=lshin mrO by

(Determina si el bit O (Cu ) de la muestra del mensaje cncriplado es 0/1}{Desplaza el bit Cu ,15 posiciones a la izquierda y almacena){el bil ¡lisiado en el registro AxO}{Determina si el bil C|3 de la muestra de! mensaje cncriptadof{es 0/1 y lo almacena en AYO}{Se obiiene el bil M13 de la muestra del mensaje dcscncriplado}{y lo almacena en AX1 j

(lo);

lazo I :

mxI-srO;nr=tslbit ISofsrO;axü-nr;ai-lstbil 15 o f a x l ;ayudar;ai~axO xor ayü;srl=ax 1;sHshmsrl b y - l (ii¡);sr=sror Isliiíl a rby U (lii);ax l=sr l ;ñu 0=mx];

»r=tslbit 15 o f s r l ;si=ar;enli~15;do Iazo2 u n l i l ce;

sr=lsliiü srl by 1m x l = s r l ;ar=ls(bit 15 ofsisi=lsliifl si by -I

{Desplaza la muestra de! mensaje encriptado 1 posición hacia}{la ¡7(]i!Ícrda y lo almacena en MX1}{Delei ' inina si el bil C|.| ,¡ de la muestra del mensaje encri|)lado}{es 0/í y lo almacena en A X O }{Analiza sí el bit MU.¡ es 0/1 y lo almacena en AYO}

¡Se obl icué el bit MM. ¡}{Almacena el bit M^.j en SR! ¡{Desplaza el bil M U - ¡ u n a posición hacia !a derecha}{Une los bils M|. i .¡y el bil M I 5 . t y los almacena en A X I ]

{Almacena en mrO el mensaje cneríptado desplazado hacia la}(izquierda para rcalimcntar el lazo}{Analiza si el bít 15 (M,,) es 0/1){Guarda el bí l MO en el registro SI}

la zo 2:

¡ir=si;rls;

{Rcordena la muestra del mensaje descifrado M(l M^}{Desplaza la muestra dcsencriptada 1 posición hacia la }{izquierda y la almacena en e! registro M X I }{Analiza si el bít 15 de la muestra desplazada (M() n) es 0/1}{Desplaza los bits inordenados 1 posición hacia la derecha}

sr= sr or Ishif t ar by O (hi); {Une los bils rcodenados (M|5 M(l) y los almacena en)si=srl; {el regislroSI}s r l = m x l ; {Almacena la mueslra desplazada en SR1 para realimenUir}

{el lazo){Almacena el mensaje descifrado y rcordenado en el regístroAR)

.RNDMOD;

36

Page 36: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

PROGRAMAS P A R A L A ENCRIPTACiON Y DESENCRII 'TACION DE VOZ

UTILIZANDO EL ALGORITMO PSEU.DSP

Prugrnni i i P r i n c i p a l do Encr ípUic iún:

{ TxJ'SEU.DSI1- Proyrnmo Pr inc ipa l de Encrípíiu-ión del Algor i tmo I'SEU.USP¡Miguel E. Vicuña M u ñ o z / En er ipt ación de Voz/ Octubre 1999

¡6 > puntero para rx^bufi? > puntero para tx_buf111? > ul i l izado para el auíobiil 'cniílü m7=l

í

.MO D U LG/RA M/A BS=0 Rx jn«estras_Tx Jo;

{ Docla i -nc ion de consta ni es ulili^ndn.s en el programa

.CONST fs=OxcS5l, !nim=Ox40Ü, kcy=üxiy7],n¡vel_ruido=0x030r, nummucs=32500; { fs=5.5I25kl \7. }. INCLUDE <..\rcg_clrl.dsp>;.EXTERNAL pscu_cri;

Declarac ión de v:n-iabltis

.VAR/DM/CIR.C/A8S=0 x i i i l ' i i i i i n ] ;

.VAR/DM/C1RC xcjxLnum];

.VAR/DM inicio, ¡nÍ_llenar, psciitlo_\vo]'ci, ncntr, rcinicio, iii_c!Hr, grab_kcy, llave;

. INIT ¡nicioiO;

.INIT reinicio:0;

.INIT ¡iiiJIcnanO;

. INIT ncnlnnum;

. INIT ni_ciilr:ni]mmiics;

. INIT psetido_v/ord: kcy;

.INIT gnib_kcy:0;

.INIT Ilave.-O;

.GLOBAL pseudu_\vord;

.1NCLUD1I <..\iiiÍ7.dsp>; { Programa de lnicíaIÍ7.ación del CODUCye l DSP }

mÜ- 1;KMfam;

_¡I=Axc_tx;:ixO=iHini;{lin(ncnlr)=;ixO;axü=kcy:din(pseudo_wortl)~axO;nxO-Ü;dmCmicio)=axÜ;

37

Page 37: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

dm(inÍ_llenar)=axO;dm(grab_kcy)=axü;rcsct H l ;sel Mu; {Activa la bandera flO}sel 112; {Activa la bandera (12}icnl l=b#OOIOO; { Activa Inlerrupción IRQ2 por naneo }

configurar:iniíisk=0;axOO;dm(reinicio)=axO;axO=key;dm(pseudo_\vord)=axO;axO=nummues;dm(m_cnlr)~axO;ifc=0xfr; { Elimina interrupciones pendientes }nop;¡mask=Qx230; { Habil i ta IRQE, 1RQ2 y el puerto serial SPORTO }

espera:Idle; { Lazo principal de programa }axO=dm(n¡i_flag);ar=pass axí);i f u e rts;axQ=dm(rcinicio);ar=pass axO;i f n c j u n i p configurar;jump espera;

{ S u b r u t i n a d o n d e se procesa las muestras de end'iida en base al algoritmo PSfíU.DSP }

input_SEiinples:ena sec_reg;ax0=dni(inicio);ar=píiss axO;ífeq rti;a.xO=dm(grab_key);ai~pass axO;i f cq junip siga;ar=dm(pseu(lo_word);dm(Ilave)=ar;ai-=0;dm(grab_key)=ar;

siga:ayl=dm(rx__buPH); { Lee muestras del canal izquierdo}

cali pscu_cri; { Llama a la subru t ina de Encriptación}

d¡n(íx_buri-I)-ar; { Transmite muestras cncriptadas por el canal izquierdo }dm(tx_buR-2)=ar; { Transmite muestras cncriptadas por el canal derecho }si=ar;rcsct HO; {Rcsct de la bandera flO}nop;Ío(0)=ar;nop;

38

Page 38: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

sel 00; {Activa la bandera flO}

ar=dm(ni_cntr);ar=ar- 1 ;dm(m_enlr)=nr;ir lie ju inp llcmi^buffer;axO=niiniiiuies;dm(reínicio)=axO;

llcna_buflcr:nxO=c!m(iniJIcnar);none=pass axO;If eq rlí;t!m(iO,mQ)=ay[;dni(Íl ,m())=si;

dm(ncnlr)=ar;i f u e rti;axO=Oxf;dm(fin_n:ig)=axO;rti;

{ ------------------------ Si ibrutina ((lie at iende In Interrupción IRQE ---------------- }

irqc:cna scc_rcg;(oggle fl 1 ;axO=dm(inicio);ar=not axü;dm(inicio)=ar;axO-key;dni(pscuclo_würd)=axO;axO-numnuics;dni(ni_culr)=axO;axO=0;dm(rcinÍeio)-axO;axO=num;dm(ncnlr)"axO;rt¡;

{ Snbi 'ul ina que a t i ende la In ler rupeión 1RQ2

Írq2: , .cna sec_rcg;tog'gle (11;axÜ=Üxr;dni(ÍnÍ_!lcnar)=axO;dm(grñb_key)~axO;resct Í12;rt¡;

.INCLUDE <..\Pm.dsp>;

.HNDMOD;

39

Page 39: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

r r n p i - n m n (Id /Vhjor i ln io PSEU.OSP:

{1'tSlíU.DSl1 — Algoritmo de Encnplación (Dcscncnpl-aciáii) de muestras con clave de generaciónlciitofin.

Miguel lí. Vicuñíi Muño?. - Encripíación de Vox - Ocíubre/99

Entrada:ayl = dato origina! de entrada

Registros alterados:mrO, axO, ayO, ar, sr, mxl, inri,

Salida:ar = Dato de salida cncriplado

Tiempo de ejecución:449 Ciclos de máquina

.MODULE/RAM

.BNTRY

.Víir/dm/ram

. var/dm/ram

.var/dm/ram

.var/dm/ram

.var/dm/ram

JZXTERNAL

pseti_cri:

subj)scupscu eri;

slikey;mendcs;cilr;mcssl;ciírj;

pseudo_word;

mrO=dm(pscudo_\vord);af=tstbit Oofmrü;ar=istb¡l 1 ofnirO;sr=Ishin ar by-l.(Io);

ai~srO xoraf;

dm(shkcy)-srl;sr=lsh¡nmrüby-l (lo);ai— srO;srl^dmfshkey};sr=sr or Ishift ar by O (hi);mx 1= srl ;mrl=ayl;ar=LslbÍl O ofinrl;dm(messl)=ar;mrO=Eiyl;sr=lsh¡n nirO by-l (lo);

a,xü=dm(mc.ssl);ni~a.xO xor ¡if;si-lsliillarby I5(hi);dni(dír)=srl;cnl!-=15;do laxo unlil ce;

mrO=m.x 1;

{Almacena la llave pseudoalcatoría desplazada}{Almacena la muestra del mensaje desplazada}{Almacena mensaje cifrado)

{Asigna la Nave inicial pscudoaleatoría al registro MKO ){Determina si el bit O de la llave pscudoaleatoría es 0/1}{Determina si el bit I de la llave pseudoalcatona es 0/1}{Desplaza el bif I una posición hacia la derecha y lo almacena}{en SRO}{Obtiene el nuevo bit Yo a realímcntarse a la secuencia){de la llave p<;cudoalealaria{Desplaza el bit Yo 15 posiciones a la izquierda y¡{lo almacena en e! buffcrslikey}{Desplaza la llave Inicial pseudoalcaloria una posición hacia}[derecha y la almacena en el registro AR}¡Almacena el bit Yo desplazado en el registro SR I }¡Une el bit Yo con la llave inicial pseudoalcatona desplazada}{y lo almacena en el registro MX1}{Asigna la muestra del mensaje de entrada al registro MRI}{Determina si el bit O de la muestra del mensaje de entrada}{es 0/1 y lo almacena en el bufTcr mcssl}{Almacena la muestra del mensaje de entrada al registro MRO}{Desplaza la muestra del mensaje de entrada ! posición){hacía I ¡i derecha y lo almacena en el bufTcr mondes}¡Asigna el bit MO al registro AXO }¡Obtiene el primer bit del mensaje cifrado CO=MO xor ICO}{Cu lo desplaza 15 posiciones hacia la izquierda}{y lo almacena en el bulTcr cifr)

¡Asigna ¡a palabra de la secuencia pscudoaleatoria rcaümentadaj

40

Page 40: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

lazo:

a r = l s t b i t O o f m r O ;ni—tslbi t 1 o fmrQ;sr=]s!iiííarby-l (lo);

ar=srü xoraf ;

sr=Ishiriarby 15 (hi);dm(shkcy)=srl;mrO=mxl ;s r=lshi f lmrO by - I (lo);ar=srO;srO=dm(shkcy);sr=sr or Isliiíl tir by O (lo);mxl=srO;iiirl=dii](inciulcs):ni— istbit O o f m r l ;

dm(messl)=ar;mrO=dm(mcndcs);s i = I s h i f t m r ü b y - [ (¡o);dm(mcnclcs)=srO;ax0=dm(mcssl);ar=axQ xor al";

sr=lshifl nr by 15 (Iii);dm(cif r_I)=sr l ;ar=dm(c¡fr);s r=Is ! i i f t a rby- l (lo);ar=dm(cífr_l);sr=sr or Ishin ar by O (lo);dm(cifr)=srO;

srl=din(cifr);ar=pass srl;dni(psci]do_\\'ord)=nix 1;

rts;

.I2NDMOD;

{al registro MROJ{Determina sí el bit O de la llave rcalinicntada (Ki) es 0/1 }{Determina si el bit I de la llave rcalinientada (Ki-H) es 0/1 }{Desplaza el bit ! (Ki-H) una posieión a dcreclia y lo almacena}{ e n S R Ü i{Obtiene el nuevo bit Yi de la secuencia de palabra}{pseudolaeatoria }

{Asigna la muestra del mensaje desplazado a! registro MRl j{Determina si el bit Ü de Mi de la muestra del mensaje despla-j{zado es 0/1}

{Asigna cl bit Mi a! registro AYO }{Obtiene cl nuevo bit Ci de la palabra del mensaje cifrado}{Ci-M¡.xorKÍ)

{Une el bit C¡ con los demás bits de la muestra del}{mensaje cifrado desplazado y lo almacena en buffcr cifr}

{Almacena la muestra del mensaje cifrado en el registro M R l(Asigna la muestra cifrada al registro AR}{Almacena la nueva llave Pseudoalcaloria al }{pscudo_\vord}

Noisi : Como se indico en la sección 3'.2, PSEU.DSI1 es un algoritmo de ida y vuelta, es

dccii - que se u t i l i z a el mismo algori tmo para e! proceso de dcscncriptación.

41

Page 41: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

" P r i n c i p a l cíe Üesencriptación:

K x P S I £ U . D S l ' - IV iMii l ' r i n c i p i t l de Dcsc i ic r ip lnc lón del A l g o r i t m o PSlSU.DSí*K. Vicuñn Muñoz/ línerip Ilición de Voz / Ocluí) re 1999

¡(j ----- > puntero par» rx_buC¡7 ----- > puntero pañi tx_bnf,n7 ----- > uiílizado pañi el autobtileriulo

.MODULE/RAM/ABS=0 R*jnuestrasjojrx_CODEC;

| Declaración de constantes util izadíis un el progríinia

.CONST rs=0.xc85l, N=2, nuin=0.x400, kcy^Oxl97I , iHiminues=32500;

. INCLUDI- <..\reg_clrl.dsp>;

.liXTI-RNAL pscu_cri;

/ Declaración de varinhlcs

.VAR/DM/CIRCMBS=0

.VAR/DM/C1RC

.VAR/DM/CIRC

.VAR/DM

.INIT ini_i-x:0;

.INIT reinlciorO;

. INIT ÍnÍ_Ilenar:Ü;

.INIT nentr:num;

. INIT ni^cnínninnimics;

. I N I T enTrada:0,0;

. INIT psciiílo_word:key;

.GLOBAL

JNCLUDI!

pscudo_word;

<..\Íni7.íls|í>;

rose I n i ;¡ c i i l M j f f ü Ü I O O ;in4=l ;H=N;i4=Acntrada;15-N;!5=Acntrada;n iO=l ;I0=%.\c_rx;\Q^*xz_rx;l l=%xout :¡!=Axout;

configurar:íiníisk=Ü;i'I=Aentrada;

xc_rx[num];,\oiil[ntim];e!itrnda[N];

in¡_rx, in i_l lcnar , ncntr, psciitlo_\vord, reinicio, m^cntr;

{ Prognuii» de In íc íu l izae ión del CODEC y el DSP

(Resct de la bandera n i ){ Activa Interrupción IRQ2 por flnnco ¡

42

Page 42: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

espera:

i5=Aciitrad¡i;axO-key;dni(psendo_\vord)=axO;axO-mim;dm(ncn!r)=axO;axO=mimimies;dm(m_cnlr)=axO;nxO=0;dm(in¡_rx)-axQ;dm(mi_llcnar)=ax0;dm(rcinicio)=a.xO;¡Fc^OxIT;nop;imask=0x230;

idlc;axO=clm(fin_fhig);ni—pass :ixÜ;Í f u e ris;ax0=din(reinicio);ar=pass axO;i rne ju inp configurar;junip espera;

El imina inlen'upciones pendientes }

|-[¡ ibi l i t í i IR.Q2, IRQB y pnerlo serial SPOUTO

L;i7o principal de jirogrania }

S u h r u í i n a que n l i c n d c la I t i t c r r u p c i n n IRQ2

irí|2:

Almacena muestra en el buffer entrada

en a sccj'cg;si=¡o(0);dm(Í4,intl)=sÍ;a x O = l ;dm(ini_r.\)=axO;logglc 111;ar=dm(m_cntr);ar=ar-1;dm(m_cntr)=ar;i f n c r t i ;axO=niiinmiics;dmCreÍiiicÍo)=axO;dm(m_cinr)=:i.xO;rti;

{ S u b r u l i n a donde se procesa las rmiL'Sd'as encr ip l i idas cu base al a lgor idno f'SEU.DSI* }

inpi)i_sí)mp!es:ena scc_i1eg;a.xO=dmCÍni_rx);ar=piiss íixü;íf cq rfi;

ayI~dni(Í5,in'1);

cali pscu_cri;

dm(íx_buB-|)=ar;

Lee nuicslras del bufrcrrcsul ¡

Llama a la subruUna de Dcsciicnplación}

Transmite muestras descncripladas por cl canal izquierdo

43

Page 43: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

dm(lx_bi]R-2)=ar; { Tninsinile muestras dcsencriptnclas porcl canal derecho

n.\0-diii(0x3íc5);íil'-tsíbit Oo faxO ;ií'nc rti;

c¡m(¡0,inO)=ayi;dm(il,niO)=ar;ar=dni(ncntr);;ir=ar-l;dm(ncntrj=ar;ifnc rti;axO=Oxf;dm(fin_fl¡ig)=axQ;rli:

{ ------------------------------- S n h r n l i n a que a l l e n d e la I i i l e r rupc i i ín IRQIÍ ----------------------

írqe:cna sec_rcg;logg le l l l ;axü=0;

din(cntrada- i - l )=axO;din(inÍ_rx)=axO;(¡m(rc¡nicíü)=axO;¡ixO=key;"din(psciido_word)=axO;!ixO=nuniinncs;dni(m_cnlr)=axO;rti;

.INCLUDB <..\fin.[lsp>;

.ÜNDMOD;

44

Page 44: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

PROGRAMAS PARA LA ENCRII 'TACION V UESENCRIPTAC10N DE VOZ

U T I L I Z A N D O EL ALGORITMO PSEU2181.DSP

lVu*jnmi:i IVincipiíl tic iMicrip

< TNj'2 18 1. DS1'~ Programa Principal cíe Encriplación ttcl Algoritmo PSEU21 81.DSP¡Miguel E. Vicuñn Muño?. / Encrip (ación de Voz/ Ocí ubre 1999

16 ----- > puntero para rx_buf¡7 ----- > puntero para Lx_buFni? ----- > utilizado pnra el Eiutobuíenulo m7=l

1.MODULIi/KAM/ABSM) R.x_niucstras_Tx_io;

{ ------------------------------- Declaración ile constiinles utilizadas en el programa

.CONST rs=0.xc85I, mim=0.x400, HaveO=ÜxlíJ99, Ilavcl=0x 1971, nununues=325ÜO; (fs=5.5125 kl-lz)

.INCI.UDI- <..\rcg_cír].clsp>;

.IIXTEIÍ.NAL criptüjiscu, xor_crip, permular, kcyO, kcyi;

Declnracion tic variables

.VAK/DM/CIRC/ABS=G xin[nnm];

.VAR/DM/C1RC xcjx[num];

.VAR/DM inicio, ¡injlenar, pseudo_\vürd, ncntr, rcinício,m_cntr, grab_kcy, Ilavc_0, IIave_I-, cnlradíi, salida;Ibl_perl[32j;

.1NIT inicio:0;

.IN1T rcinic¡o:0;JN1T iniJIenanO;.1N1T ncnlrriium;.IN1T in_ciitr:iHiiii[iuics;.1NIT gnib_key:ü;.1NIT tblj)cr[:<..\pcriim(a\(ablapl,liex>;

.GLOBAL tbljicrl;

.INCLUDI5 <..\ini7.dsp>; {Prognimn de Inicmliwción del CODHCye! DSP

niO=l;I0=%xin;Í()=Axin;ll-%xc_tx;il=A,xc_lx;axü=nnm;

nxO=!lnvcO;

nxO=llíivcl;din(kcyl)=axü;axO=0;

Page 45: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

dni(Íniciu)=axO;dm(ÍnÍ_Jlcnar)=axO;ciin(gr:tb_kcy)-axO;reset I I I f (Resé! de la bandera 111}sel 110; {Activa la bandera f lO¡sel H2; (Act iva la bandera 112}ic iUH>ffOOÍOO; {Activa hi Interrupción IKQ2 por flanco

con fi gurai"imask-Q;axOO;dm(rcinicio)=ax0;axOHIavcü;dm(kcyO)=axO;axtHlavel;dm(kcyl)=axO;¡ixO-iiiimmues;clm(in_cnlr)~axü;Ífc=QxíT; { El imina inlcrrupcioncs pendientes }nop;iniask=0x23ü; { Hab i l i t o IRQli, IRQ2 y el puerto serial SPOIITO

esperíi: { Lazo principa! de programa }idle;:!xO=dm(fln_flag);ni-pass axO;Íl" na lis;axO^dmfrcinieio};ar=pass axO;if M c j u i i i p configurar;j i imp espera;

{ ---- S u h r u t i n a do tul e se procesa his mu es I ras de en I rada en base al algor! (mu F'Slí

inpiit_s:unples:una secj-cg;ax0=dni(inicio);¡ir=pass axO;if 'cq rli:axO=din{grab__kcy);ai-pass axO;i f c q jump siga;

dtn(l!ave_0)~ar;ai— c lm(kcyl ) ;dtn( l lavc_l)-ar ;ni-Ü;dm(grab_key)=ar;

siga:axO=dni(]-x_bur-!-l); { Lee muestras de entrada por el canal izquierdo!dm(enlrada)~:iNO;cal i criplo_pseu; { Llama a lasu lmt l ina de Encriptación}

a ("iixO;dm(l.x_bur-i l )-ar; { Transmite mués tras ene-ripiadas porcl cana! izquierdo

46

Page 46: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

tlm(lx_bur-l-2)=ni~din(salii!a)-íir;

rcsct HO;nop;¡u(0)=ar;nop;.sel HÜ;

ai— dm(m_cnlr);ar=ar-l;din(in_cnlr)=ar;if nc jump Ílcna_lnir!cr;axO=miinmnes;din(reimcio)=axü;drn(m_c!ilr)~uxO;

llena_bulTcr:axO=dm(in¡_llcnar);ncmc=pnss nxü;ifcq rli;axÜ=dm(cnirada);dni(i0.mü)=axÜ;axO-dm(salida);dni(Í!,mO)-axÜ;at— (iin(ncntr);:n— ar-1;

Transtnile muestras encriptadas por el canal izquierdo }

{Rescl de la bandera Í10}

¡Activa la bandera HO}

¡fnc rli;axO=Oxf;din(fin_nag)=axO;rl i;

Subnifina que aticiulc la Internipcíón'IRQli

irqe:cnn scc_rcg;lügglc DI;axü=dm(inic¡o);ar=not axO;din(inicio)=ar;ax()=IlavcÜ;dni(kcyO)=nxO;axÜ=!l:ivc¡;dni(kcyl)=íix0;axO=niimnuics;flinfm cnlr)=a,\0;axO=üTdni(rcinicio)~axü:

dni(ncnlr)~iixÜ;rli:

47

Page 47: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Prt juninuí del Ali 'ürihno i > SEU218I .DSI > :

{l*Sl íU21f l l . I )SP. - A lgo r i tmo de Üj ic r ip t ac ión (Dcsencriplación) de muestras con clave de generaciónl '5(Midoalealori: i

K. V i c u ñ a Muñox- lino rip I ación de Vo?, - Oc íuh rc 99

En I rada:axO - Doto original de entrada

Salida:axQ = Dato cncriptado íle salida

Kegisíros al terados:axO, ayO, i n r i , mrO, ar,

Tiempo de ejecución:576 Ciclos de máquina

.MODULE

.ENTRYJ-XTI iRNAL.EXTERNAL

.VAR/DM

. INIT

.INIT

.GLOBAL

cncriplac¡on_pseu;criplo_pscu;permutar, xor_crip;tbljierl;

kcy l , kcyO, keyN, mcnen;k c y l : O x l 9 7 1 ;kcyO: 0x1999;

criptujíseu:

dinf inenenJ-axO;ay()=dm{key!);13=0;i3-Atbl_perl;cal i peniuiliir;

n i i '0=nir l ;c:ill xor_cnp;mrl=nr ;

ayO^dm(kcyO);13=0;¡3=Atbl_pcr!;cali permutar;mrO=ar;

cal i ,\or_c:np;mrü=ar;

si^ashifí i n r i by A {lii};si=sr or Ishifl mrü by 4 (lo);clm(kcyN}=srl;

{Guarda la niuestni de entrada en el bufTer menen{Guaixiü la clave K l en el registro AYO}

{Llama ¡i la Subru l i im P E R M U T A R }{Obtiene los 16 bils permutados de !a Í7,t¡i!Ícrd:i Ll}{de la clave y los guarda en el registro MK 1 j

{Almacena el dato Ll guardado en in r i en el registro}(tnrO y l lama a la Subru t ina XOR_CRIP y vuelve a}{guardar este dalo en m r l }

{Guarda la clave KO en el registro AYO}

¡Llama a la Subni t ina P E R M U T A R }{Obtiene los 16 bits permutados de la derecha LO}{de la clave y los guarda en el registro M R O }

{Llama a la Subr i i l ina XOR_CRIP y guarda cslcj{ resultado en M R O }

{Obtención tic la clave Kn para e.sla etapa desplazando){Ll ctinlro posiciones hacia la izquierda}

49

Page 48: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

sr=asiiill i n r i by 3 (lii); {Rotación de la clave (Ll y LO) I res posiciones a lsr=sr or I s I i i H n i i Ü by 3 (lo); ¡izquierda, |)ara ser u t i l i zada en la .siguiente etapa}dm(I;ey l ) = s r l ;nyíKsrí);s r= l sh i l l i n r l by- !3 ( Io ) ;a¡—srü or ayO;dm(kcyO)=ar;

axO=ciin(mcnt:n)ayÜ=dm(kcyN);ar=axO xorayO; {Encuentra la muestra cncriplada realizando la

{xor entre e¡ dato de entrada y la clave Kn ¡{y lo almacena en AR}

axO=ar; {El resultado es alniaccnndo en el registro AXÜ¡rls;

.IZNDMOD;

Nula : Como se indico cu la sección 3.2, PSBU21SÍ .DSP es un algori tmo de ida y vuelta, es

decir que se u t i l i za cl mismo algoritmo para el proceso de desencriptación.

50

Page 49: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa Pr inc ipa l üe Dcsoi icr íp tac iun:

{ R.\_I'2I81.I)SP- Programa Pr inc ipa l de I)e.sencn|ítadón del A lgo r i tmo PSEU2181.DSPMigue l E. V i c u ñ a Muño/ , / lí u cnp tildón de Vox/ Oc tub re 1999

¡6 > puntero parn rx_bu[*¡7 > puntero para lx_bufin7 > util izado para el autobi i ferado ¡117=1

í

.MODULlI/RAM/AlíS-0 Rx_mucslmsjo_Tx_COD!íC;

¡ Dcc l i i i ' i i c ion í lc c o i i s l a i i l c s u l i l i x a d a s en e! progi':nn:i

.CONST rs=0.xcS51, N=2, mmi=0x400, l l i ivcO=Üxl999, I l ave l=0x l971 , nummLies=325ÜO;

. INCLUDE <..\rt'B_cirl.tlsp>;

.EXTfiKNAL criplojiscu, xor_erip, pecnmíar, keyü, kcy l ;

{ Dcc ln rac ion de var iab les

.VAR/OM/C1RC/ABS=0 xc_rx[numj;

.VAR/OM/CIRC xoul lmim];

.VAIVDM/CIRC cnirada[N];

.VAR/DM inijT:, ínijlciiar, ncnír, pscudo_\vord, rcinicio,ni_cntr, tbljicrl [32], entra, salida;

JNMT ini_rx:0;.1NIT rcinicio:ü;.1NIT ÍnÍ_!lenar:0;. INIT ncntr:imni;.IN1T [ii_cntr:iniiii!iHics;.1N1T cntrada:0,0;. I N I T tbI j icrI :< . . \pcrnHitn\Í ! ih l ! ip l . l i cx>;

.GLOBAL Ibljicrl;

.1NCLUOE <..\iiii7.ilsp>; { Prograniíi de Iniciulización del COOEC y el DSP

rcsct H l ; {Rcsct de la bandera H l Jicn t l=b / /001ÜÜ; ¡Activa la Intcmipción 1RQ2 por Hanco}ni4= I;|4=N;Í4=Aentr:Kla;I5=N;¡5=Aenlr;ula;iiiO=-J:

ÍÜ=Axc_rx;l l=%xot i t ;i l= A xou t ;

51

Page 50: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

configurar:miask=0;

i5=Acntr¡ul¡i;axtHIavcO;clm(kcy0)=»x0;axOllavcl;din(keyl)-axO;:ixO=mim;din(ncnlr)=a.\0;nxO=iiiiniiiHics;dm(m_cnlr)=axO;axO=0;dtn(ini_rx)=¡ixO;(lm(iiiHIcnar)=axO;

ifcKJxlT; {Hliniina interrupciones pendientes ¡nop;imask=0x230; {llabili lo IKQ2, IRQ!] y e! puerto seria! SPOR'I'Ü

espera: {Ui/.o principal de programa }Ídle;axO=din(nn_flag);ai"=pass axü;¡fnc rts;a,xO=dm(rcin¡cio);ar=pass nxü;ifncjump configurar;jump espera;

{ -------------------------------- Subrulina que1 alietide l:i InloiTiipción IRQ2 -------------------------- }

irq2:ena sec_reg;sHo(O);dm(i4,m4)=si; ¡ Almaceno inneslra encripíadas en el bufiercnfrada }axOl;d[)i(ÍnÍ__rx)=axO;loggleíl!;ai-dni(iu_cntr);ar=ar-I;dni(ni_cnlr)=ar;Í fue rti;axO=nuinnu!Ch"dni(rcin¡cÍa)=axO;(|[ii(ni_ailr)=axÜ;ni;

{ ----- Subrulirui diunlesc [intccsa las miiesfrns c-iicnpdubis en base ;il al^nrilnio P.SICU2 I 8 I .I)Sl' ----- }

ena scc_rcg;axO=dni(ini_rx);ar=pass axO;iTeq rlí;

52

Page 51: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

¡i.NO=dm(i5,ni4); { Lee muestras encripladas del buffer resul ¡(Im(cnlríi)-iixO;cali criploj>seu; i Llama a la subru t ina de desencriplación}iir=a.xü;dm(sal¡da)-¡ir;ilin(íx_bur-H)=:ir; {Traiismile ¡nuestras deseiicriptadas por el canal izquierdo)ílni((x_buf+2)=ar; {Transinilc mucslras dcsencríplatlas por el canal derecho}

fi.\0=dm(0x3fc5);a N s l b i t O o f a x O ;ifnc rt¡;

axQ=dni(entríO;din(ÍO,mü)-axÜ;a.xO=din(saIÍ<la);dm(i],mO)=a.xO;ai—dni(ncnlr) ;a i—ar-1;dii!(ncnlr)=:ir;¡ fue rt¡;

axO=OxHdm(íln_nag)=a.xO;rli;

j S u b r u í i n a q u e a t iende I n I n t c r i ' u p c i ó n IRQE

Irqe:cna sec_reg;loggle f l l ;a.xü=ü;din(enlrada)=a.xü;c!in(cnlríidn-)-l}=¡ixO;dm(ini_rx)=tixü;din(rcin¡ciü}=:ixO;a.xO=IIavcü;din(kcyU)=íix(J;a,xÜ=llavc!;dm(kcyl)=axO;axü=ni]iiiniues;ilni(!n_ciitr)-:ixO;rti;

.INCLUDE <..\ííri.<!,sp>;

.RNDMOD;

53

Page 52: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

'ROCKAMAS I 'ARA LA ÜNCRIPTAClOiN 1 Y D I C S Ü N C R I P T A C I Q N DE VOX

U T I L I Z A N D O U L A L C O m T M O OESIW.DSP'Y

RES I 'ÉCTIV AMENTÉ

j'PEjraMja l>r i i ici¡ni] cié Encr ipUic iún :

{ TxJMÜS.DSP- Programa P r inc ipa l de Gncnp lac ión del A l g o r i t m o DES2I81.DSP¡Miguel E. V i c u ñ a Muño? , / Encr ip (ac ión (le Voz/ Oclnhi ' c 1999

1

.CONST!s=ÜxcS5l;

Dec la rac ión de c o n s l a n l e s u t i l i z adas en el programa —

{ Frecuencia de mneslrco = 5.5125kl I?, }

.CONSTI l i ivc l=Oxl97 l ;

.CONSTcl¡ipns=0,1111111= i 024;

.1NCLUDB <.Aini_kik.dsp>;

.VAR/DM/CIRC/ABS-0

.VAll/DM/CiRC

{In ic ia l i znc i f ín del ADSP-2181 y el AD-I847}

Declaración (le var iables

xinf i i i in i ] ;xc_lx[nuni];

.VAR/DM Inicio, inijleiw, l impiar , ucntr , m_cntr, o i i l l , üiitO, lbl_per![32], grab_inÍ,grab_key, IIavc_0, !l;nfe_l;

. INIT Ínicio:0;

.1NIT m_cnlr:0;

. I N I T o i i tOrO;. INIT oul 1:0;. INIT lb l_pcr I :< .ApLM'mula \ íab]ap] . ! iex>;

.IZXTIiIlNAL cripto_tlcss kcyO, kc y l ;

.GLOBAL t l j l_pc ' i - l ;

resol n I ;15=%xin;i5=Axin;

{Rcsct de la bandera f l l

¡6=AxcJ.\ni?85!;

sel nO;sel (12;

{Activa la bandera (10}¡Acllva la bandera I12¡

tliii(grab_kcy)-nxO:(Ím(gi'iibJiiÍ)~;ixü;dni(Í[]ÍJlcnar)-axü;din(limpiar)=;!xO;nxO=)unii;

54

Page 53: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

espera {Lazo principal de programa

dm(ncnlr)=nxü;¡re=o,\rr;nop;¡ii]nsk=0.x230;

idle;:ixO=dm(fin_nag);ai— pass axO;i f u e rls;jump espera;

{ ----- S i i í ) r u l i n a donde se proccsn t;is mucsínis de entrad u en base ni a lgor i tmo DES2181.DSP ------ }

¡nput_samplcs:cna scc_reg;¡ixO=dm{Ín¡cio);ar=pass axO;Ifc t ] rlí;

a.\0=c!in(gnib_key);ar=pass a.xü;í f eq jump siga;ar=din(keyO);ih]i(llavc_Ü)=ar;íii— dm(kcyl ) ;din(ll;ivc l)=ar;nr=0;(ini(gnib_kcy)=ar;

sga:ai=dm(rx_btir-!-I);mrl=ar;ar=dm(m_cnlr);

Lee nnieslras de entrada por el eanal izquierdo)

aNslbil O ofar;i f n e juinp primcrn_vcz:a x O ~ m r l ;cnlr=ctapíis;do c!apa_des t i n l i l ce;

c a l i eriplo_dcs;clnp:i_dcs: nop;

mrl=dm((ni!Ü);dni(oull)=a.\l;dm(on!Ü}-axO;jump t ransmit i r ;

primera_vez:í i x l = m r l ;mr!=dm(ont I ) :

transmitir:dni ( tx_bi ) f - i l ) = - n i r ) ;d i i i ( t \_bur - t -2 ) - in r l ;rcscl flO;nop;io{0)=mr!;nop;

Llama a la subrul i i i» de cncrip(aciún)

{'l 'raiüanite unicslras cncripladas porcl cuñal izquierdo}{Transmite muestras encripladas por el canal derecho}{líese! de la bandera no}

55

Page 54: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

irqe:

irt|2:

sel flO;

axQ=dn](mÍ_llc¡mr);

{Act iva la bandera HO)

i fcq rli;mrO-dm(rxjHiPH);(Iin(i5,in7)-nir0;dm(Í6,ni7)=nirl;ni^dnifncnlr);ar=ar-l;d!ii(ncntr)=ar;if nc rli;axO=0.\r;dm(Ini_nag)=:ixO;rli;

cníi sec_reg;axO=dm(ÍMÍcio);ar=not a.xO;din(iuicio)=iir;tügglc fl 1;axü=llaveO;ilm(keyO)=axQ;axO=Ilavcl;din(keylh;ix();axO=0;diii(ni_cntr)=íixO;ifc=0.\rr;nop;rti;

cna scc_rcg;axO=0.\f;

Subi-ulina i¡ue uíicmk hi ínlcrrupciún IRQIÍ

Subriilinn (juc nlicndc la IrileriMipciüii IRQ2

c

(Íin(grali_kcy)-axü;i-cscrn2;rti;

.includc <..\rin.dsp>;

.IZNDMOD;

Page 55: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

tlül AI»ün<moDIJ:S2181.DSP:

.- Eiimplnnon tic mneslrns par» im¡i i I oración del Algoritmo OES2I8 l.USP[Miguel lí. Vicuña (Muñoz- Encnplai-ión tie Voz- Octubre 99

axl — Oíito anlerioraxO = Datu aclual

Sii luhi:axl = Dato anterioraxO = Dato actual

Ucyislros nllerntlos:ayü, inri , iniO, axO, ax

de ejecución:1005 ciclos cíe máquina

.MODULE

.I-NTRY

.I-XTHRNAL

.EXTERN AL

.VAR/DM

.1NIT

.IN1T

.GLOBAL

críplo ciesx:

encriptacion_tlcs;cnpto_dcsx;permutar, ,xor_crip;Ibljjcrl;

keyl, keyO, keyN, incncnt, mcncnO;k e y l : O x l 9 7 I ;kcyO:0x1999;

kcyl,keyO;

dni(mcnenl J~ax!;din(mcnenOJ~¡ixü;

13=0;Í3=A!bl_pcrl;cali permutar;mrl=ar;

mr0=inrl;cali ,xor_críp;mrl=ar;

nyO-dm{keyO);13=0;Í3=Albljierl;cali permutar;mrO=ar;

cali xor_crip;mrO=ar;

¡Guarda c! dato anterior en mcncn I ¡{Guarda el dato actual en mcncnO}

{Guárela la clave Kl en cl registro AYO}

{Llama a la Subrulinn PERMUTAR){Oblienc las 16 bits permutados cíe la izquierda L l }{de la clave y los guarda en cl rcgislro M R ! }

{Almacena el dato Ll guardado en inri en el registro}{mrO y llama a la Subrulino XOR_CRIP y vuelve a}{guardar este dalo en M R ) }

{Guarda la clave KO en cl registro AYO}

{Llama a ¡a Subruüna PERMUTAR}{Obtiene los 16 bits permutados de la derecha LO}{de la clave y los guarda en cl registro MROj

{Llama a la Suhrulum XOR_CRIP y guarda cslc|{ resultado en MRO}

57

Page 56: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

sr=ashíft m r l by 4 (hi);si^sr or I s l i iR nirO by 4 (lo);dm(kcyN)=srI;

sr=ashifl i n r i by 3 (!ii);sr=sr or Is l i i l l nirO by 3 (lo);dm(key!)=srl ;ayO=srO;s r=Ish i f tmr l by- !3 (lo);ar=srO orayO;dni(kcyO)=nr;

ayQ=dm(incnenl ) ;13=0;Í3=Atbl_perI;cali permutar;i n r i—ar ;

ayQ-dm(mcnenO);13=0;¡3=ftlblj)crl;cali permutar;nirO=ar;

ayO=dm(kcyN);ar=arxor ayO;

ayO=ar;13=0;i3=Albl.j)crl;ca l i permutar;ayO=ar;ai-mrl xor ayü;axO=ar;¡1.x l-mrOrls;

{Obtención de la clave Kn para esta etapa desplazando}{Ll cuatro posiciones hacia la izquierda}.

¡Rotación cíe la clave (Ll y LO) tres posiciones a la]{izquierda, para ser u t i l izada en la siguiente etapa}

¡Dato anterior A ! se guarda en el registro AYO}

{Llama a la subrulma PERMUTAR}{Se obtienen los 16 bi ts de entrada izquierda 131{permutados y los almacena en M R 1 }

{Dato actual AO se guarda en el registro AYO}

{Llama a la subrut ina PERMUTAR y se obtienen los 16 bits de){entrada derecha BO permutados y los almacena en MRO}

{Encuentra C! realizando la función xor entre el ciato de{entrada permutado BO y la clave Kn para esta etapa}{ y lo almacena en AR: Cl = 130 xor Kn}

{El dato CI guardado en el registro AR ¡o almacena}{AYO, ]iara luego l lamar a la Subrutina PERMUTAR}¡y encontrar el dato Fl y f ina lmente almacenarlo}{en el registro AYO = F l }

{Se encuentra el dalo DO, realizando una operación í{xor a nivel de bit entre DI y F I y lo almacena en}{AXO: DO = 131 xor Fl , y DI lo almacena en A X I }

.ENDMOD;

58

Page 57: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Proprama Principal tic Dcseucriptación:

Rx_I)RS. DSP -Programa Principal de Encriptación del Algori tmo DESI2Í81.DSPE. Vicuña Muñoz / Encriplación de Voz/ Octubre 1999

( ------------------------------ Declaración de constantes ulili/.adas en el programa

.CONSTfs=Oxc851, Ilave0=0xl999, I l a v c l = 0 x l 9 7 i , ctapas=3, num=1024;

.¡NCLUDE<..\inÍ_kÍk3.dsp>; {Inicial izaci j ín del ADSP-2I81 y el AD-1847}

( -------------------------------------------- Declaración de variables

.VAR/DM/C!RC/ABS=0 xc_rx[num];

.VAR/DM/CIRC xoul[num];

.VAR/DM par_entr, inicio, limpiar, ¡ni_rx, i n l , inO, o u t l , outO,ncntr, tbljperl[32j, tbl_perl[32], llaves_N[etapas], daloin, puntj4;

.VAR/DM/CIRC bunbr[2];

.1NIT

.INIT

.1NIT

.INIT

.INIT

. INITJN1T.INITJN1T.INIT.INIT

.EXTERNAL

.GLOBAL

• m7-l;m4=l;

par_cntr:0;¡iiicio:0;inÍ_r,x:Ü;bufrcr:0,Ü;i n l : 0 ;inO: 0;o u í l : 0 ;oulO:0;ncntr: nuin;tblJpci-l:<.Apeniinta\tablap2.hc,\>;íbl_perl :<. . \permutn\tablapl .hcx>;

criptojdes, genjlave, kcyl , kcyQ;Ibljperl.tbljierl;

14=0;12=0;15=%xout;i5=Axoul;16=%burier;¡6=Abiirfcr;17=%burfcr;i7==Abiifrcr;rcscí fl 1;sct f!2;iinask=0;ÍI.XÜ--G;din( l impiar)~ax0;axO=num;dni(ncnlr)=axO;axü=Axc_rx;din(punlJ4J=axO;ilc=0.sff;

{Rcset de la bandera f l l(Act iva la bandera (12}

E l i m i n o interrupciones pendientes

59

Page 58: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

espora:

nop;imask=0x230;

idlc;ax0-dm{finjlag);at~piiss ¡i.xü;¡fue rts;j i imp espera;

{ Habi l i to IRQE, IRQ2 y el puerto serial SPOllTÜ

{Lazo principa! de programa }

{ S u b r u l i n a donde se procesa las muestras cíe entrada en base al a lgori tmo IDES2181.DSP }

inpiit_síiinples:ena sec_reg;ax0=dm(inicio);ar=pass axO;Ifcq i'! Í;

Íix0=dni(i7,m7):dm(dntoin)=íixO;mr l=axU;ar=din(par__cnír);ai—ar¡-1;dm(par_cntr)=ar;a f= t s tb i !0ora r ;if ne jump primera_vez;dm(inO)-mrl ;•Í4=AlIaves_N;cnlr=etapas;do lazo_IIaves unt i l ce;

cali genjlave;lazojlaves: dm(i4,m4)=si;

¡4=Al!aves_N-!-ctapas-1;ni5=-l;a x l = d n i ( i n l ) ;axO=dm(inÜ);cnd"ctnpa.s;do et;ipíi_ides n n t i l ce;

si~dm(i4,m5);cnl ! criptojdcs;

c(apa__!de.s: nop;

nirl=dni(ou¡0);dm(ontl)-ax I ;dm(oul0)=axü;j u m p tnmsnii l i r ;

pi'iniera_vez:dm(in l ) = n i r l ;m r l = d m ( ü u l l ) ;

Iransmilir :dm(ix_buf- t -1)=mrl ;dm( tx_b t iP f -2 )=mi - l ;axU=dm(Üx3le5);aíHslbii O o f a x O ;il 'ne i'li;

{Llama a la Snbrutina de generación de llavesj

(Llama ;t In Subrntina de desüiicnplaciónj

ÍTransmite muestras desencriptadas por el canal izquierdo}iTransniilc muestras dcsencnpUuias por ei canal derecho}

60

Page 59: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

ayO~dni(dak>iii);i*!~t!m(pimt_M);din(¡'l,in<])~ayü;dm(puníj'l}=¡4;dm(Í5,n]'I)-mrl;¡ir= dm(ncnlr);;ip=ar-l;din(ncnlr)=ar;if nc rtí;axO=Oxf;dni(rín_nng)=a.\0;rli;

{ -------------------------------- Subriiíiiiii cjnc nliüiitk' In Inlcrrnpción 1RQ2Írq2:

clin scc_rcg;si=io(0):axO=tlin(iiiÍ_r.x);ayü=2;ai-=nxO-ayO;i fcq jumpsigtiej-xio;

iliníiní_rx)=íir;rli;

sigue_rxio:din(iC,m7)=s¡;axO=¡;dni(Í!iÍc¡o)=axO;logglc fll;rl¡;

j ----------------------------- Suhriiiiiin (|iie aticiidL1 In fntemipeión IRQIÍ¡rqe:

l u g g l c n i ;axü=0;diii{Íni_rx}-¡!x();

dni(oiilO)=iixO;

din(mQ)-axO;din(burfcr)=axt);dni(buricr-M)-axÜ;din(¡nícÍo)=axO;

axü=!laveü;din(kcyO)=axü;axO=l!avel;dniCk-cyl)=iixÜ;

ifc-OxIT;nop;r t i ;

.include <Aíin.(lsp>;

.RNDMOD;

61

Page 60: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa del Alüor í lmo DESI2181.DSP:

{UESI2181 .USP. - Encriplacion de muestras para una iteración del Algoritmo OESI2181.DSPMiguel E. Vicuña Muño?;- l íncripíación de Voz - Octubre 99

Entrada:

axl = Dato anterioraxO = Dato actuals¡ = Clave Kn

Sal ida :a x l = Dato anterioraxO = Dato actual

Rcpistros alterados:ax 1, axQ, a y l , ayü, sr, mr , ar, 13, Í3

Tiempo de ejecución:564 ciclos de máquina

.MODULE

.ENTRY

.EXTERNAL

.EXTERN AL

.VAR/DM

cripto_idesx:

dcsencriptacion_dcs;criptojdesx;permutar;tbl_j>erl , tbMpcrl ;

n ienen l , mencnO;

dni (mcnenl )=axl ;dm(mcncnO)=axO;

ayO=dm(mcnenl) ;13=0;¡3=Atbl_ipcrI;cali permutar;mrO=ar;

ayO=dm(mcncnl);axO=si;ar=axO xor ayO;

ayO=ar;13=0;Í3=rtlbl_perl;cal! permutar;ayO=dm(menenO);ar=ar xor ayü;

ayO=ar;13=0;¡3=AtbMperl;cali permutar;ax! =ar;ax()=mrO;rts;

{Guarda el dato anterior cncriptado DI en mencn I }(Guarda el dato actual cncriptado DO en mencnO}

(Guarda el dato anterior D I = BO en el }{registro AYO y llama a la Subruüma PERMUTAR inversa}(a la ut i l izada en la encriptación para obtener así el dato }(de entrada AO}{El dato actual desencriptado lo almacena en MRO = AO }

(Guarda el dato anterior DI en el registro AYO}(Almacena la Llave Kn utilizada en esta etapa en AXO ](Encuentra el dato Cl y lo almacena en AR realizando un](XOR a nivel de bit entre D I y Kn }{Cl es almacenado en AYO y se l lama a la S u b r u t i n a ){PERMUTAR ut i l izada en la encriplacíón}(para encontrar el dato de Fl y a lmacenarlo en AR}

(Almaceno el dato ac tua l DO en AYO}{ Se encuentra el dato B I realizando una operación Xor}{a nivel de bit entre Fl y DO y lo almaceno en AR}(Almacena el dato de Bl en AYO}(Luego se l lama a la Subrut ina PERMUTAR inversa}(para encontrar el dato anterior desencriptado de entrada A(AK-AI }(Almacena el dato anterior desencriptado al registro AXI }{ Almacena el dato actual desencriptado al registro AX I }

.ENDMOD;

Page 61: LISTADO DE PROGRAMAS · 2019. 4. 7. · los programa ds e encriptació y desencriptación dn e la seña dl e voz, escrito ens e lenguajl e ensamblador del ADSP-2181 son : C:\ENCRIPTAC10N\P

Programa del Algoritmo GEN KEY.DSP:

gcri_kcy.dsp - S u b r n l i n a para generar la clave de una iteración de la dcsciicriptacion DESI .2181Miguel Eni - i ( |ue Vicuña M u ñ o z / Encrip(ación de Voz/ Octubre 1999

Salida:SÍ = llave N

Registros alterados:ayO, mr, ar, sr, 13, i3

Tiempo de ejecución:564 ciclos de máquina

Llamadas a subru t inaspermutarxor_críp

Gcnerac¡on_Ilave;gcn_llave;pcnnutar, xor_crip;tbl_pcrl ;

keyl ,kcyO:key l : 0x1971;kcyO:Ox!999;

keyl , keyü;

.MODULE

.[•NTRY

.EXTERNAL

.EXTERNAL

.VAR/DM

.IN1T

.INIT

.GLOBAL

gcn_llave:

ayO=dm(keyl);13=0;i3=Atbl_perl;cali pcrmtiííir:mrl=ar;

mrO=mrl;ca l i xor_cnp;mr!=ar;

ayO-dni(keyO);13=0;Í3=Albl_peri;cal i permutar;mrO=ar;

cali xor_crip;mrO=ar;

si-;ishift m r l by 4 (hi);sr=sr or LshiA mrü by 4 (lo);si=srl;

sr=ashiñ mrl by 3 (hij;sr=sr or Ish i f t mrO by 3 (lo);dm(keyl )=sr l ;

{Almacena la clave [Cien el registro AYO}

(Llama a la subrutirm PERMUTAR}{Obtiene los 16 bi ts permutados de la izquierda de la clave){ Ll y lo almacena en el registro MRO = LI}

¡Llama a la subrutína XOR_CR1P y se obtiene Ll .xor}[y se lo almacena en el registro MR1= Ll xor }

{Almacena la clave KO en el registro AYO}

{Llama o la subrutina PERMUTAR}{Obtiene los 16 bi ts permutados de la derecha de la clave}{ LO y lo almacena en'el registro MRO = LO}

{Llama a la subru t ina XOR_CRIP y se obtiene LOxor}{ y lo almacena en el registro MRO= LO xor }

{Obtención de la clave Kn para esta etapa desplazando}{LI cuatro posiciones hacia la izquierda!

{Rotación de la clave (LI y LO) tres posiciones a la}(izquierda, para ser ut i l izada en In siguiente etapa}{Almacena la clave K¡, ,, }

63