Módulo Información Confidencial

Extensión para guardar información confidencial de manera segura. Los datos serán encriptados y solo accesibles por usuarios con las credenciales apropiadas El objetivo de este módulo es el de proteger la información confidencial del acceso no autorizado, tanto desde dentro de la empresa como de todo aquel que de alguna manera podría conseguir un acceso a nuestra base de datos completa, ya sean con malas intenciones o simplemente terceros que requieren acceso para dar soporte o resolver problemas.

Name:
tsolucio/Confidential-Information
Type:
corebos-module
Description:
Extensión a vtigerCRM para guardar información confidencial de manera segura. Los datos serán encriptados y solo accesibles por usuarios con las credenciales apropiadas El objetivo de este módulo es el de proteger la información confidencial del acceso no autorizado, tanto desde dentro de la empresa como de todo aquel que de alguna manera podría conseguir un acceso a nuestra base de datos completa, ya sean con malas intenciones o simplemente terceros que requieren acceso para dar soporte o resolver problemas.
Keywords:
security, confidential, encryption, hide, secure, protect
Version:
1.2
Home Page:
http://corebos.org/documentation/doku.php?id=en:extensions:extensions:confidentialinfo
Release Date:
2015-11-30
License:
Vizsage
Distribution:
Free
Author Name:
JPL TSolucio, S.L.
Author EMail:
info(at)tsolucio(dot)com
Support EMail:
info(at)tsolucio(dot)com
Support Issues:
https://github.com/tsolucio/Confidential-Information
Support Forum:
http://discussions.corebos.org/
Source:
https://github.com/tsolucio/Confidential-Information


Campos

Confidential Information

FieldTypeValues
CI INFO Noautonumber Identifier
CI Referencestring
CI Related torelationAccounts,Contacts
CI Categorypicklist— Please Select —,Access Information,Personal Information,Other Information
CI AssetrelationAssets
Assigned Toassigned to
Created Timedatetime
Modified Timedatetime
Descriptiontext

Custom Information

Additional Information

Módulo Información Confidencial

Este módulo está relacionado con una cuenta/contacto y un recurso. Podrás ver la lista de información confidencial relacionada con cada uno en su pestaña de +info.

Un registro de Información Confidencial tendrá dos partes:

  • Cabecera
    • Nímero CI (campo enlace)
    • Cuenta/Contacto (obligatorio)
    • Recurso (opcional)
    • Nombre, campo de texto para referencia
    • Categoría, lista desplegable, exclusivamente para filtrar y facilitar la identificación del registro
    • Descripción
    • Fecha y Hora de Creación y Modificación
  • El resto de campos y bloques
    • El resto de campos que son de tipo texto serán cifrados, (incluso los campos personalizados). Números, porcentajes, moneda, campos de referencia (uitype 10), checkbox, y campos de tipo fechas y hora NO serán encriptados ya que el valor se perdería al guardar en la base de datos. Si necesitas cifrar números, crea un campo de tipo texto y guarda el número en este campo.

Este módulo requiere la extensión MySQLi de php, NO funcionará sin ella.

No tiene posibilidad de añadir comentarios, ni funcionalidad de importar ni exportar, entre otros.

La importación podría ser activada fácilmente pero sólo sería útil en una situación, que es la importación inicial. Al importar información, como es normal en vtiger CRM, se importará en texto plano. Una vez importados los registros, podríamos poner en marcha el proceso de cifrado inicial y todo estaría cifrado. Después de esto, el proceso de importación no funcionaría ya que la nueva importación (de nuevo) entraría los datos en texto plano, mientras que el módulo espera que ya esté encriptada.

El módulo dispone de un registro histórico de operaciones, similar al existente en incidencias y oportunidades.

Al intentar acceder a la vista de detalle o edición, el programa pedirá la contraseña de acceso. Si se introduce correctamente se mostrará la información confidencial, si no se da, no se permitirá el acceso. En cualquier caso se registrará el evento en el histórico de eventos y modificaciones.

Una vez hemos conseguido acceder al registro, se iniciará una cuenta atrás. Al agotarse la cuenta, el contenido de la página desaparecerá y volveremos a la vista de lista del módulo, consiguiendo así proteger la información. La longitud de la cuenta atrás se puede ajustar en el sección de configuración del módulo,

Si se recupera un registro de la Papelera de Reciclaje, debería poderse acceder a la información normalmente, incluso si se ha cambiado la contraseña mientras el registro estaba en la papelera.

Internamente, toda la información se guardará cifrada utilizando la librería mcrypt de php. La contraseña se guardará utilizando sha1 y el vector de información cambiará automáticamente cada vez que se cambie la contraseña.

En el administrador de módulos, podrás acceder a la sección de configuración del módulo, donde podrás cambiar la contraseña global. Esto lanzará un proceso que descifrará toda la información y la volverá a cifrar con la contraseña nueva.

Ya que estamos usando métodos de cifrado estándar y siguiendo las normas, si alguien consigue acceso a tu base de datos, tardarán un tiempo MUY largo (años) en recuperar la contraseña de empresa necesaria para descifrar la información almacenada. Pero, como siempre, con este tipo de solicitudes, el sistema es solo tan bueno como la contraseña que utilizas. Si decides usar tu nombre de empresa como la contraseña de toda la empresa, entonces no tardarán en acceder a la información :-)

Cómo funciona

El módulo se instala utilizando el administrador de módulos y después hay que aplicar el parche que se puede encontrar en el directorio del módulo.

Una vez instalado, hay que crear los campos personalizados que se requieran para guardar información confidencial.

El módulo requiere php_mcrypt para encruptar la información.

A continuación, hay que acceder a la sección Cambiar Contraseña en la configuración de módulo:


Establece la contraseña empresarial y puedes empezar a utilizar el módulo de manera normal, como si fuera cualquier otro módulo de vtiger CRM. La diferencia será que el módulo te pedirá la contraseña cada vez que intentas acceder a la vista detalle o edición del módulo. Si la introduces correctamente se te permitirá el acceso a la información, si no, no podrás acceder a los datos.

Recuperar información al perder la contraseña

Si pierdes la contraseña, pierdes la información. No hay nada más que decir.

Use this module at your own risk. We have not had any problems (yet), but we should not be held liable for any data loss or other events derived from the use of this module.

Libsodium Encryption

Alternatively to the mcrypt methods, we can also encrypt the information with the more secure libsodium library.

Here are some links on the benefits and how to install the library for it's use with PHP.

openSSL Encryption

Alternatively to the mcrypt methods, we can also encrypt the information with the more secure openSSL library.

Here are some links on the benefits and how to install the library for its use with PHP.

PKI Encryption Methods

This method expects to find both the private and public key in some directory accessible from the coreBOS install. This means that the security of this method is inexistent. PKI security is based on how secure you can keep your private key. Since we have both public and private together, in the code, anyone who gets access to your code has direct access to the information.

So, why did we implement it? Because you can use the public key to encrypt the information and not save the private key in the system. If the private key does not exist, no information will be shown. If you need to access the information you must send it to some other system where the private key lives and decrypt it there.

Other Encryption Methods

The module has a generalized layer for the encryption and decryption actions making it fairly easy to implement other ways of protecting your information.

If you are interested, you can contact us for help or have a look at this article that explains how that can be done.

Confidential Information as an Encryption/Decryption Engine

As with most of the development we create, we try to create infrastructure, things you can use in your own developments, not just functionality. Once an encryptionmethod is configured, you can use this module to encrypt and decrypt any information anywhere in the application. For example, in after_save event or in some hook,…

This is what a small script to encrypt a couple of values looks like:

include 'vtlib/Vtiger/Module.php';
include_once 'modules/ConfidentialInfo/ConfidentialInfo.php';
 
$info = array('text'=>'text example','num'=>'123.456');
$encrypted = ConfidentialInfo::encryptFields_pki($info, 'file://public.key');
 
var_dump($encrypted);
 
$decrypted = ConfidentialInfo::decryptFields_pki($encrypted, 'file://private.key');
 
var_dump($decrypted);

FAQ

La contraseña es única a nivel de empresa y se ha de pasar de mano en mano. No tiene nada que ver con los perfiles. El sistema de permisos de vtiger CRM funciona en este módulo así que si lo haces privado y defines reglas de acceso, incluso a nivel de campo, éstos funcionarán como es debido, pero solo podrán acceder a la información encriptada aquellos usuarios que conozcan la contraseña.

Ampliaciones Futuras

Opciones a considerar en el futuro:

  • Acceso con contraseña dual (como enviar un SMS o email con un código de confirmación o token)
  • Acceso por categoría/usuario/nivel (así, algunos usuarios solo pueden acceder a información de categoría 1 y otros de categoría 2)
  • Opción de forzar la renovación de la contraseña cada n-días.

coreBOS Documentación