Cancelar Instalar &para todos los usuarios Exa&minar... Añadir icono de VeraCrypt al e&scritorio Donar ahora... Asociar los archivos .hc &con VeraCrypt &Abrir ubicación de destino al terminar Añadir VeraCrypt al Menú &Inicio Crear Punto de &Restauración de Sistema &Desinstalar &Extraer &Instalar Asistente de Instalación de VeraCrypt Desinstalar VeraCrypt &Ayuda Seleccione o escriba la ubicación donde desea extraer los archivos: Seleccione o escriba la ubicación donde desea instalar los archivos de VeraCrypt. Si la ubicación seleccionada no existe, ésta será creada automáticamente. Presione Desinstalar para eliminar VeraCrypt de este sistema. Abortar &Comparación &Probar Crear volumen cifrado y formatearlo Cifrar partición conservando datos Mostrar claves generadas (parte de ellas) Mostrar contenido del pool Descargar software de grabación de CD/DVD Crear un contenedor de archivos cifrado &GB &TB Más información Volumen VeraCrypt o&culto Más información acerca de volúmenes ocultos Modo Directo Modo Normal &KB U&sar archivo-llave Intente montar primero con una contraseña vacía Tamaño aleatorio ( 64 <-> 1048576 ) A&rchivos-llave Información de algoritmos hash Más información Información de PIM &MB Más información Más información sobre cifrado del sistema Más información Arranque múltiple Cifrar partición/unidad secundaria No &guardar nunca historial Abrir Volumen Externo &Pausa Usar P&IM Usar PIM Formato Rápido &Mostrar contraseña &Mostrar contraseña &Mostrar PIM Arranque simple Volumen VeraCrypt común &Oculto Normal Cifrar la partición/unidad del sistema entera Cifrar la partición de sistema de Windows Cifrar toda la unidad Asistente de creación de Volumen VeraCrypt Cluster IMPORTANTE: Mueva el ratón al azar todo lo posible dentro de esta ventana. Cuanto más lo mueva, mejor. Esto incrementa significativamente la fuerza criptográfica de las claves de cifrado. Luego presione Siguiente para continuar. &Confirmar: Hecho Letra unidad: Algoritmo de Cifrado Sistema de archivos. Crea un disco cifrado virtual dentro de un archivo. Recomendado para usuarios sin experiencia. Opciones Algoritmo Hash Clave Cabecera: Quedan Clave Maestra: Seleccione esta opción si hay dos o más sistemas operativos instalados en este ordenador.\n\nPor ejemplo:\n- Windows XP y Windows XP\n- Windows XP y Windows Vista\n- Windows y Mac OS X\n- Windows y Linux\n- Windows, Linux y Mac OS X Cifra una partición en cualquier unidad interna o externa (ej: unidad flash). Opcionalmente, crea un volumen oculto. Contenido actual del pool (parcial) Pasada Contraseña: PIM de volumen: PIM de volumen: Progreso: Pool Aleatorio: Seleccione esta opción si hay solo un sistema operativo instalado en este ordenador (aunque tenga varios usuarios). Velocidad Estado Las claves, sal y otros datos han sido generados con éxito. Si quiere generar nuevas claves, presione Volver y luego Siguiente. Si no, presione Siguiente para continuar. Cifra la partición/unidad donde Windows está instalado. Cualquiera que quiera acceder al sistema, leer y escribir archivos, etc. tendrá que introducir la contraseña antes de arrancar Windows. Opcionalmente, crea un sistema oculto. Seleccione esta opción para cifrar la partición donde está instalado el sistema operativo Windows que hay ahora mismo en ejecución. Etiqueta del Volumen en Windows: Modo de borrado seguro: Cerrar Permitir esquivar &autenticación de pre-arranque pulsando Esc (habilita el administrador de arranque) No hacer nada Montar &Automáticamente volumen VeraCrypt (especificado debajo) &Iniciar VeraCrypt &Detección automática de biblioteca Guardar contraseña de autenticación de pre-arranque en &caché (para montar volúmenes secundarios) Explorar... Explorar... Guardar contras&eñas y archivos-clave en caché Salir cuando no haya volúmenes montados &Cerrar sesión de token (log out) después de montar un volumen con éxito Incluir Expansor de Volumen VeraCrypt Incluir el Asistente de Creación de Volúmenes VeraCrypt Crear &Crear Volumen No mo&strar texto en la pantalla de autenticación de pre-arranque (excepto el siguiente mensaje personalizado) Desactivar detección del ataque "Evil Maid" Acelerar cifrado/descifrado AES usando instrucciones AES del procesador (si es posible) Usar Archivo-llave Usar Archivo-clave &Salir Ayuda sobre volúmenes favoritos No montar volumen seleccionado cuando se pulse la &tecla 'Montar volúmenes favoritos' Montar volumen seleccionado cuando el dispositivo anfitrión se &conecte Montar volumen seleccionado al inici&o Montar volumen seleccionado e&n modo de sólo lectura Montar &volumen seleccionado como medio extraíble Mover &abajo Mover arri&ba Abrir en el &explorador el volumen seleccionado cuando sea montado con éxito Elimina&r Usar etiqueta favorita como etiqueta de la unidad de Explorer Configuración global Mostrar mensaje emergente tras desmontar con éxito usando atajos de teclado Reproducir notificación sonora tras desmontar con éxito usando atajos de teclado Alt Ctrl Mayus. Win Asignar Eliminar Archivos-llave No usar el siguiente número de procesadores para cifrado/descifrado: Más información Más información Más opciones Montar &Autom. &Opciones de Montaje Montar volumen como sól&o lectura Archivos-llave (Vacío ó 0 para iteraciones por defecto) (Vacío ó 0 para iteraciones por defecto) Activado Guardar contraseñas en caché Desmontar volumen automáticamente cuando hayan dejado de leerse/escribirse datos por Si el usuario cierra sesión Sesión de usuario bloqueada Si se entra en "ahorro de energía" Si se activa el salvapantallas Forzar desmontaje automático aunque el volumen tenga archivos abiertos Montar todos los volúmenes alojados en dispositivos Iniciar VeraCrypt en segundo plano Montar volúmenes como sólo lectura Montar volúmenes como medios extraíbles Abrir en el &explorador el volumen montado con éxito Cachear contraseña temporalmente durante operaciones de montaje de volúmenes favoritos" Usar icono distinto en la barra de tareas si hay volúmenes montados Eliminar contraseñas guardadas al desmontar automáticamente Eliminar contraseñas guardadas al salir Conservar modificaciones de fecha/hora de los contenedores Por defecto Seleccionar D&ispositivo Seleccionar A&rchivo Seleccionar &Librería Mostrar contraseña Mostrar contraseña Abrir en el &explorador el volumen montado Guardar &contraseña en caché Modo TrueCrypt &Desmontar Todo Propiedades del &Volumen Herramien&tas de volumen &Borrar Caché VeraCrypt - Parámetros de Montaje VeraCrypt - Volúmenes favoritos VeraCrypt - Atajos de teclado para sistema completo VeraCrypt Cambiar contraseña o archivo-clave Introducir Contraseña de Volumen VeraCrypt VeraCrypt - Opciones de Rendimiento y controladores VeraCrypt - Preferencias VeraCrypt - Opciones de cifrado del sistema VeraCrypt - Preferencias de token de seguridad Crear Disco Viajero VeraCrypt Propiedades de Volumen VeraCrypt Acerca de... Añadir/Eliminar Archivos-llave a/de Volumen Añadir Volumen Montado a Favoritos Añadir Volumen Montado a Favoritos del Sistema Analizar Fallo del Sistema Copia de Seguridad de Cabecera de Volumen Comparación Establecer Algoritmo de Derivación de Clave de Cabecera Cambiar Contraseña del Volumen Establecer Algoritmo de Derivación de Clave de Cabecera Cambiar Contraseña Borrar Historial de Volúmenes Cerrar Sesiones de Token de Seguridad Contactar Crear Sistema Operativo Oculto Crear Disco de Rescate Crear Nuevo Volumen Descifrar Permanentemente... Archivos-clave Por Defecto Parámetros de Montaje por Defecto... Donar ahora... Cifrar la Partición/Unidad del Sistema Preguntas Frecuentes Guía del Usuario Página &Web Atajos de teclado Generador de Archivo-llave Idioma Información Legal Administrar Archivos-llave de Token de Seguridad Montar autom. todos los volúmenes alojados en cualquier dispositivo Montar Volúmenes Favoritos Montar Sin &Autenticación de Pre-Arranque Montar Volumen Montar Volumen con Opciones Noticias Ayuda en línea Tutorial del principiante Organizar Volúmenes Favoritos Organizar Volúmenes Favoritos del Sistema Rendimiento/Configuración del controlador Descifrar Permanentemente la Partición/Unidad del Sistema Preferencias Actualizar Letras de Unidad Eliminar Todos los Archivos-clave de un Volumen Restaurar Cabecera de Volumen Continuar Proceso Interrumpido Seleccionar Dispositivo Seleccionar Archivo Continuar Proceso Interrumpido Cifrado del Sistema Propiedades Configuración Volúmenes Favoritos del Sistema Descargas Probar Vectores Tokens de seguridad Crear Disco Viajero Desmontar Todos los Volúmenes Montados Desmontar Volumen Verificar Disco de Rescate Verificar Imagen de Disco de Rescate Historial de Versiones Expansor de Volúmenes Propiedades de Volumen Asistente de Creación de Volumen Sitio Web de VeraCrypt Borrar Contraseñas Guardadas Aceptar Aceleración Hardware Atajo de teclado Configuración de Autoarranque (autorun.inf) Desmontar automáticamente Desmontar todo cuando: Opciones de Pantalla del Cargador de Arranque Confirmar Contraseña: Actual Mostrar este mensaje personalizado en la pantalla de pre-arranque (24 caracteres max.): Opciones de Montaje Predeterminadas Opciones de Atajos de Teclado Configuración del controlador Habilitar soporte para códigos de control de disco extendido Etiqueta del volumen favorito seleccionado: Opciones del Archivo Tecla a asignar: El procesador (CPU) en este ordenador soporta aceleración hardware para AES: Acciones a realizar al iniciar sesión en Windows minutos Montar volumen en letra de unidad: Ajustes de Montaje Nueva Contraseña: Paralelización basada en hilos Ruta de Librería PKCS #11 PKCS-5 PRF: PKCS-5 PRF: Caché de Contraseñas Opciones de seguridad VeraCrypt en Segundo Plano Volumen VeraCrypt a montar (relativo a raíz del disco viajero): Tras la inserción del disco viajero: Crear archivos del disco viajero en (directorio raíz del disco viajero): Volumen Windows Añadir &Ruta Probar &Autom. &Continuar &Descifrar &Borrar Ci&frar &Exportar Generar y Guardar Archivo-clave &Generar Archivo-llave Aleatorio Descargar paquete de idioma AES acelerado por hardware: &Importar Archivo-llave a Token Añadir Archi&vos Usar Archivos-clave &Archivos-clave Elimina&r Eliminar &todo ¿Qué es la protección de volumen oculto? Más información Montar volumen como unidad &extraíble Montar partición &usando cifrado del sistema sin autenticación de pre-arranque Paralelización: Comparación &Imprimir &Proteger volumen oculto contra daños por escritura en el volumen externo &Reiniciar Mostrar Contraseña Añadir archivos &Token... Usar copia de seguridad de cabecera insertada en &volumen si es posible Modo XTS Acerca de VeraCrypt VeraCrypt - Comparación de algoritmos de cifrado VeraCrypt - Probar Vectores Ayuda sobre línea de comandos VeraCrypt - Archivos-llave VeraCrypt - Generador de Archivos-clave VeraCrypt - Idioma VeraCrypt - Opciones de Montaje Propiedades del Archivo-clave del Nuevo Token de Seguridad VeraCrypt - Enriquecimiento del Pool Aleatorio Seleccionar Partición o Dispositivo VeraCrypt Archivos-clave de Token de Seguridad Se requiere contraseña/PIN de token de seguridad Paquete de idioma activo La velocidad se ve afectada por la carga de la CPU y las características del dispositivo de almacenamiento.\n\nÉstas pruebas tienen lugar en RAM. Buffer: Algoritmo de cifrado: Contr&aseña volumen oculto:\n(vacío para usar caché) Protección de Volumen Oculto Tamaño de la Clave: IMPORTANTE: Mueva el ratón al azar todo lo posible dentro de esta ventana. Cuanto más lo mueva, mejor. Esto incrementa significativamente la fuerza criptográfica del archivo-llave. PRECAUCIÓN: ¡si pierde un archivo-llave o si cambian sus primeros 1024 KB, será imposible montar los volúmenes que usan ese archivo-llave! bits Número de archivos-clave: Tamaño de los ficheros-llave (en Bytes): Nombre base de los ficheros-llave: Traducido por: Tamaño del texto legible: bits Contenido de Pool Actual Mezcla PRF: IMPORTANTE: Mueva el ratón al azar todo lo posible dentro de esta ventana. Cuanto más lo mueva, mejor. Esto incrementa significativamente la seguridad. Cuando lo haya hecho, pulse 'Continuar'. Clave Secundaria (hexadecimal) Token de seguridad: Orden: Por favor, espere. Este proceso puede llevar mucho tiempo... Por favor, espere...\nEste proceso puede llevar mucho tiempo y VeraCrypt puede parece que no responde. Número de bloque: Texto cifrado (hexadecimal) Datos de la unidad (64-bit hexadecimal, tamaño de la unidad de datos es 512 bytes) Clave (hexadecimal) Texto Plano (hexadecimal) Nombre del Archivo-clave: Modo XTS &Sistema &Volúmenes Favor&itos &Herramientas Confi&guración A&yuda Página &Web &Acerca de... No se ha podido cambiar el atributo 'sólo lectura' de su antiguo volumen. Compruebe los permisos de acceso del archivo. Error: Acceso Denegado\n\nLa partición a la que está intentando acceder no contiene ningún sector o es el dispositivo de arranque. Administrador Para cargar el controlador de VeraCrypt necesita iniciar sesión con privilegios de administrador. Tenga en cuenta que para cifrar/formatear una partición/dispositivo necesita iniciar sesión con privilegios de administrador.\n\nEsto no se aplica a los volúmenes alojados en archivos. Para crear un volumen oculto necesita iniciar sesión con privilegios de administrador.\n\n¿Desea continuar? Tenga en cuenta que para formatear el volumen como NTFS necesita iniciar sesión con privilegios de administrador.\n\nSin los privilegios de administrador, sólo puede formatear el volumen como FAT. Algoritmo aprobado por FIPS (Rijndael, publicado en 1998) que podría ser usado por departamentos y agencias gubernamentales de EEUU para proteger información clasificada hasta el nivel Alto Secreto. Clave de 256-bit, bloque de 128-bit, 14 rondas (AES-256). El modo de operación es XTS. El volumen ya está montado PRECAUCIÓN: ¡Por lo menos un algoritmo de cifrado o hash falló durante el proceso automático de autoanálisis!\n\nLa instalación de VeraCrypt podría estar corrupta. PRECAUCIÓN: No hay suficientes datos en el Generador de Números Aleatorios para proporcionar la cantidad requerida de datos aleatorios.\n\nNo debería continuar. Seleccione 'Informar de un error' en el Menú Ayuda, y reporte este error. La unidad está dañada (hay algún defecto físico en ella) o un cable está dañado, o la memoria está funcionando incorrectamente.\n\nTenga en cuenta que el problema está en su hardware, no en VeraCrypt. Por tanto, por favor NO reporte esto como un error/problema de VeraCrypt y NO pida ayuda sobre esto en los foros de VeraCrypt. Contacte con el equipo de soporte técnico del fabricante de su ordenador para obtener asistencia. Gracias.\n\nNota: Si el error ocurre repetidamente en el mismo sitio, es muy probable que esté causado por un bloque defectuoso, lo que podría corregirse usando software de terceros (tenga en cuenta que, en muchos casos, el comando 'chkdsk /r' no puede corregirlo porque trabaja sólo a nivel del sistema de archivos; en algunos casos, la herramienta 'chkdsk' no puede ni detectarlo). Si está accediendo a una unidad de medios extraíbles, asegúrese de que haya un medio introducido en la unidad. La unidad/medio también podría estar dañada (podría haber un defecto físico en ella) o un cable podría estar dañado/desconectado. Su sistema parece estar usando controladores de chipset personalizados, y un defecto en ellos impide el cifrado completo de la unidad del sistema.\n\nIntente actualizar o desinstalar cualquier controlador de chipset personalizado (que no sea de Microsoft) antes de continuar. Si esto no funciona, intente cifrar sólo la partición del sistema. Letra de unidad incorrecta. Ruta incorrecta. Cancelar No se puede acceder a la unidad. Asegúrese de que la unidad seleccionada existe y que no está siendo utilizada por el sistema. Precaución: El bloqueo de mayúsculas está activado. Esto puede provocar que introduzca su contraseña incorrectamente. Tipo de Volumen Podría suceder que alguien le obligara a revelar la contraseña de un volumen cifrado. Hay muchas situaciones en las que no podría negarse a revelar la contraseña (por ejemplo, debido a la extorsión). Usar el llamado "volumen oculto" le permite resolver estas situaciones sin revelar la contraseña de su volumen. Seleccione esta opción si quiere crear un volumen VeraCrypt normal. Por favor tenga en cuenta que si desea que un sistema operativo sea instalado en un volumen alojado en una partición oculta, entonces la unidad del sistema entera no puede ser cifrada usando una única clave. Opciones de cifrado del volumen externo Opciones de cifrado del volumen oculto Opciones de cifrado AVISO: ¡Fallo al borrar la ruta del último volumen/archivo-clave seleccionado (almacenado por el selector de archivos)! Error: El contenedor ha sido comprimido a nivel del sistema de archivos. VeraCrypt no soporta contenedores comprimidos (la compresión de información cifrada es redundante e inefectiva).\n\nDeshabilite la compresión del contenedor siguiendo estos pasos:\n1) Clic derecho en el contenedor desde el explorador de Windows (no desde VeraCrypt).\n2) Seleccione 'Propiedades'.\n3) En la ventana de 'Propiedades', clic en 'Opciones Avanzadas'.\n4) En la ventana 'Atributos avanzados', desactive la opción 'Comprimir contenido para ahorrar espacio en disco' y haga clic en 'Aceptar'.\n5) En 'Propiedades', clic en 'Aceptar'. Falló la creación del volumen %s El tamaño de %s es %.2f bytes El tamaño de %s es %.2f KB El tamaño de %s es %.2f MB El tamaño de %s es %.2f GB El tamaño de %s es %.2f TB El tamaño de %s es %.2f PB AVISO: El dispositivo/partición está siendo utilizado por el sistema operativo o una aplicación. Formatear el dispositivo/partición puede causar corrupción de datos e inestabilidad del sistema.\n\n¿Continuar? AVISO: La partición está siendo usada por el sistema operativo o una aplicación. Debería cerrar cualquier aplicación que pueda estar usando la partición (incluyendo antivirus).\n\n¿Continuar? Error: El dispositivo/partición contiene un sistema de archivos que no puede ser desmontado. El sistema de archivos puede estar en uso por el sistema operativo. Formatear el dispositivo/partición muy probablemente causará corrupción de datos e inestabilidad del sistema.\n\nPara solucionarlo, recomendamos que primero borre la partición y luego la vuelva a crear sin formatearla. Para hacerlo siga estos pasos:\n1) Clic derecho en 'Mi PC' o 'Equipo' en el 'Menú inicio' y seleccione 'Administrar'. Aparecerá la ventana 'Administración de equipos'.\n2) En dicha ventana, seleccione 'Almacenamiento' > 'Administración de discos'.\n3) Clic derecho en la partición que desea cifrar y seleccione 'Borrar la partición', 'Borrar Volumen' o 'Borrar unidad lógica'.\n4) Clic en 'Aceptar'. Si Windows pregunta si quiere reiniciar el ordenador, hágalo. Entonces repita los pasos 1 y 2 y continúe desde el paso 5. 5)\nClic derecho en el área no asignada/espacio libre y seleccione 'Partición nueva', 'Volumen simple nuevo' o 'Unidad lógica nueva'.\n6) El 'Asistente de partición nueva' o 'Asistente de volumen simple nuevo' deberá aparecer; siga las instrucciones. Cuando en el asistente indique 'Formatear Partición', seleccione 'No formatear esta partición' o 'No formatear este volumen'. En el mismo asistente, clic en 'Siguiente' y despues en 'Finalizar'.\n7) La ruta del dispositivo seleccionado en VeraCrypt podría ser incorrecta ahora. Por tanto, salga del Asistente de Creación de Volúmenes VeraCrypt (si aún está en ejecución) y ábralo de nuevo.\n8) Intente cifrar nuevamente el dispositivo/partición.\n\nSi VeraCrypt falla repetidamente al cifrar el dispositivo/partición, considere crear un contenedor de archivos en su lugar. Error: El sistema de archivos no pudo ser bloqueado y/o desmontado. Podría estar siendo usado por el sistema operativo o alguna aplicación (como un antivirus). Cifrar la partición podría causar corrupción de datos e inestabilidad del sistema.\n\nPor favor cierre cualquier aplicación que pueda estar usando el sistema de archivos (incluyendo antivirus) y reinténtelo. Si esto no funciona, siga los pasos que hay más abajo. AVISO: ¡Algunos de los dispositivos/particiones montados ya estaban en uso!\n\nIgnorar esto puede causar resultados no deseados incluyendo inestabilidad del sistema.\n\nSe recomienda encarecidamente que cierre cualquier aplicación que esté usando el dispositivo/partición. El dispositivo seleccionado contiene particiones.\n\nFormatear el dispositivo puede causar inestabilidad del sistema y/o corrupción de datos. Seleccione una partición en el dispositivo o elimine todas las particiones del dispositivo para permitir que VeraCrypt lo formatee con seguridad. El dispositivo secundario seleccionado contiene particiones.\n\nLos volúmenes VeraCrypt cifrados alojados en dispositivos pueden ser creados en dispositivos que no contienen particiones (incluyendo discos duros y unidades de estado sólido). Un dispositivo que contiene particiones puede ser cifrado por completo sin modificarlas (usando una única clave maestra) sólo si es la unidad donde Windows está instalado y desde la que arranca.\n\nSi desea cifrar el dispositivo secundario seleccionado usando una única clave maestra, necesitará eliminar antes todas las particiones del dispositivo para permitir que VeraCrypt lo formatee con seguridad (formatear un dispositivo que contiene particiones podría causar inestabilidad del sistema y/o corrupción de datos). Como alternativa, puede cifrar cada partición del dispositivo individualmente (cada partición será cifrada usando una clave maestra diferente).\n\nNota: Si desea eliminar todas las particiones de un disco GPT, podría necesitar convertirlo primero en un disco MBR (usando p.e. el Administrador de Equipos) para eliminar particiones ocultas. AVISO: si cifra el dispositivo entero (en lugar de cifrar sólo una de sus particiones), los sistemas operativos considerarán el dispositivo como nuevo, vacío y no formateado (ya que no contendrá tabla de particiones) y podrían iniciar espontáneamente el dispositivo (o preguntarle si desea hacerlo), lo que podría dañar el volumen. Además, no será posible montar consistentemente el volumen como favorito (p.e. cuando cambie el número de unidad) o asignarle una letra de volumen favorita.\n\nPara evitar esto, considere crear una partición en el dispositivo y cifrar la partición.\n\n¿Seguro que desea cifrar el dispositivo entero? IMPORTANTE: ¡Tenga presente que este volumen NO puede ser montado/accedido usando la letra de unidad %c:, la cual está actualmente asignada al mismo!\n\nPara montar este volumen, haga clic en 'Montar Autom.' en la ventana principal de VeraCrypt (o también, en dicha ventana, clic en 'Seleccionar Dispositivo', seleccione esta partición/dispositivo y pulse 'Montar'). El volumen será montado en una letra de unidad diferente, que podrá elegir de la lista de la ventana principal de VeraCrypt.\n\nLa letra original de unidad %c: debería usarse sólo en caso de que necesite eliminar el cifrado de la partición/unidad (p.e. si ya no necesitará cifrado). En ese caso, haga clic derecho en la letra de unidad %c: en la lista de 'Equipo' (o 'Mi PC') y seleccione 'Formatear'. De otro modo, la letra de unidad %c: nunca debería ser usada (a menos que la elimine, como se describe p.e. en la FAQ de VeraCrypt, y la asigne a otra partición/dispositivo). El cifrado de volúmenes secundarios conservando datos no está soportado por la versión del sistema operativo que está usando actualmente (sólo está soportado en Windows Vista y versiones posteriores de Windows).\n\nLa razón es que esta versión de Windows no soporta la compresión del sistema de archivos (el sistema de archivos necesita ser comprimido para crear espacio para la cabecera del volumen y su copia de seguridad). La partición seleccionada no parece contener un sistema de archivos NTFS. Sólo las particiones con sistema de archivos NTFS pueden ser cifradas conservando datos.\n\nNota: La razón es que esta versión de Windows no soporta la compresión de otros tipos de sistemas de archivos (el sistema de archivos necesita ser comprimido para crear espacio para la cabecera del volumen y su copia de seguridad). La partición seleccionada no parece contener un sistema de archivos NTFS. Sólo las particiones con sistema de archivos NTFS pueden ser cifradas conservando datos.\n\nSi desea crear un volumen cifrado VeraCrypt dentro de esta partición, elija la opción "Crear volumen cifrado y formatearlo" (en lugar de la opción "Cifrar partición sin modificadión de datos"). Error: La partición es demasiado pequeña. VeraCrypt no puede cifrarla conservando datos. Para cifrar los datos de esta partición, siga estos pasos:\n\n1) Cree un volumen VeraCrypt en una partición/dispositivo vacío y móntelo.\n\n2) Copie en dicho volumen VeraCrypt todos los archivos de la partición que iba a ser cifrada originalmente. De esta forma, ud. creará una copia de seguridad cifrada de los datos.\n\n3) Cree un volumen VeraCrypt en la partición que quería cifrar originalmente y asegúrese de (en el asistente VeraCrypt) elegir la opción "Crear volumen cifrado y formatearlo" (en lugar de la opción "Cifrar partición conservando datos"). Tenga en cuenta que todos los datos almacenados en la partición serán borrados. Después de crear el volumen, móntelo.\n\n4) Copie todos los archivos del volumen VeraCrypt montado como copia de seguridad (el que fue creado en el paso 1) al volumen VeraCrypt montado que ha sido creado (y montado) en el paso 3.\n\nDespués de completar estos pasos, los datos estarán cifrados y, además, habrá una copia de seguridad cifrada de los datos. VeraCrypt sólo puede cifrar conservando datos una partición, un volumen dinámico o la unidad del sistema entera.\n\nSi desea crear un volumen VeraCrypt cifrado en el dispositivo secundario seleccionado, elija la opción "Crear volumen cifrado y formatearlo" (en lugar de la opción "Cifrar partición conservando datos"). Error: VeraCrypt sólo puede cifrar conservando datos una partición, un volumen dinámico, o la unidad del sistema entera. Por favor asegúrese de que la ruta especificada es válida. Error: No se puede comprimir el sistema de archivos (el sistema de archivos necesita ser comprimido para crear espacio para la cabecera del volumen y su copia de seguridad).\n\nPosibles causas y soluciones:\n\n- No hay suficiente espacio libre en el volumen. Asegúrese de que no hay ninguna otra aplicación escribiendo en el sistema de archivos.\n\n- Sistema de archivos corrupto. Intente comprobarlo y corregir los errores (clic derecho en la letra de unidad correspondiente en 'Equipo', seleccione Propiedades > Herramientas > 'Comprobar ahora', asegúrese de que la opción 'Reparar automáticamente errores en el sistema de archivos' está activada y clic en Iniciar).\n\nSi esto no funciona, siga los pasos que aparecen más abajo. Error: No hay suficiente espacio libre en el volumen por lo que el sistema de archivos no puede ser comprimido (el sistema de archivos necesita ser comprimido para crear espacio para la cabecera del volumen y su copia de seguridad).\n\nElimine cualquier archivo innecesario y vacíe la Papelera de Reciclaje para liberar al menos 256 KB e inténtelo de nuevo. Tenga en cuenta que debido a una característica de Windows, la cantidad de espacio libre reportada por el explorador de Windows podría ser incorrecta hasta que el sistema operativo se reinicie. Si reiniciar el sistema no ayuda, el sistema de archivos podría estar corrupto. Intente comprobarlo y corregir cualquier error (clic derecho en la letra de unidad correspondiente en 'Equipo', seleccione Propiedades > Herramientas > 'Comprobar ahora', asegúrese de que la opción 'Reparar automáticamente errores en el sistema de archivos' está activada y clic en Iniciar).\n\nSi esto no funciona, siga los pasos que aparecen más abajo. El espacio libre en la unidad %s es %.2f bytes. El espacio libre en la unidad %s es %.2f KB El espacio libre en la unidad %s es %.2f MB El espacio libre en la unidad %s es %.2f GB El espacio libre en la unidad %s es %.2f TB El espacio libre en la unidad %s es %.2f PB No se han podido obtener letras de unidad disponibles. Error: No se ha encontrado el controlador de VeraCrypt.\n\nCopie los archivos 'veracrypt.sys' y 'veracrypt-x64.sys' al directorio donde está ubicada la aplicación principal (VeraCrypt.exe). Error: Se está ejecutando una versión incompatible del controlador VeraCrypt.\n\nSi está intentando ejecutar VeraCrypt en modo portable (p.e. sin instalarlo) y ya hay instalada una versión diferente de VeraCrypt, debe desinstalar dicha versión primero (o actualizarla usando el instalador de VeraCrypt). Para desinstalarla, siga estos pasos: En Windows Vista o posterior, seleccione 'Menú Inicio' > Equipo > 'Desinstalar o cambiar un programa' > VeraCrypt > Desinstalar; en Windows XP, seleccione 'Menú Inicio' > Panel de control > 'Agregar o quitar programas' > VeraCrypt > Quitar.\n\nDel mismo modo, si está intentando ejecutar VeraCrypt en modo portable (p.e. sin instalarlo) y hay una versión diferente de VeraCrypt ejecutándose en modo portable, debe reiniciar el sistema primero y ejecutar únicamente esta nueva versión. Error: Fallo en la inicialización del algoritmo de cifrado. Error: Se ha detectado una clave débil o potencialmente débil. La clave será descartada. Inténtelo de nuevo. Ha ocurrido un
/*
 Legal Notice: Some portions of the source code contained in this file were
 derived from the source code of TrueCrypt 7.1a, which is 
 Copyright (c) 2003-2012 TrueCrypt Developers Association and which is 
 governed by the TrueCrypt License 3.0, also from the source code of
 Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
 and which is governed by the 'License Agreement for Encryption for the Masses' 
 Modifications and additions to the original source code (contained in this file) 
 and all other portions of this file are Copyright (c) 2013-2017 IDRIX
 and are governed by the Apache License 2.0 the full text of which is
 contained in the file License.txt included in VeraCrypt binary and source
 code distribution packages. */

#include "Tcdefs.h"
#include "Crypto.h"
#include "Xts.h"
#include "Crc.h"
#include "Common/Endian.h"
#if !defined(_UEFI)
#include <string.h>
#ifndef TC_WINDOWS_BOOT
#ifdef TC_WINDOWS_DRIVER
#include <ntstrsafe.h>
#define StringCchCatW	RtlStringCchCatW
#define StringCchCopyW	RtlStringCchCopyW
#else
#include <strsafe.h>
#endif
#include "EncryptionThreadPool.h"
#endif
#endif
#include "Volumes.h"
#include "cpu.h"

#pragma warning (disable:4706) // assignment within conditional expression
/* Update the following when adding a new cipher or EA:

   Crypto.h:
     ID #define
     MAX_EXPANDED_KEY #define

   Crypto.c:
     Ciphers[]
     EncryptionAlgorithms[]
     CipherInit()
     EncipherBlock()
     DecipherBlock()

*/

#ifndef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE

// Cipher configuration
static Cipher Ciphers[] =
{
//								Block Size	Key Size	Key Schedule Size
//	  ID		Name			(Bytes)		(Bytes)		(Bytes)
#ifdef TC_WINDOWS_BOOT
	{ AES,		"AES",			16,			32,			AES_KS				},
	{ SERPENT,	"Serpent",		16,			32,			140*4				},
	{ TWOFISH,	"Twofish",		16,			32,			TWOFISH_KS			},
#else
	{ AES,		L"AES",			16,			32,			AES_KS				},
	{ SERPENT,	L"Serpent",		16,			32,			140*4				},
	{ TWOFISH,	L"Twofish",		16,			32,			TWOFISH_KS			},
	{ CAMELLIA,	L"Camellia",	16,			32,			CAMELLIA_KS			},
	{ KUZNYECHIK,	L"Kuznyechik",16,		32,			KUZNYECHIK_KS },
#endif
	{ 0,		0,				0,			0,			0					}
};


// Encryption algorithm configuration
static EncryptionAlgorithm EncryptionAlgorithms[] =
{
	//  Cipher(s)                     Modes						FormatEnabled

#ifndef TC_WINDOWS_BOOT

	{ { 0,							0 }, { 0, 0},		0, 0 },	// Must be all-zero
	{ { AES,							0 }, { XTS, 0 },	1, 1 },
	{ { SERPENT,					0 }, { XTS, 0 },	1, 1 },
	{ { TWOFISH,					0 }, { XTS, 0 },	1, 1 },
	{ { CAMELLIA,					0 }, { XTS, 0 },	1, 1 },
	{ { KUZNYECHIK,				0 }, { XTS, 0 },	0, 1 },
	{ { TWOFISH, AES,				0 }, { XTS, 0 },	1, 1 },
	{ { SERPENT, TWOFISH, AES,	0 }, { XTS, 0 },	1, 1 },
	{ { AES, SERPENT,				0 }, { XTS, 0 },	1, 1 },
	{ { AES, TWOFISH, SERPENT,	0 }, { XTS, 0 },	1, 1 },
	{ { SERPENT, TWOFISH,		0 }, { XTS, 0 },	1, 1 },
	{ { KUZNYECHIK, CAMELLIA,		0 }, { XTS, 0 },	0, 1 },
	{ { TWOFISH, KUZNYECHIK,		0 }, { XTS, 0 },	0, 1 },
	{ { SERPENT, CAMELLIA,		0 }, { XTS, 0 },	0, 1 },
	{ { AES, KUZNYECHIK,		0 }, { XTS, 0 },	0, 1 },
	{ { CAMELLIA, SERPENT, KUZNYECHIK,	0 }, { XTS, 0 },	0, 1 },
	{ { 0,							0 }, { 0,    0},	0, 0 }		// Must be all-zero

#else // TC_WINDOWS_BOOT

	// Encryption algorithms available for boot drive encryption
	{ { 0,						0 }, { 0, 0 },		0 },	// Must be all-zero
	{ { AES,					0 }, { XTS, 0 },	1 },
	{ { SERPENT,				0 }, { XTS, 0 },	1 },
	{ { TWOFISH,				0 }, { XTS, 0 },	1 },
	{ { TWOFISH, AES,			0 }, { XTS, 0 },	1 },
	{ { SERPENT, TWOFISH, AES,	0 }, { XTS, 0 },	1 },
	{ { AES, SERPENT,			0 }, { XTS, 0 },	1 },
	{ { AES, TWOFISH, SERPENT,	0 }, { XTS, 0 },	1 },
	{ { SERPENT, TWOFISH,		0 }, { XTS, 0 },	1 },
	{ { 0,						0 }, { 0, 0 },		0 },	// Must be all-zero

#endif

};


#ifndef TC_WINDOWS_BOOT
// Hash algorithms
static Hash Hashes[] =
{	// ID				Name					Deprecated	System Encryption
	{ SHA512,		L"SHA-512",				FALSE,	FALSE },
	{ WHIRLPOOL,	L"Whirlpool",			FALSE,	FALSE },
	{ BLAKE2S,		L"BLAKE2s-256",				FALSE,	TRUE },
	{ SHA256,		L"SHA-256",				FALSE,	TRUE },
	{ STREEBOG,		L"Streebog",	FALSE,	FALSE },
	{ 0, 0, 0 }
};
#endif

/* Return values: 0 = success, ERR_CIPHER_INIT_FAILURE (fatal), ERR_CIPHER_INIT_WEAK_KEY (non-fatal) */
int CipherInit (int cipher, unsigned char *key, unsigned __int8 *ks)
{
	int retVal = ERR_SUCCESS;

	switch (cipher)
	{
	case AES:
#ifndef TC_WINDOWS_BOOT
		if (aes_encrypt_key256 (key, (aes_encrypt_ctx *) ks) != EXIT_SUCCESS)
			return ERR_CIPHER_INIT_FAILURE;

		if (aes_decrypt_key256 (key, (aes_decrypt_ctx *) (ks + sizeof(aes_encrypt_ctx))) != EXIT_SUCCESS)
			return ERR_CIPHER_INIT_FAILURE;
#else
		if (aes_set_key (key, (length_type) CipherGetKeySize(AES), (aes_context *) ks) != 0)
			return ERR_CIPHER_INIT_FAILURE;
#endif
		break;

	case SERPENT:
		serpent_set_key (key, ks);
		break;
		
	case TWOFISH:
		twofish_set_key ((TwofishInstance *)ks, (const u4byte *)key);
		break;

#if !defined (TC_WINDOWS_BOOT) || defined (TC_WINDOWS_BOOT_CAMELLIA)
	case CAMELLIA:
		camellia_set_key (key, ks);
		break;
#endif

#if !defined(TC_WINDOWS_BOOT) 
	case KUZNYECHIK:
		kuznyechik_set_key(key, (kuznyechik_kds*)ks);
		break;
#endif // !defined(TC_WINDOWS_BOOT)

	default:
		// Unknown/wrong cipher ID
		return ERR_CIPHER_INIT_FAILURE;
	}

	return retVal;
}

void EncipherBlock(int cipher, void *data, void *ks)
{
	switch (cipher)
	{
	case AES:	
		// In 32-bit kernel mode, due to KeSaveFloatingPointState() overhead, AES instructions can be used only when processing the whole data unit.
#if (defined (_WIN64) || !defined (TC_WINDOWS_DRIVER)) && !defined (TC_WINDOWS_BOOT)
		if (IsAesHwCpuSupported())
			aes_hw_cpu_encrypt (ks, data);
		else
#endif
			aes_encrypt (data, data, ks);
		break;

	case TWOFISH:		twofish_encrypt (ks, data, data); break;
	case SERPENT:		serpent_encrypt (data, data, ks); break;
#if !defined (TC_WINDOWS_BOOT) || defined (TC_WINDOWS_BOOT_CAMELLIA)
	case CAMELLIA:		camellia_encrypt (data, data, ks); break;
#endif
#if !defined(TC_WINDOWS_BOOT)
	case KUZNYECHIK:		kuznyechik_encrypt_block(data, data, ks); break;
#endif // !defined(TC_WINDOWS_BOOT) 
	default:			TC_THROW_FATAL_EXCEPTION;	// Unknown/wrong ID
	}
}

#ifndef TC_WINDOWS_BOOT

void EncipherBlocks (int cipher, void *dataPtr, void *ks, size_t blockCount)
{
	byte *data = dataPtr;
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
	KFLOATING_SAVE floatingPointState;
#endif

	if (cipher == AES
		&& (blockCount & (32 - 1)) == 0
		&& IsAesHwCpuSupported()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		&& NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
		)
	{
		while (blockCount > 0)
		{
			aes_hw_cpu_encrypt_32_blocks (ks, data);

			data += 32 * 16;
			blockCount -= 32;
		}

#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		KeRestoreFloatingPointState (&floatingPointState);
#endif
	}
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
	else if (cipher == SERPENT
			&& (blockCount >= 4)
			&& HasSSE2()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
			&& NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
		)
	{
		serpent_encrypt_blocks (data, data, blockCount, ks);
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		KeRestoreFloatingPointState (&floatingPointState);
#endif
	}
#endif
#if CRYPTOPP_BOOL_X64 && !defined(CRYPTOPP_DISABLE_ASM)
   else if (cipher == TWOFISH)	{
			twofish_encrypt_blocks(ks, data, data, (uint32) blockCount);
	}
	else if (cipher == CAMELLIA)	{
			camellia_encrypt_blocks(ks, data, data, (uint32) blockCount);
	}
#endif
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
	else if (cipher == KUZNYECHIK
			&& HasSSE2()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
			&& (blockCount >= 4) && NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
		)
	{
		kuznyechik_encrypt_blocks (data, data, blockCount, ks);
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		KeRestoreFloatingPointState (&floatingPointState);
#endif
	}
#endif
	else
	{
		size_t blockSize = CipherGetBlockSize (cipher);
		while (blockCount-- > 0)
		{
			EncipherBlock (cipher, data, ks);
			data += blockSize;
		}
	}
}

#endif // !TC_WINDOWS_BOOT

void DecipherBlock(int cipher, void *data, void *ks)
{
	switch (cipher)
	{
	case SERPENT:	serpent_decrypt (data, data, ks); break;
	case TWOFISH:	twofish_decrypt (ks, data, data); break;
#if !defined (TC_WINDOWS_BOOT) || defined (TC_WINDOWS_BOOT_CAMELLIA)
	case CAMELLIA:	camellia_decrypt (data, data, ks); break;
#endif
#if !defined(TC_WINDOWS_BOOT)
	case KUZNYECHIK:	kuznyechik_decrypt_block(data, data, ks); break;
#endif // !defined(TC_WINDOWS_BOOT)


#ifndef TC_WINDOWS_BOOT

	case AES:
#if defined (_WIN64) || !defined (TC_WINDOWS_DRIVER)
		if (IsAesHwCpuSupported())
			aes_hw_cpu_decrypt ((byte *) ks + sizeof (aes_encrypt_ctx), data);
		else
#endif
			aes_decrypt (data, data, (void *) ((char *) ks + sizeof(aes_encrypt_ctx)));
		break;

#else
	case AES:		aes_decrypt (data, data, ks); break;
#endif
	default:		TC_THROW_FATAL_EXCEPTION;	// Unknown/wrong ID
	}
}

#ifndef TC_WINDOWS_BOOT

void DecipherBlocks (int cipher, void *dataPtr, void *ks, size_t blockCount)
{
	byte *data = dataPtr;
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
	KFLOATING_SAVE floatingPointState;
#endif

	if (cipher == AES
		&& (blockCount & (32 - 1)) == 0
		&& IsAesHwCpuSupported()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		&& NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
		)
	{
		while (blockCount > 0)
		{
			aes_hw_cpu_decrypt_32_blocks ((byte *) ks + sizeof (aes_encrypt_ctx), data);

			data += 32 * 16;
			blockCount -= 32;
		}

#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		KeRestoreFloatingPointState (&floatingPointState);
#endif
	}
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
	else if (cipher == SERPENT
			&& (blockCount >= 4)
			&& HasSSE2()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
			&& NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
		)
	{
		serpent_decrypt_blocks (data, data, blockCount, ks);
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		KeRestoreFloatingPointState (&floatingPointState);
#endif
	}
#endif
#if CRYPTOPP_BOOL_X64 && !defined(CRYPTOPP_DISABLE_ASM)
   else if (cipher == TWOFISH)	{
			twofish_decrypt_blocks(ks, data, data, (uint32) blockCount);
	}
	else if (cipher == CAMELLIA)	{
			camellia_decrypt_blocks(ks, data, data, (uint32) blockCount);
	}
#endif
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
	else if (cipher == KUZNYECHIK			
			&& HasSSE2()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
			&& (blockCount >= 4) && NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
		)
	{
		kuznyechik_decrypt_blocks (data, data, blockCount, ks);
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
		KeRestoreFloatingPointState (&floatingPointState);
#endif
	}
#endif
	else
	{
		size_t blockSize = CipherGetBlockSize (cipher);
		while (blockCount-- > 0)
		{
			DecipherBlock (cipher, data, ks);
			data += blockSize;
		}
	}
}

#endif // !TC_WINDOWS_BOOT


// Ciphers support

Cipher *CipherGet (int id)
{
	int i;
	for (i = 0; Ciphers[i].Id != 0; i++)
		if (Ciphers[i].Id == id)
			return &Ciphers[i];

	return NULL;
}

#ifndef TC_WINDOWS_BOOT
const wchar_t *CipherGetName (int cipherId)
{
   Cipher* pCipher = CipherGet (cipherId);
   return  pCipher? pCipher -> Name : L"";
}

int CipherGetBlockSize (int cipherId)
{
   Cipher* pCipher = CipherGet (cipherId);
   return pCipher? pCipher -> BlockSize : 0;
}
#endif

int CipherGetKeySize (int cipherId)
{
#ifdef TC_WINDOWS_BOOT
	return CipherGet (cipherId) -> KeySize;
#else
   Cipher* pCipher = CipherGet (cipherId);
   return pCipher? pCipher -> KeySize : 0;
#endif
}

int CipherGetKeyScheduleSize (int cipherId)
{
#ifdef TC_WINDOWS_BOOT
	return CipherGet (cipherId) -> KeyScheduleSize;
#else
   Cipher* pCipher = CipherGet (cipherId);
   return pCipher? pCipher -> KeyScheduleSize : 0;
#endif
}

#ifndef TC_WINDOWS_BOOT

BOOL CipherSupportsIntraDataUnitParallelization (int cipher)
{
	return (cipher == AES && IsAesHwCpuSupported()) 
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
		|| (cipher == SERPENT && HasSSE2())
		|| (cipher == KUZNYECHIK && HasSSE2())
#endif
#if CRYPTOPP_BOOL_X64 && !defined(CRYPTOPP_DISABLE_ASM)
		|| (cipher == TWOFISH)
		|| (cipher == CAMELLIA)
#endif
		;
}

#endif


// Encryption algorithms support

int EAGetFirst ()
{
	return 1;
}

#ifndef TC_WINDOWS_BOOT
// Returns number of EAs
int EAGetCount (void)
{
	int ea, count = 0;

	for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
	{
		count++;
	}
	return count;
}
#endif

int EAGetNext (int previousEA)
{
	int id = previousEA + 1;
	if (EncryptionAlgorithms[id].Ciphers[0] != 0) return id;
	return 0;
}


// Return values: 0 = success, ERR_CIPHER_INIT_FAILURE (fatal), ERR_CIPHER_INIT_WEAK_KEY (non-fatal)
int EAInit (int ea, unsigned char *key, unsigned __int8 *ks)
{
	int c, retVal = ERR_SUCCESS;

	if (ea == 0)
		return ERR_CIPHER_INIT_FAILURE;

	for (c = EAGetFirstCipher (ea); c != 0; c = EAGetNextCipher (ea, c))
	{
		switch (CipherInit (c, key, ks))
		{
		case ERR_CIPHER_INIT_FAILURE:
			return ERR_CIPHER_INIT_FAILURE;

		case ERR_CIPHER_INIT_WEAK_KEY:
			retVal = ERR_CIPHER_INIT_WEAK_KEY;		// Non-fatal error
			break;
		}

		key += CipherGetKeySize (c);
		ks += CipherGetKeyScheduleSize (c);
	}
	return retVal;
}


#ifndef TC_WINDOWS_BOOT

BOOL EAInitMode (PCRYPTO_INFO ci, unsigned char* key2)
{
	switch (ci->mode)
	{
	case XTS:
		// Secondary key schedule
		if (EAInit (ci->ea, key2, ci->ks2) != ERR_SUCCESS)
			return FALSE;

		/* Note: XTS mode could potentially be initialized with a weak key causing all blocks in one data unit
		on the volume to be tweaked with zero tweaks (i.e. 512 bytes of the volume would be encrypted in ECB
		mode). However, to create a TrueCrypt volume with such a weak key, each human being on Earth would have
		to create approximately 11,378,125,361,078,862 (about eleven quadrillion) TrueCrypt volumes (provided 
		that the size of each of the volumes is 1024 terabytes). */
		break;

	default:		
		// Unknown/wrong ID
		TC_THROW_FATAL_EXCEPTION;
	}
	return TRUE;
}

static void EAGetDisplayName(wchar_t *buf, size_t bufLen, int ea, int i)
{
	StringCchCopyW (buf, bufLen, CipherGetName (i));
	if (i = EAGetPreviousCipher(ea, i))
	{
		size_t curLen;
		StringCchCatW (buf, bufLen, L"(");
		curLen = wcslen(buf);
		EAGetDisplayName (&buf[curLen], bufLen - curLen, ea, i);
		StringCchCatW (buf, bufLen, L")");
	}
}

// Returns name of EA, cascaded cipher names are separated by hyphens
wchar_t *EAGetName (wchar_t *buf, size_t bufLen, int ea, int guiDisplay)
{
	if (guiDisplay)
	{
		EAGetDisplayName (buf, bufLen, ea, EAGetLastCipher(ea));
	}
	else
	{
		int i = EAGetLastCipher(ea);
		StringCchCopyW (buf, bufLen, (i != 0) ? CipherGetName (i) : L"?");

		while (i = EAGetPreviousCipher(ea, i))
		{
			StringCchCatW (buf, bufLen, L"-");
			StringCchCatW (buf, bufLen, CipherGetName (i));
		}
	}
	return buf;
}


int EAGetByName (wchar_t *name)
{
	int ea = EAGetFirst ();
	wchar_t n[128];

	do
	{
		EAGetName(n, 128, ea, 1);
#if defined(_UEFI)
		if (wcscmp(n, name) == 0)
#else
		if (_wcsicmp(n, name) == 0)
#endif
			return ea;
	}
	while (ea = EAGetNext (ea));

	return 0;
}

#endif // TC_WINDOWS_BOOT

// Returns sum of key sizes of all ciphers of the EA (in bytes)
int EAGetKeySize (int ea)
{
	int i = EAGetFirstCipher (ea);
	int size = CipherGetKeySize (i);

	while (i = EAGetNextCipher (ea, i))
	{
		size += CipherGetKeySize (i);
	}

	return size;
}


#ifndef TC_WINDOWS_BOOT

// Returns the first mode of operation of EA
int EAGetFirstMode (int ea)
{
	return (EncryptionAlgorithms[ea].Modes[0]);
}


int EAGetNextMode (int ea, int previousModeId)
{
	int c, i = 0;
	while (c = EncryptionAlgorithms[ea].Modes[i++])
	{
		if (c == previousModeId) 
			return EncryptionAlgorithms[ea].Modes[i];
	}

	return 0;
}

// Returns the name of the mode of operation of the whole EA
wchar_t *EAGetModeName (int ea, int mode, BOOL capitalLetters)
{
	switch (mode)
	{
	case XTS:

		return L"XTS";

	}
	return L"[unknown]";
}

#endif // TC_WINDOWS_BOOT


// Returns sum of key schedule sizes of all ciphers of the EA
int EAGetKeyScheduleSize (int ea)
{
	int i = EAGetFirstCipher(ea);
	int size = CipherGetKeyScheduleSize (i);

	while (i = EAGetNextCipher(ea, i))
	{
		size += CipherGetKeyScheduleSize (i);
	}

	return size;
}

#ifndef TC_WINDOWS_BOOT

// Returns number of ciphers in EA
int EAGetCipherCount (int ea)
{
	int i = 0;
	while (EncryptionAlgorithms[ea].Ciphers[i++]);

	return i - 1;
}

#endif

int EAGetFirstCipher (int ea)
{
	return EncryptionAlgorithms[ea].Ciphers[0];
}


int EAGetLastCipher (int ea)
{
	int c, i = 0;
	while (c = EncryptionAlgorithms[ea].Ciphers[i++]);

	return EncryptionAlgorithms[ea].Ciphers[i - 2];
}


int EAGetNextCipher (int ea, int previousCipherId)
{
	int c, i = 0;
	while (c = EncryptionAlgorithms[ea].Ciphers[i++])
	{
		if (c == previousCipherId) 
			return EncryptionAlgorithms[ea].Ciphers[i];
	}

	return 0;
}


int EAGetPreviousCipher (int ea, int previousCipherId)
{
	int c, i = 0;

	if (EncryptionAlgorithms[ea].Ciphers[i++] == previousCipherId)
		return 0;

	while (c = EncryptionAlgorithms[ea].Ciphers[i++])
	{
		if (c == previousCipherId) 
			return EncryptionAlgorithms[ea].Ciphers[i - 2];
	}

	return 0;
}

#ifndef TC_WINDOWS_BOOT
int EAIsFormatEnabled (int ea)
{
	return EncryptionAlgorithms[ea].FormatEnabled;
}

int EAIsMbrSysEncEnabled (int ea)
{
	return EncryptionAlgorithms[ea].MbrSysEncEnabled;
}

// Returns TRUE if the mode of operation is supported for the encryption algorithm
BOOL EAIsModeSupported (int ea, int testedMode)
{
	int mode;

	for (mode = EAGetFirstMode (ea); mode != 0; mode = EAGetNextMode (ea, mode))
	{
		if (mode == testedMode)
			return TRUE;
	}
	return FALSE;
}

Hash *HashGet (int id)
{
	int i;
	for (i = 0; Hashes[i].Id != 0; i++)
		if (Hashes[i].Id == id)
			return &Hashes[i];

	return 0;
}

#ifdef _WIN32
int HashGetIdByName (wchar_t *name)
{
	int i;
	for (i = 0; Hashes[i].Id != 0; i++)
		if (_wcsicmp (Hashes[i].Name, name) == 0)
			return Hashes[i].Id;

	return 0;
}
#endif

const wchar_t *HashGetName (int hashId)
{
   Hash* pHash = HashGet(hashId);
   return pHash? pHash -> Name : L"";
}

void HashGetName2 (wchar_t *buf, size_t bufLen, int hashId)
{
   Hash* pHash = HashGet(hashId);
   if (pHash)
		StringCchCopyW (buf, bufLen, pHash -> Name);
	else
		buf[0] = L'\0';
}

BOOL HashIsDeprecated (int hashId)
{
   Hash* pHash = HashGet(hashId);
   return pHash? pHash -> Deprecated : FALSE;

}

BOOL HashForSystemEncryption (int hashId)
{
   Hash* pHash = HashGet(hashId);
   return pHash? pHash -> SystemEncryption : FALSE;

}

// Returns the largest key size needed by an EA for the specified mode of operation
int EAGetLargestKeyForMode (int mode)
{
	int ea, key = 0;

	for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
	{
		if (!EAIsModeSupported (ea, mode))
			continue;

		if (EAGetKeySize (ea) >= key)
			key = EAGetKeySize (ea);
	}
	return key;
}

// Returns the maximum number of bytes necessary to be generated by the PBKDF2 (PKCS #5)
int GetMaxPkcs5OutSize (void)
{
	int size = 32;

	size = VC_MAX (size, EAGetLargestKeyForMode (XTS) * 2);	// Sizes of primary + secondary keys

	return size;
}

#endif


#endif // TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE


#ifdef TC_WINDOWS_BOOT

static byte CryptoInfoBufferInUse = 0;
CRYPTO_INFO CryptoInfoBuffer;

#endif

PCRYPTO_INFO crypto_open ()
{
#ifndef TC_WINDOWS_BOOT

	/* Do the crt allocation */
	PCRYPTO_INFO cryptoInfo = (PCRYPTO_INFO) TCalloc (sizeof (CRYPTO_INFO));
	if (cryptoInfo == NULL)
		return NULL;

	memset (cryptoInfo, 0, sizeof (CRYPTO_INFO));

#if !defined(DEVICE_DRIVER) && !defined(_UEFI)
	VirtualLock (cryptoInfo, sizeof (CRYPTO_INFO));
#endif

	cryptoInfo->ea = -1;
	return cryptoInfo;

#else // TC_WINDOWS_BOOT

#if 0
	if (CryptoInfoBufferInUse)
		TC_THROW_FATAL_EXCEPTION;
#endif
	CryptoInfoBufferInUse = 1;
	return &CryptoInfoBuffer;

#endif // TC_WINDOWS_BOOT
}

#ifndef TC_WINDOWS_BOOT
void crypto_loadkey (PKEY_INFO keyInfo, char *lpszUserKey, int nUserKeyLen)
{
	keyInfo->keyLength = nUserKeyLen;
	burn (keyInfo->userKey, sizeof (keyInfo->userKey));
	memcpy (keyInfo->userKey, lpszUserKey, nUserKeyLen);
}

void crypto_eraseKeys (PCRYPTO_INFO cryptoInfo)
{
	burn (cryptoInfo->ks, sizeof (cryptoInfo->ks));
	burn (cryptoInfo->ks2, sizeof (cryptoInfo->ks2));
#ifdef TC_WINDOWS_DRIVER
	burn (cryptoInfo->master_keydata_hash, sizeof (cryptoInfo->master_keydata_hash));
#else
	burn (cryptoInfo->master_keydata, sizeof (cryptoInfo->master_keydata));
	burn (cryptoInfo->k2, sizeof (cryptoInfo->k2));
#endif
	burn (&cryptoInfo->noIterations, sizeof (cryptoInfo->noIterations));
	burn (&cryptoInfo->volumePim, sizeof (cryptoInfo->volumePim));
}
#endif

void crypto_close (PCRYPTO_INFO cryptoInfo)
{
#ifndef TC_WINDOWS_BOOT

	if (cryptoInfo != NULL)
	{
		burn (cryptoInfo, sizeof (CRYPTO_INFO));
#if !defined(DEVICE_DRIVER) && !defined(_UEFI)
		VirtualUnlock (cryptoInfo, sizeof (CRYPTO_INFO));
#endif
		TCfree (cryptoInfo);
	}

#else // TC_WINDOWS_BOOT

	burn (&CryptoInfoBuffer, sizeof (CryptoInfoBuffer));
	CryptoInfoBufferInUse = FALSE;

#endif // TC_WINDOWS_BOOT
}


#ifndef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE



// EncryptBuffer
//
// buf:  data to be encrypted; the start of the buffer is assumed to be aligned with the start of a data unit.
// len:  number of bytes to encrypt; must be divisible by the block size (for cascaded ciphers, divisible 
//       by the largest block size used within the cascade)
void EncryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo)
{
	switch (cryptoInfo->mode)
	{
	case XTS:
		{
			unsigned __int8 *ks = cryptoInfo->ks;
			unsigned __int8 *ks2 = cryptoInfo->ks2;
			UINT64_STRUCT dataUnitNo;
			int cipher;

			// When encrypting/decrypting a buffer (typically a volume header) the sequential number
			// of the first XTS data unit in the buffer is always 0 and the start of the buffer is
			// always assumed to be aligned with the start of a data unit.
			dataUnitNo.LowPart = 0;
			dataUnitNo.HighPart = 0;

			for (cipher = EAGetFirstCipher (cryptoInfo->ea);
				cipher != 0;
				cipher = EAGetNextCipher (cryptoInfo->ea, cipher))
			{
				EncryptBufferXTS (buf, len, &dataUnitNo, 0, ks, ks2, cipher);

				ks += CipherGetKeyScheduleSize (cipher);
				ks2 += CipherGetKeyScheduleSize (cipher);
			}
		}
		break;

	default:		
		// Unknown/wrong ID
		TC_THROW_FATAL_EXCEPTION;
	}
}


// buf:			data to be encrypted
// unitNo:		sequential number of the data unit with which the buffer starts
// nbrUnits:	number of data units in the buffer
void EncryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, uint32 nbrUnits, PCRYPTO_INFO ci)
#if !defined(TC_WINDOWS_BOOT) && !defined(_UEFI)
{
	EncryptionThreadPoolDoWork (EncryptDataUnitsWork, buf, structUnitNo, nbrUnits, ci);
}

void EncryptDataUnitsCurrentThread (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci)
#endif // !TC_WINDOWS_BOOT
{
	int ea = ci->ea;
	unsigned __int8 *ks = ci->ks;
	unsigned __int8 *ks2 = ci->ks2;
	int cipher;

	switch (ci->mode)
	{
	case XTS:
		for (cipher = EAGetFirstCipher (ea); cipher != 0; cipher = EAGetNextCipher (ea, cipher))
		{
			EncryptBufferXTS (buf,
				nbrUnits * ENCRYPTION_DATA_UNIT_SIZE,
				structUnitNo,
				0,
				ks,
				ks2,
				cipher);

			ks += CipherGetKeyScheduleSize (cipher);
			ks2 += CipherGetKeyScheduleSize (cipher);
		}
		break;

	default:		
		// Unknown/wrong ID
		TC_THROW_FATAL_EXCEPTION;
	}
}

// DecryptBuffer
//
// buf:  data to be decrypted; the start of the buffer is assumed to be aligned with the start of a data unit.
// len:  number of bytes to decrypt; must be divisible by the block size (for cascaded ciphers, divisible 
//       by the largest block size used within the cascade)
void DecryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo)
{
	switch (cryptoInfo->mode)
	{
	case XTS:
		{
			unsigned __int8 *ks = cryptoInfo->ks + EAGetKeyScheduleSize (cryptoInfo->ea);
			unsigned __int8 *ks2 = cryptoInfo->ks2 + EAGetKeyScheduleSize (cryptoInfo->ea);
			UINT64_STRUCT dataUnitNo;
			int cipher;

			// When encrypting/decrypting a buffer (typically a volume header) the sequential number
			// of the first XTS data unit in the buffer is always 0 and the start of the buffer is
			// always assumed to be aligned with the start of the data unit 0.
			dataUnitNo.LowPart = 0;
			dataUnitNo.HighPart = 0;

			for (cipher = EAGetLastCipher (cryptoInfo->ea);
				cipher != 0;
				cipher = EAGetPreviousCipher (cryptoInfo->ea, cipher))
			{
				ks -= CipherGetKeyScheduleSize (cipher);
				ks2 -= CipherGetKeyScheduleSize (cipher);

				DecryptBufferXTS (buf, len, &dataUnitNo, 0, ks, ks2, cipher);
			}
		}
		break;

	default:		
		// Unknown/wrong ID
		TC_THROW_FATAL_EXCEPTION;
	}
}

// buf:			data to be decrypted
// unitNo:		sequential number of the data unit with which the buffer starts
// nbrUnits:	number of data units in the buffer
void DecryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, uint32 nbrUnits, PCRYPTO_INFO ci)
#if !defined(TC_WINDOWS_BOOT) && !defined(_UEFI)
{
	EncryptionThreadPoolDoWork (DecryptDataUnitsWork, buf, structUnitNo, nbrUnits, ci);
}

void DecryptDataUnitsCurrentThread (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci)
#endif // !TC_WINDOWS_BOOT
{
	int ea = ci->ea;
	unsigned __int8 *ks = ci->ks;
	unsigned __int8 *ks2 = ci->ks2;
	int cipher;


	switch (ci->mode)
	{
	case XTS:
		ks += EAGetKeyScheduleSize (ea);
		ks2 += EAGetKeyScheduleSize (ea);

		for (cipher = EAGetLastCipher (ea); cipher != 0; cipher = EAGetPreviousCipher (ea, cipher))
		{
			ks -= CipherGetKeyScheduleSize (cipher);
			ks2 -= CipherGetKeyScheduleSize (cipher);

			DecryptBufferXTS (buf,
				nbrUnits * ENCRYPTION_DATA_UNIT_SIZE,
				structUnitNo,
				0,
				ks,
				ks2,
				cipher);
		}
		break;

	default:		
		// Unknown/wrong ID
		TC_THROW_FATAL_EXCEPTION;
	}
}


#else // TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE


#if !defined (TC_WINDOWS_BOOT_AES) && !defined (TC_WINDOWS_BOOT_SERPENT) && !defined (TC_WINDOWS_BOOT_TWOFISH) && !defined (TC_WINDOWS_BOOT_CAMELLIA)
#error No cipher defined
#endif

void EncipherBlock(int cipher, void *data, void *ks)
{
#ifdef TC_WINDOWS_BOOT_AES
	if (IsAesHwCpuSupported())
		aes_hw_cpu_encrypt ((byte *) ks, data);
	else
		aes_encrypt (data, data, ks); 
#elif defined (TC_WINDOWS_BOOT_SERPENT)
	serpent_encrypt (data, data, ks);
#elif defined (TC_WINDOWS_BOOT_TWOFISH)
	twofish_encrypt (ks, data, data);
#elif defined (TC_WINDOWS_BOOT_CAMELLIA)
	camellia_encrypt (data, data, ks);
#endif
}

void DecipherBlock(int cipher, void *data, void *ks)
{
#ifdef TC_WINDOWS_BOOT_AES
	if (IsAesHwCpuSupported())
		aes_hw_cpu_decrypt ((byte *) ks + sizeof (aes_encrypt_ctx) + 14 * 16, data);
	else
		aes_decrypt (data, data, (aes_decrypt_ctx *) ((byte *) ks + sizeof(aes_encrypt_ctx))); 
#elif defined (TC_WINDOWS_BOOT_SERPENT)
	serpent_decrypt (data, data, ks);
#elif defined (TC_WINDOWS_BOOT_TWOFISH)
	twofish_decrypt (ks, data, data);
#elif defined (TC_WINDOWS_BOOT_CAMELLIA)
	camellia_decrypt (data, data, ks);
#endif
}


#ifdef TC_WINDOWS_BOOT_AES

int EAInit (unsigned char *key, unsigned __int8 *ks)
{
	aes_init();

	if (aes_encrypt_key256 (key, (aes_encrypt_ctx *) ks) != EXIT_SUCCESS)
		return ERR_CIPHER_INIT_FAILURE;
	if (aes_decrypt_key256 (key, (aes_decrypt_ctx *) (ks + sizeof (aes_encrypt_ctx))) != EXIT_SUCCESS)
		return ERR_CIPHER_INIT_FAILURE;

	return ERR_SUCCESS;
}

#endif


void EncryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo)
{
	UINT64_STRUCT dataUnitNo;
	dataUnitNo.LowPart = 0; dataUnitNo.HighPart = 0;
	EncryptBufferXTS (buf, len, &dataUnitNo, 0, cryptoInfo->ks, cryptoInfo->ks2, 1);
}

void EncryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci)
{
	EncryptBufferXTS (buf, nbrUnits * ENCRYPTION_DATA_UNIT_SIZE, structUnitNo, 0, ci->ks, ci->ks2, 1);
}

void DecryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo)
{
	UINT64_STRUCT dataUnitNo;
	dataUnitNo.LowPart = 0; dataUnitNo.HighPart = 0;
	DecryptBufferXTS (buf, len, &dataUnitNo, 0, cryptoInfo->ks, cryptoInfo->ks2, 1);
}

void DecryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci)
{
	DecryptBufferXTS (buf, nbrUnits * ENCRYPTION_DATA_UNIT_SIZE, structUnitNo, 0, ci->ks, ci->ks2, 1);
}

#endif // TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE


#if !defined (TC_WINDOWS_BOOT) || defined (TC_WINDOWS_BOOT_AES)

static BOOL HwEncryptionDisabled = FALSE;

BOOL IsAesHwCpuSupported ()
{
#ifdef TC_WINDOWS_BOOT_AES
	static BOOL state = FALSE;
	static BOOL stateValid = FALSE;

	if (!stateValid)
	{
		state = is_aes_hw_cpu_supported() ? TRUE : FALSE;
		stateValid = TRUE;
	}

	return state && !HwEncryptionDisabled;
#elif defined (_M_ARM64)
	return 0;
#else
	return (HasAESNI() && !HwEncryptionDisabled)? TRUE : FALSE;
#endif
}

void EnableHwEncryption (BOOL enable)
{
#if defined (TC_WINDOWS_BOOT)
	if (enable)
		aes_hw_cpu_enable_sse();
#endif

	HwEncryptionDisabled = !enable;
}

BOOL IsHwEncryptionEnabled ()
{
	return !HwEncryptionDisabled;
}

#endif // !TC_WINDOWS_BOOT

#if !defined (TC_WINDOWS_BOOT) && !defined (_UEFI)

static BOOL CpuRngDisabled = TRUE;
static BOOL RamEncryptionEnabled = FALSE;

BOOL IsCpuRngSupported ()
{
	if (HasRDSEED() || HasRDRAND())
		return TRUE;
	else
		return FALSE;
}

void EnableCpuRng (BOOL enable)
{
	CpuRngDisabled = !enable;
}

BOOL IsCpuRngEnabled ()
{
	return !CpuRngDisabled;
}

BOOL IsRamEncryptionSupported ()
{
#ifdef _WIN64
	if (t1ha_selfcheck__t1ha2() == 0)
		return TRUE;
	else
		return FALSE;
#else
	return FALSE;
#endif
}

void EnableRamEncryption (BOOL enable)
{
	RamEncryptionEnabled = enable;
}

BOOL IsRamEncryptionEnabled ()
{
	return RamEncryptionEnabled;
}

/* masking for random index to remove bias */
byte GetRngMask (byte count)
{
	if (count >= 128)
		return 0xFF;
	if (count >= 64)
		return 0x7F;
	if (count >= 32)
		return 0x3F;
	if (count >= 16)
		return 0x1F;
	if (count >= 8)
		return 0x0F;
	if (count >= 4)
		return 0x07;
	if (count >= 2)
		return 0x03;
	return 1;
}

byte GetRandomIndex (ChaCha20RngCtx* pCtx, byte elementsCount)
{
	byte index = 0;
	byte mask = GetRngMask (elementsCount);

	while (TRUE)
	{
		ChaCha20RngGetBytes (pCtx, &index, 1);
		index &= mask;
		if (index < elementsCount)
			break;
	}

	return index;
}

#if defined(_WIN64) && !defined (_UEFI)
/* declaration of variables and functions used for RAM encryption on 64-bit build */
static byte* pbKeyDerivationArea = NULL;
static ULONG cbKeyDerivationArea = 0;

static uint64 HashSeedMask = 0;
static uint64 CipherIVMask = 0;
#ifdef TC_WINDOWS_DRIVER
ULONG AllocTag = 'MMCV';
#endif

#if !defined(PAGE_SIZE)
#define PAGE_SIZE 4096
#endif

BOOL InitializeSecurityParameters(GetRandSeedFn rngCallback)
{
	ChaCha20RngCtx ctx;
	byte pbSeed[CHACHA20RNG_KEYSZ + CHACHA20RNG_IVSZ];
#ifdef TC_WINDOWS_DRIVER
	byte i, tagLength;

	Dump ("InitializeSecurityParameters BEGIN\n");
#endif

	rngCallback (pbSeed, sizeof (pbSeed));

	ChaCha20RngInit (&ctx, pbSeed, rngCallback, 0);

#ifdef TC_WINDOWS_DRIVER
	/* generate random tag length between 1 and 4 */
	tagLength = GetRandomIndex (&ctx, 4) + 1;

	/* generate random value for tag:
	 * Each ASCII character in the tag must be a value in the range 0x20 (space) to 0x7E (tilde)
	 * So we have 95 possibility
	 */
	AllocTag = 0;
	for (i = 0; i < tagLength; i++)
	{
		AllocTag = (AllocTag << 8) + (((ULONG) GetRandomIndex (&ctx, 95)) + 0x20);
	}

#endif

	cbKeyDerivationArea = 1024 * 1024;
	pbKeyDerivationArea = (byte*) TCalloc(cbKeyDerivationArea);
	if (!pbKeyDerivationArea)
	{
		cbKeyDerivationArea = 2 * PAGE_SIZE;
		pbKeyDerivationArea = (byte*) TCalloc(cbKeyDerivationArea);
	}

	if (!pbKeyDerivationArea)
	{
		cbKeyDerivationArea = 0;
		Dump ("InitializeSecurityParameters return=FALSE END\n");
		return FALSE;
	}

	/* fill key derivation area with random bytes */
	ChaCha20RngGetBytes (&ctx, pbKeyDerivationArea, cbKeyDerivationArea);

	/* generate hash seed mask */
	ChaCha20RngGetBytes(&ctx, (unsigned char*) &HashSeedMask, sizeof (HashSeedMask));	

	/* generate IV mask */
	ChaCha20RngGetBytes(&ctx, (unsigned char*) &CipherIVMask, sizeof (CipherIVMask));	

	FAST_ERASE64 (pbSeed, sizeof (pbSeed));
	burn (&ctx, sizeof (ctx));
#ifdef TC_WINDOWS_DRIVER
	burn (&tagLength, 1);

	Dump ("InitializeSecurityParameters return=TRUE END\n");
#endif
	return TRUE;
}

void ClearSecurityParameters()
{
	Dump ("ClearSecurityParameters BEGIN\n");
	if (pbKeyDerivationArea)
	{
		FAST_ERASE64 (pbKeyDerivationArea, cbKeyDerivationArea);
		TCfree (pbKeyDerivationArea);
		pbKeyDerivationArea =NULL;
		cbKeyDerivationArea = 0;
	}

	FAST_ERASE64 (&HashSeedMask, 8);
	FAST_ERASE64 (&CipherIVMask, 8);
#ifdef TC_WINDOWS_DRIVER
	burn (&AllocTag, sizeof (AllocTag));
#endif
	Dump ("ClearSecurityParameters END\n");
}

#ifdef TC_WINDOWS_DRIVER
void VcProtectMemory (uint64 encID, unsigned char* pbData, size_t cbData, unsigned char* pbData2, size_t cbData2)
#else
void VcProtectMemory (uint64 encID, unsigned char* pbData, size_t cbData, 
							unsigned char* pbData2, size_t cbData2,
							unsigned char* pbData3, size_t cbData3,
							unsigned char* pbData4, size_t cbData4)
#endif
{
	if (pbKeyDerivationArea)
	{
		uint64 hashLow, hashHigh, hashSeed, cipherIV;
		uint64 pbKey[4];
		ChaCha256Ctx ctx;

		hashSeed = (((uint64) pbKeyDerivationArea) + encID) ^ HashSeedMask;
		hashLow = t1ha2_atonce128(&hashHigh, pbKeyDerivationArea, cbKeyDerivationArea, hashSeed);

		/* set the key to the hash result */
		pbKey[0] = pbKey[2] = hashLow;
		pbKey[1] = pbKey[3] = hashHigh;

		/* Initialize ChaCha12 cipher */
		cipherIV = encID ^ CipherIVMask;
		ChaCha256Init (&ctx, (unsigned char*) pbKey, (unsigned char*) &cipherIV, 12);

		ChaCha256Encrypt (&ctx, pbData, cbData, pbData);
		ChaCha256Encrypt (&ctx, pbData2, cbData2, pbData2);
#ifndef TC_WINDOWS_DRIVER
		ChaCha256Encrypt (&ctx, pbData3, cbData3, pbData3);
		ChaCha256Encrypt (&ctx, pbData4, cbData4, pbData4);
#endif
		FAST_ERASE64 (pbKey, sizeof(pbKey));
		FAST_ERASE64 (&hashLow, 8);
		FAST_ERASE64 (&hashHigh, 8);
		FAST_ERASE64 (&hashSeed, 8);
		FAST_ERASE64 (&cipherIV, 8);
		burn (&ctx, sizeof (ctx));
	}
}

uint64 VcGetEncryptionID (PCRYPTO_INFO pCryptoInfo)
{
	return ((uint64) pCryptoInfo->ks) + ((uint64) pCryptoInfo->ks2)
#ifndef TC_WINDOWS_DRIVER
		+ ((uint64) pCryptoInfo->master_keydata) + ((uint64) pCryptoInfo->k2)
#endif
		;
}

static void VcInternalProtectKeys (PCRYPTO_INFO pCryptoInfo, uint64 encID)
{
#ifdef TC_WINDOWS_DRIVER
	VcProtectMemory (encID, pCryptoInfo->ks, MAX_EXPANDED_KEY, pCryptoInfo->ks2, MAX_EXPANDED_KEY);
#else
	VcProtectMemory (encID, pCryptoInfo->ks, MAX_EXPANDED_KEY,
					pCryptoInfo->ks2, MAX_EXPANDED_KEY,
					pCryptoInfo->master_keydata, MASTER_KEYDATA_SIZE,
					pCryptoInfo->k2, MASTER_KEYDATA_SIZE);
#endif

}

void VcProtectKeys (PCRYPTO_INFO pCryptoInfo, uint64 encID)
{
	Dump ("VcProtectKeys BEGIN\n");
	VcInternalProtectKeys (pCryptoInfo, encID);
	Dump ("VcProtectKeys END\n");
}

void VcUnprotectKeys (PCRYPTO_INFO pCryptoInfo, uint64 encID)
{
	Dump ("VcUnprotectKeys BEGIN\n");
	VcInternalProtectKeys (pCryptoInfo, encID);
	Dump ("VcUnprotectKeys END\n");
}
#endif

#endif

#ifdef _M_ARM64
/* dummy implementation that should never be called */
void aes_hw_cpu_decrypt(const byte* ks, byte* data)
{
	ks = ks;
	data = data;
}

void aes_hw_cpu_decrypt_32_blocks(const byte* ks, byte* data)
{
	ks = ks;
	data = data;
}

void aes_hw_cpu_encrypt(const byte* ks, byte* data)
{
	ks = ks;
	data = data;
}

void aes_hw_cpu_encrypt_32_blocks(const byte* ks, byte* data)
{
	ks = ks;
	data = data;
}
#endif
de iniciar tras reiniciar el ordenador.\n\n
Qué hacer si no se puede iniciar Windows\n------------------------------------------------\n\nNota: Estas instrucciones son válidas sólo si no ha comenzado el cifrado.\n\n- Si Windows no se inicia tras introducir la contraseña correcta (o si ha introducido varias veces dicha contraseña pero VeraCrypt dice que la contraseña es incorrecta), no se alarme. Reinicie (apague y vuelva a encender) el ordenador, y en la pantalla del Cargador de Arranque VeraCrypt, pulse la tecla Esc (y si tiene varios sistemas, elija uno para iniciar). Windows debería iniciar (siempre que aún no esté cifrado) y VeraCrypt automáticamente le preguntará si desea desinstalar el componente de autenticación de pre-arranque o no. Tenga en cuenta que estos pasos NO funcionan si la partición/unidad del sistema está cifrada (nadie puede iniciar Windows o acceder a datos cifrados sin la contraseña correcta incluso si ha seguido los pasos anteriores).\n\n - Si los pasos anteriores no funcionan o si la pantalla del Cargador de Arranque VeraCrypt no aparece (antes de que se inicie Windows), introduzca el Disco de Rescate VeraCrypt en su unidad CD/DVD y reinicie su ordenador. Si la pantalla del Disco de Rescate VeraCrypt no aparece (o si no ve 'Opciones de Reparación' en la sección 'Controles de Teclado' de la pantalla del Disco de Rescate), es posible que su BIOS esté configurada para arrancar desde discos duros antes que desde unidades CD/DVD. Si ése es el caso, reinicie su ordenador, pulse F2 o Supr (en cuanto vea la pantalla de inicio de la BIOS), y espere hasta que aparezca una pantalla de configuración BIOS. Si dicha pantalla de configuración no aparece, reinicie el ordenador otra vez y comience a pulsar F2 o Supr reiteradamente en cuanto se reinicie el ordenador. Cuando aparezca una pantalla de configuración de la BIOS, configure su BIOS para que arranque desde la unidad de CD/DVD primero (para obtener información sobre cómo hacerlo, vaya a la documentación de su BIOS/placa base o contacte con el equipo de soporte técnico del fabricante para obtener asistencia). Luego reinicie su ordenador. La pantalla del Disco de Rescate VeraCrypt debería aparecer ahora. En dicha pantalla, seleccione 'Opciones de Reparación' pulsando F8 en su teclado. Desde el menú 'Opciones de Reparación', seleccione 'Restaurar cargador original del sistema'. Luego extraiga el Disco de Rescate de su unidad CD/DVD y reinicie su ordenador. Windows debería iniciar con normalidad (siempre que no esté cifrado).\n\n Tenga en cuenta que los pasos anteriores NO funcionarán si la partición/unidad del sistema está cifrada (nadie puede iniciar Windows o acceder a datos cifrados en la unidad sin la contraseña correcta incluso si se siguen los pasos anteriores).\n\n\nRecuerde que incluso si pierde su Disco de Rescate VeraCrypt y un atacante lo encuentra, éste NO será capaz de descifrar la partición o unidad del sistema sin la contraseña correcta. Prueba Completada La prueba ha sido completada con éxito.\n\nAVISO: Tenga en cuenta que si el suministro de energía es interrumpido repentinamente mientras se cifran los datos existentes, o si el sistema operativo falla debido a un error de software o hardware mientras VeraCrypt cifra los datos, podrían corromperse o perderse porciones de los datos. Por tanto, antes de empezar a cifrar, asegúrese de que posee copias de seguridad de los archivos que desea cifrar. Si no las tiene, copie los archivos ahora (puede hacer clic en Aplazar, hacer la copia, ejecutar de nuevo VeraCrypt y seleccionar 'Sistema' > 'Continuar proceso interrumpido' para iniciar el cifrado).\n\nCuando esté listo, pulse Cifrar para empezar. Puede hace clic en Pausa o en Aplazar en cualquier momento para interrumpir el proceso de cifrado o descifrado, salir de este asistente, reiniciar o apagar su ordenador, y luego continuar el proceso desde el punto en que se detuvo. Para evitar ralentizaciones cuando el sistema o alguna aplicación lea o escriba en la unidad del sistema, VeraCrypt automáticamente espera hasta que los datos sean leídos o escritos (ver Estado a continuación) y luego continúa cifrando o descifrando. \n\nPuede hacer clic en Pausa o en Aplazar en cualquier momento para interrumpir el proceso de cifrado, salir de este asistente, reiniciar o apagar su ordenador, y luego continuar el proceso desde el punto en que se detuvo. Recuerde que el volumen no puede montarse hasta que esté cifrado por completo. \n\nPuede hacer clic en Pausar o Diferir en cualquier momento para interrumpir el proceso de descifrado, salir de este asistente, reiniciar o apagar el equipo y posteriormente continuar el proceso, que proseguirá desde el punto en el que fue detenido. Sea consciente que el volumen no se podrá montar hasta que el mismo haya sido completamente descifrado. Sistema Oculto Iniciado Sistema Original Windows crea (normalmente sin su conocimiento ni su consentimiento) varios archivos temporales, logs, etc. en la partición del sistema. También guarda el contenido de la RAM en archivos de hibernación y paginación ubicados en la partición del sistema. Por tanto, si un adversario analiza archivos almacenados en la partición donde reside el sistema original (del que es una copia el sistema oculto), podría hallar, por ejemplo, que ud. usó el asistente de VeraCrypt en modo de creación de sistema oculto (lo que podría indicar la existencia de un sistema operativo oculto en su ordenador).\n\nPara evitar estos problemas, VeraCrypt borrará el contenido entero de la partición donde reside el sistema original. Acto seguido, para lograr la negación plausible, tendrá que instalar un nuevo sistema en la partición y cifrarla. Con esto creará el sistema señuelo y el proceso de creación del sistema operativo oculto estará completo. El sistema operativo oculto ha sido creado con éxito. Sin embargo, antes de que pueda empezar a usarlo (y lograr la negación plausible), necesitará borrar (usando VeraCrypt) el contenido entero de la partición donde está instalado el sistema operativo en ejecución. Antes de que pueda hacer esto, debe reiniciar el ordenador y, en la pantalla del Cargador de Arranque VeraCrypt (que aparece antes del inicio de Windows), introducir la contraseña de autenticación de pre-arranque para el sistema operativo oculto. Cuando éste se inicie, el asistente de VeraCrypt será lanzado automáticamente.\n\nNota: Si elige terminar el proceso de creación del sistema operativo oculto ahora, NO podrá continuar el proceso y el sistema operativo oculto NO será accesible (porque el Cargador de Arranque VeraCrypt será eliminado). Ha programado el proceso de creación de un sistema operativo oculto. El proceso aún no ha sido completado. Para completarlo, debe reiniciar el ordenador y, en la pantalla del Cargador de Arranque VeraCrypt (que aparece antes del inicio de Windows), introducir la contraseña para el sistema operativo oculto.\n\nNota: Si elige terminar el proceso de creación del sistema operativo oculto ahora, NO podrá continuarlo más tarde. Reiniciar el ordenador y continuar Terminar permanentemente el proceso de creación del sistema operativo oculto No hacer nada y preguntar de nuevo después \nSI ES POSIBLE, IMPRIMA ESTE TEXTO (pulse 'Imprimir').\n\n\nCuándo y Cómo Usar el Disco de Rescate VeraCrypt (Tras Cifrar)\n-----------------------------------------------------------------------------------\n\n I. Cómo arrancar el Disco de Rescate VeraCrypt\n\nPara arrancar un Disco de Rescate VeraCrypt, insértelo en su unidad CD/DVD y reinicie su ordenador. Si no aparece la pantalla del Disco de Rescate VeraCrypt (o si no ve 'Opciones de Reparación' en la sección 'Controles de Teclado' de la pantalla), es posible que su BIOS esté configurada para arrancar desde discos duros antes que desde unidades CD/DVD. Si este es el caso, reinicie su ordenador, pulse F2 o Supr (en cuanto vea la pantalla de inicio de la BIOS), y espere hasta que aparezca una pantalla de configuración BIOS. Si no aparece, reinicie el ordenador y pulse repetidamente F2 o Supr en cuanto se reinicie el ordenador. Cuando aparezca la pantalla de configuración, configure su BIOS para que arranque desde la unidad CD/DVD primero (si no sabe hacerlo, vaya a la documentación de su BIOS/placa base o contacte con el equipo de soporte técnico del fabricante para obtener asistencia). Luego reinicie su ordenador. La pantalla del Disco de Rescate VeraCrypt debería aparecer ahora. Nota: en dicha pantalla, puede seleccionar 'Opciones de Reparación' pulsando F8.\n\n\n II. Cuándo y Cómo Usar el Disco de Rescate VeraCrypt (Tras Cifrar) 1) Si la pantalla del Cargador de Arranque VeraCrypt no aparece tras iniciar su ordenador (o si Windows no arranca), el Cargador podría estar dañado. El Disco de Rescate VeraCrypt le permite restaurarlo y con ello volver a obtener acceso a su sistema y datos cifrados (pero recuerde que tendrá que seguir introduciendo la contraseña correcta). En la pantalla del Disco de Rescate, seleccione 'Opciones de Reparación' > 'Restaurar Cargador de Arranque VeraCrypt'. Luego pulse 'Y' para confirmar la acción, extraiga el Disco de Rescate de su unidad CD/DVD y reinicie su ordenador.\n\n 2) Si ha introducido varias veces la contraseña correcta pero VeraCrypt dice que no es correcta, la clave maestra u otros datos críticos podrían estar dañados. El Disco de Rescate VeraCrypt le permite restaurarlos y volver a obtener acceso a su sistema y datos cifrados (pero tendrá que seguir introduciendo la contraseña correcta). En la pantalla del Disco de Rescate, seleccione 'Opciones de Reparación' > 'Restaurar datos clave'. Luego introduzca su contraseña, pulse 'Y' para confirmar la acción, extraiga el Disco de Rescate de su unidad CD/DVD y reinicie su ordenador.\n\n 3) Si el Cargador de Arranque VeraCrypt está dañado, puede evitar su ejecución arrancando directamente desde el Disco de Rescate VeraCrypt. Inserte su Disco de Rescate en la unidad CD/DVD e introduzca su contraseña en la pantalla del Disco de Rescate.\n\n 4) Si Windows está dañado y no puede iniciarse, el Disco de Rescate VeraCrypt le permite descifrar permanentemente la partición/unidad antes de que Windows se inicie. En la pantalla del Disco de Rescate, seleccione 'Opciones de Reparación' > 'Descifrar permanentemente partición/unidad del sistema'. Introduzca la contraseña y espere a que se complete el descifrado. Luego puede arrancar su CD/DVD de instalación de Windows para repararlo. Nota: Alternativamente, si Windows está dañado (no puede iniciarse) y necesita repararlo (o acceder a sus archivos), puede evitar el descifrado de la partición/unidad del sistema siguiendo estos pasos: Si tiene varios sistemas operativos instalados en su ordenador, arranque alguno que no requiera autenticación de pre-arranque. Si no tiene varios sistemas operativos, puede arrancar un CD/DVD WinPE o BartPE o conectar su unidad del sistema a otro ordenador como una unidad secundaria o externa y arrancar el sistema operativo de ése ordenador. Después de arrancar un sistema, ejecute VeraCrypt, seleccione 'Seleccionar Dispositivo', seleccione la partición del sistema afectado, pulse 'Aceptar', seleccione 'Sistema' > 'Montar Sin Autenticación de Pre-Arranque', introduzca su contraseña de autenticación de pre-arranque y pulse 'Aceptar'. La partición se montará como un volumen VeraCrypt normal (los datos se cifrarán/descifrarán al vuelo).\n\n\n Recuerde que incluso si pierde su Disco de Rescate VeraCrypt y un atacante lo encuentra, éste NO podrá descifrar la unidad o partición del sistema sin la contraseña correcta. \n\nI M P O R T A N T E -- IMPRIMA ESTE TEXTO SI ES POSIBLE (Clic en 'Imprimir').\n\n\nNota: Este texto se mostrará automáticamente cada vez que inicie el sistema oculto hasta que comience a crear el sistema señuelo.\n\n\n Cómo Crear un Sistema Señuelo con Seguridad\n----------------------------------------------------------------------------\n\nPara conseguir la negación plausible, es necesario crear el sistema operativo señuelo ahora. Para hacerlo, siga estos pasos:\n\n 1) Por razones de seguridad, apague su ordenador y déjelo apagado unos minutos (cuantos más mejor). Esto es requerido para borrar la memoria, que contiene datos sensibles. Luego encienda el ordenador pero no arranque el sistema oculto.\n\n 2) Instale Windows en la partición cuyo contenido ha sido borrado (es decir, en la partición donde estaba instalado el sistema original, del que se copió el sistema oculto).\n\nIMPORTANTE: CUANDO EMPIECE A INSTALAR EL SISTEMA SEÑUELO, EL OCULTO *NO* PODRÁ ARRANCAR (porque el Cargador de Arranque de VeraCrypt será borrado por el instalador de Windows). ESTO ES NORMAL Y ESPERADO. NO SE ALARME. PODRÁ ARRANCAR EL SISTEMA OCULTO EN CUANTO EMPIECE A CIFRAR EL SISTEMA SEÑUELO (porque VeraCrypt instalará automáticamente en ese momento el Cargador de Arranque VeraCrypt en la unidad del sistema).\n\nImportante: El tamaño de la partición del sistema señuelo debe permanecer igual que el del volumen oculto (esta condición se cumple ahora). Además, no debe crear ninguna partición entre la partición del sistema señuelo y la que contiene el sistema oculto.\n\n 3) Arranque el sistema señuelo (el que instaló en el paso 2) e instale VeraCrypt en él.\n\nTenga en cuenta que el sistema señuelo nunca debe contener datos importantes.\n\n 4) En el sistema señuelo, ejecute VeraCrypt y seleccione 'Sistema' > 'Cifrar Partición/Unidad del Sistema'. El Asistente de Creación de Volúmenes VeraCrypt debería aparecer.\n\nLos siguientes pasos se aplican a dicho asistente.\n\n 5) En el Asistente de Creación de Volúmenes VeraCrypt, NO seleccione la opción 'Oculto'. Deje seleccionada la opción 'Normal' y haga clic en 'Siguiente'.\n\n 6) Seleccione la opción 'Cifrar la partición de Windows' y pulse 'Siguiente'.\n\n 7) Si sólo están instalados el sistema señuelo y el oculto en el ordenador, seleccione la opción 'Arranque simple' (si hay algún otro sistema instalado, seleccione 'Arranque múltiple'). Luego pulse 'Siguiente'.\n\n 8) IMPORTANTE: En este paso, PARA EL SISTEMA SEÑUELO, ¡DEBE SELECCIONAR EL MISMO ALGORITMO DE CIFRADO Y ALGORITMO HASH QUE EL SELECCIONADO PARA EL SISTEMA OCULTO! ¡DE LO CONTRARIO, EL SISTEMA OCULTO SERÁ INACCESIBLE! En otras palabras, el sistema señuelo debe ser cifrado con el mismo algoritmo de cifrado que el sistema oculto. Nota: La razón es que el sistema señuelo y el oculto compartirán un único cargador de arranque, que sólo soporta un algoritmo seleccionado por el usuario (hay una versión especial del Cargador de Arranque VeraCrypt para cada algoritmo).\n\n 9) En este paso, elija una contraseña para el sistema operativo señuelo. Ésta será la contraseña que podrá revelar a un adversario si se le pide o se le obliga a revelar su contraseña de autenticación de pre-arranque (la otra contraseña que puede revelar es la del volumen externo). La existencia de la tercera contraseña (la de autenticación de pre-arranque del sistema operativo oculto) permanecerá en secreto.\n\nImportante: la contraseña que elija para el sistema señuelo debe ser sustancialmente diferente de la que elija para el volumen oculto (es decir, para el sistema operativo oculto).\n\n 10) Siga el resto de las instrucciones del asistente para cifrar el sistema operativo señuelo.\n\n\n\n Tras la Creación del Sistema Señuelo\n------------------------------------------------\n\nTras cifrar el sistema señuelo, habrá completado el proceso de creación del sistema operativo oculto y podrá usar estas tres contraseñas:\n\n1) Contraseña de autenticación de pre-arranque para el sistema operativo oculto.\n\n2) Contraseña de autenticación de pre-arranque para el sistema operativo señuelo.\n\n3) Contraseña para el volumen externo.\n\n Si desea iniciar el sistema operativo oculto, sólo tendrá que introducir la contraseña para el sistema operativo oculto en la pantalla del Cargador de Arranque VeraCrypt (que aparece tras encender o reiniciar su ordenador).\n\nSi desea iniciar el sistema operativo señuelo, sólo tendrá que introducir la contraseña para el sistema operativo señuelo en la misma pantalla.\n\nLa contraseña para el sistema señuelo puede ser revelada a cualquiera que le obligue a revelar la contraseña de autenticación de pre-arranque. La existencia del volumen oculto (y del sistema operativo oculto) permanecerá en secreto.\n\n La tercera contraseña (para el volumen externo) puede ser revelada a cualquiera que le obligue a revelar la contraseña para la primera partición tras la partición del sistema, donde residen tanto el volumen externo como el oculto (con el sistema operativo oculto). La existencia del volumen oculto (y del sistema oculto) permanecerá en secreto.\n\n\n Si reveló la contraseña para el sistema señuelo a un adversario y éste le preguntó por qué el espacio libre de la partición del sistema (señuelo) contiene datos aleatorios, puede responder, por ejemplo: "La partición contuvo un sistema cifrado por VeraCrypt, pero olvidé la contraseña de autenticación de pre-arranque (o el sistema fue dañado y dejó de arrancar), así que tuve que reinstalar Windows y cifrar la partición otra vez."\n\n\n Si todas las instrucciones son seguidas y las precauciones y requisitos listados en la sección "Precauciones y Requisitos de Seguridad Concernientes a los Volúmenes Ocultos" en la Guía del Usuario de VeraCrypt son seguidos, debería ser imposible demostrar que el volumen oculto y el sistema operativo oculto existen, incluso si el volumen externo está montado o el sistema operativo señuelo es descifrado o iniciado.\n\nSi guarda o imprime una copia de este texto (altamente recomendado salvo que su impresora almacene internamente copias de los documentos que imprime), debería destruir todas las copias del mismo tras crear el sistema señuelo y tras haber comprendido toda la información contenida en el texto (de otro modo, si se encuentra una copia, podría indicar que hay un sistema operativo oculto en este ordenador).\n\n AVISO: SI NO PROTEGE EL VOLUMEN OCULTO (para saber cómo hacerlo, vaya a la sección "Protección de Volúmenes Ocultos Contra Daño" en la Guía de Usuario de VeraCrypt), NO ESCRIBA EN EL VOLUMEN EXTERNO (recuerde que el sistema operativo señuelo NO está instalado en el volumen externo). DE LO CONTRARIO, ¡PODRÍA SOBRESCRIBIR Y DAÑAR EL VOLUMEN OCULTO (Y EL SISTEMA OPERATIVO OCULTO QUE CONTIENE)! Clonando Sistema Operativo En los siguientes pasos, VeraCrypt creará el sistema operativo oculto copiando el contenido de la partición del sistema al volumen oculto (los datos que se copien serán cifrados al vuelo con una clave de cifrado diferente de la que se usará para el sistema operativo señuelo).\n\nTenga en cuenta que el proceso se realizará en el entorno de pre-arranque (antes del inicio de Windows) y puede tardar mucho en completarse; varias horas o incluso días (dependiendo del tamaño de la partición del sistema y del rendimiento de su ordenador).\n\nPodrá interrumpir el proceso, apagar su ordenador, iniciar el sistema operativo y luego continuar el proceso. No obstante, si lo interrumpe, el proceso de copiado tendrá que comenzar desde el principio (porque el contenido de la partición del sistema no debe cambiar durante la clonación). ¿Desea cancelar el proceso entero de creación del sistema operativo oculto?\n\nNota: NO podrá continuar el proceso más tarde si lo cancela ahora. ¿Desea cancelar la prueba del cifrado del sistema? Ha fallado la prueba del cifrado del sistema VeraCrypt. ¿Desea intentarlo de nuevo?\n\nSi selecciona 'No', el componente de autenticación de pre-arranque será desinstalado.\n\nNotas:\n\n- Si el Cargador de Arranque VeraCrypt no le pidió que introdujera la contraseña antes de que Windows se iniciara, es posible que su sistema operativo no arranque desde la unidad en la que está instalado. Esto no está soportado.\n\n- Si usó un algoritmo de cifrado distinto a AES y la prueba falló (e introdujo la contraseña), la causa puede ser un controlador diseñado inapropiadamente. Seleccione 'No', y trate de cifrar la partición/unidad del sistema otra vez, pero use el algoritmo de cifrado AES (que tiene los requisitos de memoria más bajos).\n\n- Para más causas y soluciones posibles, vea https://www.veracrypt.fr/en/Troubleshooting.html La partición/unidad del sistema no parece estar cifrada (ni parcial ni completamente). Su partición/unidad del sistema está cifrada (parcial o completamente).\n\nDescifre por completo su partición/unidad del sistema antes de continuar. Para ello, seleccione 'Sistema' > 'Descifrar Permanentemente la Partición/Unidad del Sistema' desde el menú de la ventana principal de VeraCrypt. Si la partición/unidad del sistema está cifrada (parcial o completamente), no puede usar una versión anterior de VeraCrypt (pero puede actualizarlo o reinstalar la misma versión). Su partición/unidad del sistema está siendo actualmente cifrada, descifrada, o modificada de otra manera. Interrumpa el proceso de cifrado/descifrado/modificación (o espere a que termine) antes de continuar. El Asistente de Creación de Volúmenes VeraCrypt ya está ejecutándose y está preparando o llevando a cabo el cifrado/descifrado de la partición/unidad del sistema. Antes de continuar, espere a que termine o ciérrelo. Si no puede cerrarlo, reinicie su ordenador antes de proceder. El proceso de cifrado o descifrado de la partición/unidad del sistema no ha sido completado. Espere a que se complete antes de continuar. Error: El proceso de cifrado de la partición/unidad no ha sido completado. Debe completarse primero. Error: El proceso de cifrado de la partición/volumen no ha sido completado. Debe completarse primero.\n\nNota: para continuar el proceso, seleccione 'Volúmenes' > 'Continuar Proceso Interrumpido' desde el menú de la ventana principal de VeraCrypt. La contraseña es correcta, VeraCrypt ha descifrado con éxito la cabecera del volumen y detectado que éste es un volumen de sistema oculto. No obstante, no puede modificar la cabecera de un volumen de sistema oculto de esta forma.\n\nPara cambiar la contraseña de un volumen de sistema oculto, arranque el sistema operativo residente en dicho volumen, y luego seleccione 'Sistema' > 'Cambiar Contraseña' desde el menú de la ventana principal de VeraCrypt.\n\nPara establecer el algoritmo de derivación de la clave de cabecera, arranque el sistema operativo oculto y seleccione 'Sistema' > 'Establecer Algoritmo de Derivación de Clave de Cabecera'. VeraCrypt no soporta el descifrado sin pérdida de datos de una partición de sistema oculto.\n\nNota: Si desea descifrar la partición del sistema señuelo, arranque el sistema señuelo y seleccione 'Sistema' > 'Descifrar Permanentemente Partición/Unidad del Sistema' desde el menú de la ventana principal de VeraCrypt. Error: Parámetro Incorrecto/inválido. Ha seleccionado una partición o un dispositivo pero el modo de asistente seleccionado es sólo para contenedores de archivos.\n\n¿Desea cambiar el modo de asistente? ¿Desea crear un contenedor de archivos VeraCrypt en su lugar? Ha seleccionado la partición/unidad del sistema (o la partición de arranque), pero el modo de asistente seleccionado es sólo para particiones/unidades secundarias.\n\n¿Desea instalar autenticación de pre-arranque (lo que significa que tendrá que introducir su contraseña antes de cada inicio de Windows) y cifrar la partición/unidad del sistema? ¿Seguro que desea descifrar permanentemente la partición/unidad del sistema? AVISO: Si descifra permanentemente la partición/unidad del sistema, se escribirán en ella datos no cifrados.\n\n¿Seguro que desea descifrar permanentemente la partición/unidad del sistema? ¿Está seguro que desea descifrar permanentemente el siguiente volumen? PRECAUCIÓN: si ha descifrado permanentemente el volumen de VeraCrypt, los datos descifrados se escribirán a disco.\n\n¿Está completamente seguro que quiere descifrar permanentemente el volumen seleccionado? AVISO: si usa algoritmos en cascada para el cifrado del sistema, pueden producirse estos problemas:\n\n1) Que el Cargador de Arranque VeraCrypt sea mayor de lo normal y no haya suficiente espacio en la primera pista de la unidad para hacer una copia de seguridad del Cargador. Por tanto, si resulta dañado (lo que a veces ocurre, por ejemplo, con procedimientos de activación antipiratería diseñados inapropiadamente), tendrá que usar el Disco de Rescate VeraCrypt para arrancar o reparar el Cargador de Arranque.\n\n2) Que en algunos ordenadores se tarde más en reanudar tras la hibernación.\n\nEstos problemas potenciales pueden evitarse eligiendo un algoritmo de cifrado sin cascada (como AES).\n\n¿Seguro que desea usar algoritmos en cascada? Si encuentra alguno de los problemas mencionados, descifre la partición/unidad (si está cifrada) y luego intente cifrarla de nuevo usando un algoritmo de cifrado sin cascada (como AES). AVISO: Por razones de seguridad, debería actualizar VeraCrypt en el sistema operativo señuelo antes de actualizarlo en el sistema operativo oculto.\n\nPara hacerlo, arranque el sistema señuelo y ejecute el instalador VeraCrypt en él. Luego arranque el sistema oculto y ejecute también el instalador en él.\n\nNota: El sistema señuelo y el sistema oculto comparten un único cargador de arranque. Si actualizó VeraCrypt sólo en el sistema oculto (pero no en el señuelo), el sistema señuelo podría contener un controlador VeraCrypt y aplicaciones VeraCrypt cuya versión sea diferente a la del Cargador de Arranque VeraCrypt. Esta discrepancia podría indicar que existe un sistema operativo oculto en este ordenador.\n\n\n¿Desea continuar? La versión del Cargador de Arranque VeraCrypt que arrancó este sistema operativo es diferente a la versión del controlador VeraCrypt (y la de las aplicaciones VeraCrypt) instalado en este sistema.\n\nDebería ejecutar el instalador VeraCrypt (cuya versión sea la misma que la del Cargador de Arranque VeraCrypt) para actualizar VeraCrypt en este sistema operativo. La versión del Cargador de Arranque VeraCrypt que arrancó este sistema operativo es diferente a la versión del controlador VeraCrypt (y de las aplicaciones VeraCrypt) instalado en este sistema. Recuerde que las versiones antiguas pueden contener errores corregidos en versiones recientes.\n\nSi no arrancó desde el Disco de Rescate VeraCrypt, debería reinstalar VeraCrypt o actualizarlo a la última versión estable (el cargador de arranque será actualizado también).\n\nSi arrancó desde el Disco de Rescate, debería actualizarlo ('Sistema' > 'Crear Disco de Rescate'). El Cargador de Arranque VeraCrypt ha sido actualizado.\n\nSe recomienda crear un nuevo Disco de Rescate VeraCrypt (que contendrá la nueva versión del Cargador de Arranque VeraCrypt) seleccionando 'Sistema' > 'Crear Disco de Rescate' después de reiniciar su ordenador. El Cargador de Arranque VeraCrypt ha sido actualizado.\n\nSe recomienda que arranque el sistema operativo señuelo y cree un nuevo Disco de Rescate VeraCrypt (que contendrá la nueva versión del Cargador de Arranque VeraCrypt) seleccionando 'Sistema' > 'Crear Disco de Rescate'. Fallo al actualizar el Cargador de Arranque VeraCrypt. VeraCrypt ha fallado al detectar el tamaño real de la unidad del sistema y, por tanto, se usará el tamaño reportado por el sistema operativo (que podría ser menor que el tamaño real). Recuerde que esto no es un error de VeraCrypt. PRECAUCIÓN: Parece que VeraCrypt ya ha tratado de detectar sectores ocultos en esta unidad del sistema. Si encontró algún problema durante el proceso de detección anterior, puede evitar los problema saltándose la detección de sectores ocultos ahora. Tenga en cuenta que si lo hace, VeraCrypt usará el tamaño reportado por el sistema operativo (que puede ser menor que el tamaño real de la unidad).\n\nRecuerde que este problema no es causado por un error de VeraCrypt. Saltarse la detección de sectores ocultos (usar tamaño reportado por el sistema operativo) Intentar detectar los sectores ocultos de nuevo Error: El contenido de uno o más sectores del disco no puede leerse (probablemente debido a un defecto físico).\n\nEl proceso de cifrado sin pérdida de datos puede continuar sólo cuando los sectores sean legibles de nuevo. VeraCrypt puede intentar hacer legibles esos sectores escribiendo ceros en ellos (con lo cual estos bloques de ceros serán cifrados). Sin embargo, tenga en cuenta que los datos almacenados en los sectores ilegibles se perderán. Si quiere evitarlo, puede intentar recuperar fragmentos de los datos corruptos usando herramientas de terceros.\n\nNota: En caso de sectores físicamente dañados (al contrario que con la corrupción de datos y errores de suma de verificación) la mayoría de los tipos de dispositivos de almacenamiento reasignan los sectores cuando se intenta escribir datos en ellos (así que los datos de los sectores dañados pueden permanecer sin cifrar en la unidad).\n\n¿Desea que VeraCrypt escriba ceros en los sectores ilegibles? Error: El contenido de uno o más sectores del disco no puede leerse (probablemente debido a un defecto físico).\n\nPara proceder con el descifrado, VeraCrypt tendrá que desechar el contenido de los sectores ilegibles (su contenido será reemplazado por datos pseudoaleatorios). Recuerde que, antes de continuar, puede intentar recuperar fragmentos de los datos corruptos usando herramientas de terceros.\n\n¿Desea que VeraCrypt descarte los datos de los sectores ilegibles? Nota: VeraCrypt ha reemplazado el contenido de %I64d sectores ilegibles (%s) con bloques cifrados de texto plano llenos de ceros. Nota: VeraCrypt ha remplazado el contenido de %I64d sectores ilegibles (%s) con datos pseudoaleatorios. Introduzca contraseña/PIN para token '%s': Para permitir que VeraCrypt acceda a un token de seguridad o tarjeta inteligente, necesita instalar primero una librería de software PKCS #11 para el token o la tarjeta. Esta librería puede ser suministrada con el dispositivo o puede descargarse desde la web del vendedor o de terceros.\n\nTras instalar la librería, puede seleccionarla manualmente pulsando 'Seleccionar Librería' o puede dejar que VeraCrypt la encuentre y seleccione automáticamente pulsando 'Detección Automática' (sólo se buscará en el directorio del sistema Windows). Nota: Para el nombre de archivo y ubicación de la librería PKCS #11 instalada para su token o tarjeta, vaya a la documentación suministrada con el token, tarjeta, o software de terceros.\n\nPulse 'Aceptar' para seleccionar la ruta y nombre de archivo. Para permitir que VeraCrypt acceda a un token de seguridad o tarjeta inteligente, necesita seleccionar una librería de software PKCS #11 para el token/tarjeta primero. Para hacerlo, seleccione 'Configuración' > 'Tokens de Seguridad'. Falló la inicialización de la librería de token de seguridad PKCS #11.\n\nAsegúrese de que la ruta y archivo especificados dirigen a una librería PKCS #11 válida. Para especificar una ruta y nombre de archivo para la librería PKCS #11, seleccione 'Configuración' > 'Tokens de Seguridad'. No se han encontrado librerías PKCS #11 en el directorio de sistema de Windows.\n\nAsegúrese de que haya instalada una librería PKCS #11 para su token de seguridad o tarjeta inteligente (esta librería puede ser suministrada con el token/tarjeta o puede descargarse desde la web del vendedor o de terceros). Si está instalado en otro directorio distinto al del sistema de Windows, pulse 'Seleccionar Librería' para localizar la librería (p.e. en la carpeta donde está instalado el software del token/tarjeta). No se ha encontrado ningún token de seguridad.\n\nAsegúrese de que su token está conectado y el controlador de dispositivo correcto está instalado. No se ha encontrado archivo-clave del token de seguridad. Ya existe un archivo-clave de token de seguridad con el mismo nombre. ¿Desea borrar los archivos seleccionados? Ruta inválida de archivo-clave de token de seguridad. Error de token de seguridad Contraseña incorrecta para el token de seguridad. El token de seguridad no tiene suficiente memoria/espacio para la operación solicitada.\n\nSi está intentando importar un archivo-llave, debería seleccionar un archivo más pequeño o usar uno generado por VeraCrypt (seleccione 'Herramientas' > 'Generador de Archivo-llave'). Todas las sesiones de token de seguridad abiertas han sido cerradas. Seleccione Archivos-llave de Token de Seguridad Ranura Nombre del token Nombre del archivo IMPORTANTE: Las contraseñas de autenticación de pre-arranque siempre son escritas con la disposición de teclado estándar de EEUU. Por tanto, podría ser imposible montar con contraseña de pre-arranque un volumen que use una contraseña escrita con cualquier otra disposición de teclado (esto no es un error de VeraCrypt). Para permitir que volúmenes así sean montados con contraseña de pre-arranque, siga estos pasos:\n\n1) Clic en 'Seleccionar Archivo' o 'Seleccionar Dispositivo' y seleccione el volumen.\n2) Seleccione 'Volúmenes' > 'Cambiar Contraseña del Volumen'.\n3) Introduzca la contraseña actual para el volumen.\n4) Cambie la disposición de teclado a Inglés (EEUU) haciendo clic en la barra de Idioma en la barra de tareas de Windows y seleccionando 'EN Inglés (EEUU)'.\n5) En VeraCrypt, en el campo de la nueva contraseña, escriba la contraseña de pre-arranque.\n6) Confirme la contraseña escribiéndola en el campo de confirmación y pulse 'Aceptar'.\nAVISO: Tenga en mente que si sigue estos pasos, la contraseña del volumen tendrá que ser escrita siempre usando la disposición de teclado EEUU (que se aplica automáticamente sólo en el entorno de pre-arranque). Los volúmenes favoritos del sistema serán montados usando la contraseña de autenticación de pre-arranque. Si algún favorito del sistema usa una contraseña diferente, no será montado. Recuerde que si necesita impedir que las acciones con volúmenes VeraCrypt normales (como 'Desmontar Todo') afecten a los volúmenes favoritos del sistema, debería activar la opción 'Permitir sólo a administradores ver y desmontar volúmenes favoritos del sistema en VeraCrypt'. Además, cuando VeraCrypt se ejecuta sin privilegios de administrador (por defecto en Windows Vista y posterior), los volúmenes favoritos del sistema no se mostrarán en la lista de letras de unidad de la ventana principal de VeraCrypt. IMPORTANTE: Tenga en cuenta que si esta opción se habilita y VeraCrypt no tiene privilegios de administrador, los volúmenes favoritos del sistema montados NO se mostrarán en la ventana principal de VeraCrypt y no se podrán desmontar. Si necesita desmontar un favorito del sistema haga clic en el icono de VeraCrypt (en el menú Inicio) y seleccione 'Ejecutar como administrador' primero. La misma limitación se aplica a las funciones 'Desmontar Todo', 'Desmontar automáticamente', teclas de acceso rápido relacionadas, etc. Recuerde que esta configuración entra en efecto sólo tras reiniciar el sistema operativo. Error analizando línea de comandos. Disco de Rescate Seleccionar &Archivo y Montar Seleccionar &Dispositivo y Montar Permitir sólo a administradores ver y desmontar volúmenes favoritos del sistema en VeraCrypt Montar volúmenes favoritos del sistema al inicio de Windows (en la fase inicial del proceso) AVISO: El sistema de archivos en el volumen montado como '%s' no se desmontó limpiamente y puede contener errores. Usar un sistema de archivos corrupto puede causar pérdida o corrupción de datos.\n\nNota: Antes de extraer o desconectar físicamente un dispositivo (como una unidad flash USB o un disco duro externo) en el que reside un volumen VeraCrypt, debería desmontar siempre el volumen en VeraCrypt primero.\n\n\n¿Desea que Windows intente detectar y corregir errores (si los hay) en el sistema de archivos? AVISO: Uno o más volúmenes favoritos del sistema no fue desmontado limpiamente y puede contener errores en el sistema de archivos. Vaya al visor de eventos del sistema para obtener más detalles.\n\nUsar un sistema de archivos corrupto puede causar pérdida o corrupción de datos. Debería comprobar los volúmenes afectados en busca de errores (clic derecho en cada uno en VeraCrypt y seleccione 'Reparar Sistema de Archivos'). AVISO: Reparar un sistema de archivos dañado usando la herramienta de Microsoft 'chkdsk' podría causar pérdida de archivos en las áreas dañadas. Por tanto, es recomendable que primero copie los archivos almacenados en el volumen VeraCrypt a otro volumen VeraCrypt sin errores.\n\n¿Desea reparar el sistema de archivos ahora? El volumen '%s' ha sido montado como sólo lectura porque se denegó el acceso a escritura.\n\nAsegúrese de que los permisos de seguridad del contenedor le permiten escribir en él (clic derecho en el contenedor y seleccione Propiedades > Seguridad).\n\nRecuerde que, debido a un problema de Windows, puede ver este aviso incluso tras ajustar los permisos apropiados. Esto no es culpa de un error de VeraCrypt. Una posible solución es mover su contenedor a su carpeta 'Mis Documentos'.\n\nSi desea mantener su volumen como sólo lectura, establezca el atributo sólo lectura del contenedor (clic derecho en éste y seleccione Propiedades > Sólo lectura), lo que suprimirá este aviso. El volumen '%s' tuvo que ser montado como sólo lectura porque se denegó el acceso a escritura.\n\nAsegúrese de que ninguna otra aplicación (como el software antivirus) esetá accediendo a la partición/dispositivo donde se aloja el volumen. El volumen '%s' ha sido montado como sólo lectura porque el sistema operativo informó de que el dispositivo está protegido contra escritura.\n\nTenga en cuenta que algunos controladores personalizados de chipset causan que medios grabables parezcan erróneamente protegidos contra escritura. Esto puede solucionarse actualizando o desinstalando los controladores personalizados (no de Microsoft) que haya instalados en este sistema. Tenga en cuenta que la tecnología Hyper-Threading proporciona múltiples núcleos lógicos por cada núcleo físico. Cuando Hyper-Threading está activado, el número seleccionado representa el número de procesadores o núcleos lógicos. %d hilos Recuerde que AES acelerado por hardware está deshabilitado, lo que afectará a los resultados (peor rendimiento).\n\nPara habilitar la aceleración hardware, seleccione 'Configuración' > 'Rendimiento' y marque la casilla correspondiente. Recuerde que el número de hilos está actualmente limitado, lo que afectará a los resultados (peor rendimiento).\n\nPara utilizar toda la potencia de los procesadores, seleccione 'Configuración' > 'Rendimiento' y desmarque la casilla correspondiente. ¿Desea que VeraCrypt intente desactivar la protección contra escritura de la partición/unidad? AVISO: Esta configuración puede perjudicar el rendimiento.\n\n¿Seguro que desea aplicarla? AVISO: volumen VeraCrypt auto-desmontado Antes de eliminar o desactivar un dispositivo que contenga un volumen montado, debería desmontar el volumen en VeraCrypt primero.\n\nLos desmontajes espontáneos inesperados a menudo son causados por cables que fallan intermitentemente, carcasas defectuosas, etc. Este volumen se creó con TrueCrypt %x.%x pero VeraCrypt sólo soporta volúmenes de TrueCrypt creados con TrueCrypt 6.x/7.x Probar Archivo-clave Retroceso Tabulador Limpiar Intro Pausa Bloqueo Mayúsculas Barra Espaciadora Av. Pág Re. Pág Fin Inicio Flecha Izquierda Flecha Arriba Flecha Derecha Flecha Abajo Seleccionar Imprimir Ejecutar Clave Imprimir Pant. Insertar Borrar Aplicaciones Suspender Bloq. Numérico Bloq. Scroll Explorador atrás Explorador adelante Explorador actualizar Explorador parar Explorador buscar Explorador favoritos Explorador inicio Silencio Bajar Volumen Subir Volumen Pista Siguiente Pista Anterior Detener medio... Reproducir/Pausa Iniciar Clave de Correo Seleccionar Medio Aplicación 1 Aplicación 2 Attn CrSel ExSel Reproducir Zoom Teclado numérico Mayúsculas Control Alt Win B KB MB GB TB PB B/s KB/s MB/s GB/s TB/s PB/s Incluir &PIM cuando se cachee la contraseña de autenticación Incluir PIM cuando se cachee una contraseña Hacer que las unidades de red desconectadas estén disponibles para montaje La contraseña introducida es demasiado larga: su representación en UTF-8 excede de 128 bytes. La contraseña introducida contiene caracteres Unicode que no se pueden convertir a representación UTF-8. Error: Fallo al cargar una librería de sistema. El tamaño de archivo del volumen especificado por línea de comando es incompatible con el sistema de archivos exFAT seleccionado. Aletoriedad Obtenida De Movimientos de Ratón ID del volumen: ID del volumen Usar ID del volumen para montar favorito El valor del ID del volumen es inválido No se ha encontrado ningún volumen con el ID especificado en el sistema Copiar Valor al Portapapeles... No solicitar PIM en la pantalla de autenticación de pre-arranque (El valor PIM se almacenará sin cifrar en disco) AVISO: Sea consciente que si habilita esta opción, el valor PIM se almacenará sin cifrar en disco.\n\n¿Está seguro que quiere habilitar esta opción? El valor máximo del Multiplicador de Iteraciones Personal (Personal Iterations Multiplier - PIM) es 2147468. Saltar la verificación del Disco de Rescate No mostrar mensaje de espera mientras se realizan operaciones No solicitar algoritmo Hash en la pantalla de autenticación de pre-arranque Kuznyechik es un cifrador por bloques publicado en 2015 y definido por la Estándar Nacional de la Federación Rusa GOST R 34.12-2015 y también RFC 7801. Clave 256-bit, bloque 128-bit. El modo de operación es XTS. Conjuntamente desarrollado por Mitsubishi Electric y NTT de Japón. Publicado en el año 2000. Clave 256-bit, bloque 128-bit. Modo de operación es XTS. Ha sido aprobado para su uso por la ISO/IEC, el proyecto NESSIE de la Unión Europea y el proyecto CRYPTREC de Japón. Tiempo Iteraciones Pre-arranque Antes de cifrar una partición, debe crear una Disco de Rescate de VeraCrypt (VeraCrypt Rescue Disk - VRD), el cual sirve los siguientes propósitos:\n\n- Si se daña el Cargador de VeraCrypt, llave maestra u otro dato crítico, el VRD le permite restaurarlo (no obstante, será preciso introducir la contraseña correcta).\n\n- Si Windows se daña y no puede iniciar el sistema, el VRD le permitirá descifrar permanentemente la partición antes de que Windows inicie.\n\n- El VRD contiene una copia de seguridad del cargador de arranque EFI y le permitirá restaurarlo si fuera preciso.\n\nLa imagen ZIP del Disco de Rescate VeraCrypt se creará en la ubicación especificada abajo. La imagen ZIP del Disco de Rescate ha sido creada y almacenada en este fichero:\n%s\n\nAhora necesita extraerlo en una memoria USB que haya sido formateada en el sistema de ficheros FAT/FAT32.\n\n%lsUna vez creado el Disco de Rescate, haga clic en Siguiente para verificar que ha sido creado correctamente. La imagen ZIP del Disco de Rescate ha sido creada y almacenada en este fichero:\n%s\n\nAhora debería extraerlo en una memoria USB que haya sido formateada con el sistema de ficheros FAT/FAT32 o moverlo a una ubicación segura para posterior uso.\n\n%lsHaga clic en Siguiente para continar. IMPORTANTE: Tenga en cuenta que el fichero zip debe extraerse directamente en el directorio raíz de la memoria USB. Por ejemplo, si la letra de unidad de la memoria USB es E:, la extracción del fichero zip debe crear una carpeta E:\\EFI en la memoria USB.\n\n No se puede verificar que el Disco Rescate ha sido correctamente extraído.\n\nSi ha extraído el Disco de Rescate, por favor retire y vuelva a insertar la memoria USB; a continuación haga clic en Siguiente otra vez. Si esto no soluciona el problema, por favor pruebe con otra memoria USB y/o software ZIP.\n\nSi no ha extraído el Disco de Rescate aún, por favor proceda a ello y haga clic en Siguiente.\n\nSi intentó verificar un Disco de Rescate de VeraCrypt creado antes de iniciar este asistente, por favor tenga en cuenta que dicho Disco de Rescate no se puede usar debido a que se creó con una llave maestra diferente. Necesitará extraer una imagen ZIP de Disco de Rescate generada recientemente. No se puede verificar que el Disco de Rescate se haya extraído correctamente.\n\nSi ha extraído la imagen del Disco de Rescate a una memoria USB, por favor, retire y vuelva a insertar la memoria USB; intente nuevamente. Si esto no soluciona el problema, por favor pruebe con otro software ZIP y/o memoria USB.\n\nSi intentó verificar un Disco de Rescate de VeraCrypt creado para una llave maestra, contraseña, salt, etc. diferentes, por favor, tenga en cuenta que esta verificación siempre fallará para dicho Disco de Rescate. Para crear un nuevo Disco de Rescate totalmente compatible con su configuración actual, seleccione 'Sistema' > 'Crear Disco de Rescate'. La imagen ZIP del Disco de Rescate ha sido creada y almacenada en este fichero:\n%s\n\nAhora necesita extraerlo en una memoria USB que haya sido formateada con el sistema de ficheros FAT/FAT32.\n\nIMPORTANTE: Tenga en cuenta que el fichero zip debe extraerse directamente en el directorio raíz de la memoria USB. Por ejemplo, si la letra de unidad de la memoria USB es E:, la extracción del fichero zip debe crear una carpeta E:\\EFI en la memoria USB.\n\nUna vez creado el Disco de Rescate, seleccione 'Sistema' > 'Verificar Disco de Rescate' para verificar se que ha creado correctamente. Usar Escritorio Seguro para introducir la contraseña El tamaño del fichero del volumen especificado por línea de comando es incompatible con el sistema de ficheros ReFS seleccionado. Editar Configuración del Cargador de Arranque Mostrar Información de Plataforma EFI Archivo de Configuración del Cargador de Arranque Información de Plataforma EFI AVISO: Los usuarios inexpertos jamás deberían editar manualmente la configuación del cargador de arranque.\n\n¿Continuar? AVISO: Error al validar el formato XML de la configuración del Cargador de Arranque. Por favor, revise los cambios efectuados. Opciones Avanzadas Se recomienda encarecidamente que cree un nuevo Disco de Rescate de VeraCrypt (el cual tendrá la nueva versión de Cargador de Arranque de VeraCrypt) seleccionando 'Sistema' > 'Crear Disco de Rescate'.\n¿Quiere proceder a ello ahora? Permitir orden TRIM en disco de estado sólido en partición/unidad no de sistema Bloquear orden TRIM en partición/unidad de sistema ERROR: El cargador de sistema EFI de Windows no pudo ser localizado en el disco. La operación será abortada. No es posible al momento cifrar un sistema si SecureBoot está habilitado y si las llaves personales VeraCrypt no están cargadas en el firmware del computador. SecureBoot necesita estar deshabilitado en la configuración del BIOS de manera de permitir que el cifrado del sistema pueda proceder. El texto insertado fue truncado porque la máxima longitud de la contraseña es 128 caracteres. La contraseña ya alcanzó su máxima longitud de 128 caracteres.\nNo se permiten caracteres adicionales. Seleccionar el lenguaje a usar durante la instalación: ERROR: El tamaño del contenedor de archivo es más grande que el espacio en disco disponible. Permitir al Defragmentador de Discos de Windows defragmentar una partición/disco no de sistema ADVERTENCIA: Defragmentar particiones/discos no de sistema puede filtrar metadatos acerca de su contenido o causar dificultades con los volúmenes ocultos que puedan contener.\n\n¿Continuar? Virtual Device The selected mounted volume is not associated with its drive letter in Windows and so it can not be opened in Windows Explorer. Clear encryption keys from memory if a new device is inserted IMPORTANT NOTES:\n - Please keep in mind that this option will not persist after a shutdown/reboot so you will need to select it again next time the machine is started.\n\n - With this option enabled and after a new device is connected, the machine will freeze and it will eventually crash with a BSOD since Windows can not access the encrypted disk after its keys are cleared from memory.\n Iniciando Use CPU hardware random generator as an additional source of entropy Use legacy maximum password length (64 characters) Activate encryption of keys and passwords stored in RAM Comparación: Only create virtual device without mounting on selected drive letter La contraseña introducida es demasiado larga: su representación en UTF-8 excede de 64 bytes. The Hidden volume can't have the same password, PIM and keyfiles as the Outer volume VeraCrypt does not support encrypting a system drive that is already encrypted by BitLocker. Automatically fix boot configuration issues that may prevent Windows from starting Force machine to boot on VeraCrypt in the next startup Force the presence of VeraCrypt entry in the EFI firmware boot menu Force VeraCrypt entry to be the first in the EFI firmware boot menu WARNING: RAM encryption is not compatible with Windows Hibernate and Windows Fast Startup features. VeraCrypt needs to disable them before activating RAM encryption.\n\nContinue? WARNING: Windows Fast Startup is enabled and it is known to cause issues when working with VeraCrypt volumes. It is advised to disable it for better security and usability.\n\nDo you want to disable Windows Fast Startup?