miércoles, 21 de marzo de 2012

Encriptaciòn

"ENCRIPTACION"


La encriptación es el proceso para volver ilegible información considera importante. La información una vez encriptada sólo puede leerse aplicándole una clave.
Se trata de una medida de seguridad que es usada para almacenar o transferir información delicada que no debería ser accesible a terceros. Pueden ser contraseñas, nros. de tarjetas de crédito, conversaciones privadas, etc.
Para encriptar información se utilizan complejas fórmulas matemáticas y para desencriptar, se debe usar una clave como parámetro para esas fórmulas.
El texto plano que está encriptado o cifrado se llama criptograma.
Por Harvey Triana
La Encriptación, es un tema de la programación bien interesante, de hecho se trata de una alta ciencia de la informática, que pasa por arte, inclusive hoy se trata de una tecnología. Encriptación es una palabra rara en español, quizá fea, no obstante se emplea en documentación técnica.







La encriptación informática es simplemente la codificación de la información que vamos a enviar a través de la red (Internet). Para poder descodificarla como dijimos es necesario un software o una clave que sólo conocen el emisor y el receptor de esta información.
La encriptación de la informática se hace cada vez más necesaria debido al aumento de los robos de claves de tarjetas de crédito, número de cuentas corrientes, y en general toda la información que viaja por la red, etc.

Aclaración: encriptación vs. cifrado
Se prefiere el uso de la palabra "cifrado" en lugar de "encriptación", debido a que esta última es una mala traducción del inglés encrypt.
Algo de Teoría
La encriptación se hace a través de la aplicación de cierto tratamiento a los códigos ASCII de los mensajes, de manera que el tratamiento inverso será el único camino práctico para decodificar el mensaje.
¿Cómo se mantiene indescifrable una cadena codificada?. Se trata de combinar la clave de encriptación con el mensaje de manera que las probabilidades de decodificar el mensaje, sin conocer la clave, sean virtualmente infimas, es decir, el tan prolongado el trabajo de desciframiento que no existen esperanzas próximas.
Por ejemplo cuando un cristal ornamental se rompe violentamente, es casi imposible volver a juntar las piezas para obtener la pieza original.
Como una cita teórica, uno de los algoritmos de codificación se basa en la función números primos. Por ejemplo resulta fácil multiplicar dos números primos, sean a = 11927 y b = 20903, de manera que a • b = c = 249310081. Pero resulta muy difícil determinar a y b a partir de c. Matemáticamente esto se hace a través del procedimiento conocido como Descomposición Factorial. En el ejemplo c viene a ser la codificación, mientras a y b son la clave de decodificación. Esta estrategia es la base de un ingenioso y sofisticado sistema de encriptación llamado Criptosistema RSA (en honor a sus autores). de hecho este es el mejor sistema de encriptación y es posible que sea aplicado en las comunicaciones masivas de Internet en un futuro. Siguiendo con mí ejemplo, en un caso real, se trata de cifras de alrededor de 250 dígitos, lo cual teóricamente requiere de millones de años para descomponer factorialmente. Una anécdota citada en el libro Camino al Futuro (2ª edición) de Mr. Gates, cuenta que un reto publico de descifrar una clave de 129 dígitos fue superado al coordinar un trabajo de varias computadoras e Internet, para finalmente lograr la respuesta en menos de un año. En el reto los autores predecían que su mensaje jamás sería desvelado. El libro mencionado hace una exposición más detallada de este tema. Por supuesto, este articulo no llegará tan lejos
.
Dos Procedimientos de Encriptación
La Encriptación tiene dos elementos: Un mensaje, y una clave privada de acceso entre el emisor y el receptor, con la cual se puede descifrar el mensaje. El procedimiento de encriptación produce un mensaje o archivo cifrado. Presento dos procedimientos escritos en Visual Basic, catalogados como verdaderas maneras de encriptación.

Modelo EncryptionString
EncryptionString, es un clásico sistema el cual toma el mensaje y una clave del usuario, y a través de una combinación de estos dos parámetros se produce una cadena codificada.
Texto a codificar:         ENCRYPTION
Caracteres del Texto:      E   N   C   R   Y   P   T   I   O   N
Códigos ASCII:             69  78  67  82  89  80  84  73  79  78
Contraseña KEY:            K   E   Y   K   E   Y   K   E   Y   K
Caracteres de KEY:         75  69  89  75  69  89  75  69  89  75
Suma de Códigos ASCII:     144 147 156 157 158 169 159 142 168 153
En caracteres:                   œ      ?   ©   Ÿ   ?   ¨   
 
Texto codificado:          �“œ�?©Ÿ?¨™ Ç
 
El modo para usar la función EncryptionString es el siguiente:
'//Codifica
TextoCodificado = EncryptString(TextoOriginal, Contraseña, ENCRYPT)
 
'//Decodifica
TextoOriginal = EncryptString(TextoCodificado, Contraseña, DECRYPT)
La ventaja de esta técnica es que es muy flexible de usar e intuitiva. Sin tener la máxima seguridad, es muy segura. Escribir un programa para encriptar archivos resulta bastante simple por aquello de la contraseña. No ocurre lo mismo con el siguiente procedimiento: ChrTran.
El código de EncryptionString es el siguiente:

DefInt A-Z
Option Explicit
 
'//For Action parameter in EncryptString
Public Const ENCRYPT = 1, DECRYPT = 2
 
'---------------------------------------------------------------------
' EncryptString
' Modificado por Harvey T.
'---------------------------------------------------------------------
Public Function EncryptString( _
    UserKey As String, Text As String, Action As Single _
    ) As String
    Dim UserKeyX As String
    Dim Temp     As Integer
    Dim Times    As Integer
    Dim i        As Integer
    Dim j        As Integer
    Dim n        As Integer
    Dim rtn      As String
    
    '//Get UserKey characters
    n = Len(UserKey)
    ReDim UserKeyASCIIS(1 To n)
    For i = 1 To n
        UserKeyASCIIS(i) = Asc(Mid$(UserKey, i, 1))
    Next
        
    '//Get Text characters
    ReDim TextASCIIS(Len(Text)) As Integer
    For i = 1 To Len(Text)
        TextASCIIS(i) = Asc(Mid$(Text, i, 1))
    Next
    
    '//Encryption/Decryption
    If Action = ENCRYPT Then
       For i = 1 To Len(Text)
           j = IIf(j + 1 >= n, 1, j + 1)
           Temp = TextASCIIS(i) + UserKeyASCIIS(j)
           If Temp > 255 Then
              Temp = Temp - 255
           End If
           rtn = rtn + Chr$(Temp)
       Next
    ElseIf Action = DECRYPT Then
       For i = 1 To Len(Text)
           j = IIf(j + 1 >= n, 1, j + 1)
           Temp = TextASCIIS(i) - UserKeyASCIIS(j)
           If Temp < 0 Then
              Temp = Temp + 255
           End If
           rtn = rtn + Chr$(Temp)
       Next
    End If
    
    '//Return
    EncryptString = rtn
End Function

Encriptación de 40-bits y 128-bits.

Existen varios niveles de encriptación, pero las combinaciones más comunes son 40-512 bits ("llave secreta--llave pública") y 128-1024 bits ("llave secreta--llave pública"). La versión 128-1024 bits es el tipo de encriptación más fuerte que existe en el mercado. Actualmente U.S.A prohibe la exportación de productos con este tipo de Tecnología, pero cabe mencionar que ya existen varios productos producidos en Europa con esta Tecnología que no poseen tales restricciones de exportación.
La gran mayoría de los sitios en Internet utilizan la encriptación 40-512 bits, la encriptación 128-1024 bits es utilizada generalmente en transacciones de alto riesgo, como las bancarias.

Procesos de Encriptación
       EncryptionString
       Consiste en tomar un mensaje y una clave de usuario, después sigue la combinación de estos y se produce una cadena modificada.
       Texto a codificar:         ENCRYPTION
       Caracteres del Texto:      E   N   C   R   Y   P   T   I   O   NCódigos ASCII:             69  78  67  82  89  80  84  73  79  78
       Contraseña KEY:            K   E   Y   K   E   Y   K   E   Y   K
       Caracteres de KEY:         75  69  89  75  69  89  75  69  89  75
       Suma de Códigos ASCII:     144 147 156 157 158 169 159 142 168 153
       En caracteres:                   œ      ?   ©   Ÿ   ?   ¨  
       Texto codificado:          �“œ�?©Ÿ?¨™
Transposition
En este método los mismos caracteres que son usados para la creación del mensaje, son también usados para  la encriptación.
Por ejemplo: si quisieras encriptar la frase “Necesito sacarme 100” El mensaje puede ser escrito en dos columnas de la siguiente forma.
Luego si juntas la primera columna y después la segunda se quedaría de la siguiente forma: NCSTSCRE OEEIOAA M10.
Esto ya es más difícil de leer y toma mas tiempo romper el código y descifrar la palabra.
Y esto se vulva cada ves mas difícil si agregas mas columnas y alteras el orden al escribirlos en línea.
Así como los ejemplos pasados, existen muchos tipos de encriptación, que por el momento solamente mencionaremos su nombre.
       Substitution
       Caesar Chipre
       Monoalphabetic Substitutions
       Gronsfeld
       RSA
       DES
       Chaffing & Winnowing
       SKIPJACK
       BÍFIDO
       WLBYKYAAOTB
       Cifrado exponencial
        Blowfish

No hay comentarios:

Publicar un comentario