lunes, 19 de octubre de 2015

Criptografía cuántica

Criptografía cuántica
En palabras sencillas la criptografía cuántica es aquella que utiliza la mecánica cuántica para transmitir de forma segura o confidencial información sensible. La criptografía es la técnica de encriptar información de modo que no sea tan fácil entender el significado del mensaje. La cuántica por su parte es la mecánica cuántica hace referencia a la existencia del átomo y su estructura.
El principal problema de la criptografía clásica es justamente el intercambio de claves para cifrar/descifrar el mensaje cifrado, en el caso de la criptografía cuántica permite que dos personas puedan compartir información sensible como claves, de manera segura, y detectando inclusive cuando algún intruso se encuentra en la red husmeando.
A diferencia de la criptografía con clave pública tradicional la criptografía de clave pública no descansa en la complejidad computacional, sino en la mecánica cuántica. La criptografía cuántica utiliza la luz para transmitir información a través de láseres, el foton; conduciendo la información por fibra óptica.
Conceptos de la mecánica cuántica:

-             -  Superposición: una misma partícula puede poseer dos estados a la vez.

-             - Colapso de estados: al ser medida una partícula se altera su estado superpuesto determinado en           que estado particular.

-             - Incertidumbre: es imposible saber el valor exacto de la posición y momentum. Cuanto más                 precisa sea la medición sobre una propiedad, mayor será la incertidumbre de la otra propiedad.
-         
              - Entrelazamiento: Dos partículas cuánticas pueden tener estados fuertemente ligados, debido a que    se generaron al mismo tiempo o a que interactuaron, Ej. Durante un choque.
   
Las partículas que se utilizan normalmente en la criptografía cuántica son los componentes de la luz o fotones, y los estados de utilizan para ser entrelazados o superpuestos.
Intercambio de claves cuánticas

BB84
Protocolo publicado por Charles Bennett y Gilles Brassard en 1984. En este protocolo la transmisión se logra utilizando fotones polarizados enviados entre A y B a través de un canal cuántico (Fibra Óptica), también es necesario otro canal público para construir la clave secreta compartida, no es necesario que los canales sean seguros.

Paso 1
Cuando el punto A, decide enviar una secuencia de fotones polarizados al punto B inicia el protocolo. El punto A, genera una secuencia aleatoria de bases (rectilíneas + y diagonales x) las cuales se almacenan momentáneamente, luego se envía por un canal cuántico.

Paso 2
El punto B, no sabe cuáles fueron las bases que uso el punto A, así que inicia midiendo la polarización de los fotones usando una base aleatoria generada por el y registra las bases que utilizaó.

Paso 3
A y B se contactan por el canal público para comunicarse las bases que utilizaron para generar y leer respectivamente. Una vez conocida la clave secreta de ambos pasa al siguiente paso.

Paso 4
Debido a que utilizaron un canal inseguro, alguien pudo haber modificado la polarización de los fotones así que A y B deben comprobar que los bits que no fueron descartados coincidan en su valor, si un intruso intenta medir los fotones no sabe en que base se generaron, por lo que tiene que hacer mediciones al azar lo cual introduciría perturbación a los protones alterando su comportamiento.
Paso 5

“Para codificar un mensaje se puede utilizar el mismo canal cuántico con fotones polarizados, o utilizar el canal público cifrando el mensaje con un algoritmo de cifrado, ya que la clave para el cifrado se ha transmitido de manera absolutamente segura

Implentación de la criptografía cuántica
“Basado en estos principios, se definen protocolos de comunicación que utilizan la polarización de los fotones para codificar información binaria que conformará la clave secreta. Estos protocolos incluyen mecanismos de corrección en caso de errores de transmisión.”

“Los primeros productos comerciales de criptografía cuántica salieron al mercado en 2002. Desde entonces los avances no dejan de producirse y la adopción de esta tecnología, si bien lenta al principio, tiende a acelerarse.”

Referencias
.Seguridad. (2013). Criptografía cuántica. 20/10/2015, de DEFENSA DIGITAL Sitio web: http://revista.seguridad.unam.mx/numero-18/criptograf%C3%AD-cu%C3%A1ntic


Dra. Alfonsa García, Dr. Francisco García, Dr. Jesús García. (2014). Curso: Computación y Criptografía Cuántica. 20/10/2015, de Universidad Politécnica de Madrid Sitio web: http://www.criptored.upm.es/crypt4you/temas/cuantica/leccion2/leccion02.html




lunes, 21 de septiembre de 2015

Maquina enigma

La criptografía, palabra que procede del griepo krypto (oculto) y graphos (escritura), es la disciplina científica que se encarga del cifrado y descifrado de mensajes, es decir, enmascarar mensajes mediante un algoritmo de ofuscación que, además, debe permitir devolver el mensaje a su estado original.

Hubo un sistema de cifrado que fue usado por Alemania y que tuvo en jaque a los aliados, sobre todo, en el Atlántico Norte, donde los convoys de material procedente de Estados Unidos caían presa de los submarinos alemanes que se comunicaban entre sí utilizando el código que generaba uno de los inventos más fascinantes de esa época, la máquina Enigma.

La máquina Enigma fue inventada por un ingeniero alemán, Arthur Scherbius que aplicaba un algoritmo de sustitución de unas letras por otras.

¿En qué consistía la máquina Enigma?
Era un dispositivo electromecánico, es decir, tenía una parte eléctrica y otra mecánica. El mecanismo consistía en una serie de teclas, con las letras del alfabeto, al igual que una máquina de escribir, que en realidad eran interruptores que accionaban los dispositivos eléctricos y hacían mover unos cilindros rotatorios.

El funcionamiento, cara al usuario, era bastante sencillo. El operador tenía que teclear las letras de su mensaje y anotar las letras que devolvía la máquina (a través de un alfabeto que se iba iluminando).

 El código a usar se fijaba con las posiciones de los cilindros que constaban, cada uno, de 26 cables que se conectaban al teclado pero, con la particularidad, que el primer cilindro giraba un veintiseisavo de vuelta después de cada pulsación, de tal manera que la posición de las conexiones iba cambiando con cada entrada del teclado, obteniendo un cifrado polialfabético.

Durante la Segunda Guerra Mundial, Alemania contaba con una enorme ventaja porque el código de Enigma era, prácticamente, indescifrable; además, el ejército alemán cambiaba cada día el código a usar, de tal forma que los Aliados contaban con un único día para descifrarlo porque, al otro día, se volvía a cambiar (algo que enviaban codificando la clave del día siguiente durante la transmisión codificada del día).

¿Y cómo se logró vencer a Enigma?
 La máquina fue vencida gracias a varios factores:

> Estas databan de 1923 y eran modelos comerciales que se distribuyeron por todo el mundo. Si bien es cierto que las máquinas se fueron complicando en sus versiones militares, el principio de funcionamiento ya era conocido.

> La codificación de un mensaje en Enigma obligaba a los operadores a introducir 3 letras, dos veces, al iniciar el mensaje, una especie de bandera. La Luftwaffe no modificaba esta secuencia y, por tanto, era un patrón que siempre se repetía y que fue aprovechado por Marian Rejewski que fue capaz de descifrar el código gracias a unas máquinas electromecánicas denominadas bombas criptológicas que eran unas máquinas Enigma de procesamiento en paralelo y que buscaban las codificaciones posibles. Los criptógrafos polacos trabajaron junto a los británicos en Bletchley Park para descifrar los códigos alemanes (en este equipo se encontraba Alan Turing).

> El 9 de mayo de 1941 la Royal Navy capturó el submarino alemán U-110 (a cuya tripulación del fallaron las cargas explosivas para hundirlo) y pudo hacerse con una máquina Enigma y con el preciado libro de claves. Esta captura se mantuvo en secreto y se hizo creer a la opinión pública que el submarino había sido hundido, para que las claves no fuesen cambiadas.

Referencias
Martin Oberzalek. (2000). Enigma - a very famous story of cryptology. 21/09/2015, de mlb Sitio web: http://www.mlb.co.jp/linux/science/genigma/enigma-referat/enigma-referat.html

JJ Velasco. (211). La máquina Enigma, el sistema de cifrado que puso en jaque a Europa. 21/09/2015, de Hipertextual Sitio web: http://hipertextual.com/2011/07/la-maquina-enigma-el-sistema-de-cifrado-que-puso-en-jaque-a-europa


sábado, 12 de septiembre de 2015

BYOD

BYOD(Tráigase su propio dispositivo)

Es un acrónimo que viene de Bring Your Own Device consiste en “una política que permite a los empleados llevar dispositivos móviles de su propiedad (ordenadores portátiles, tabletas y teléfonos inteligentes) a su lugar de trabajo, y usar esos dispositivos para acceder a información y aplicaciones de la compañía”. Wikipedia. (2015).

 El término también se utiliza para describir la misma práctica cuando se aplica a los estudiantes que usan dispositivos de su propiedad en el marco de la educación.

En ese sentido se pueden ver dos clasificaciones: la primera que la empresa les proporcione un dispositivo para sus actividades o bien que los usuarios lleven sus propios dispositivos. En el primer caso las razones están inspiradas generalmente en estas razones:
 §  Experiencia de usuario y lealtad.
 § Aumento de la productividad.
 § Ahorro de costes.
 §  La red como activo de las TIC inteligentes.

En algunas empresas sobre todo de marketing los teléfonos, tablets, etc. Son de vital importancia para su trabajo pero que tan rentable es dotar a los empleados de IPAD’s o IPHONE’s, en lugar de utilizar dispositivos similares pero más económicos, en algunas empresas les interesa mucho la imagen que dan hacia sus empleados, por lo tanto prefieren invertir en dispositivos de Apple pero dependiendo el servicio o el giro de la empresa a veces sólo es necesario otro dispositivo económico.

En este mismo caso la empresa debe proporcionar a los usuarios conexiones a red seguras para evitar que intrusos husmen en la red de la universidad.

En el otro caso, cuando los usuarios llevan sus propios dispositivos realmente es difícil controlarlos porque actualmente tienen conexiones a datos su proveedor de telefonía, en otro caso el administrador de red, debe proporcionar a los usuarios seguridad y confidencialidad en la red, es un trabajo un complicado cuando se trata de una empresa grande ya que puede haber usuarios que llevan al trabajo uno, dos o hasta más dispositivos que están conectados a la red lo cual puede ser complicado para la red ya que cada dispositivo genera tráfico en la red.

Inconvenientes
El mayor riesgo puede ser no saber que BYOD esté ocurriendo en nuestra organización o que hagamos como que no sabemos, cuando un usuario lleva se propio dispositivo y lo conecta a la red de la organización genera tráfico en la red, lo cual en lugar de ayudar le puede pegar al rendimiento de la red y en consecuencia que las aplicaciones que estén corriendo en red se vean afectadas.

Otro aspecto importante es la seguridad en la red, si no se tiene un control de la red y permitimos que cualquier dispositivo (laptop, smartphone, tablet, etc.) se conecten a nuestra red, puede haber usuarios que husmen dentro de nuestra red o inclusive modifiquen la información que se está transmitiendo o dicho de otro modo que hackers invadan nuestra red.

Política BYOD activa
El BYOD existe prácticamente en todas las organizaciones por lo tanto debe ser administrado para que no genere un descontrol y se pueda aprovechar sus ventajas y al mismo tiempo evitar sufrir sus inconvenientes.

Debe existir una política bien definida para que los usuarios usen o no sus dispositivos dentro de la organización tomando en cuenta la relación costo/beneficio.

 









Referencias

Wikipedia. (2015). BYOD. 12/09/2015, de Wikipedia Sitio web: https://es.wikipedia.org/wiki/BYOD

martes, 25 de agosto de 2015

Firma Digital

Firma Digital

Cada día es más común el intercambio de información en internet ya sea por mensajes en WhatsApp, correo, archivos adjuntos, etc. Internet hoy en día proporciona una de las mejores alternativas de comunicación porque es rápida y de bajo costo, pero, ¿Qué tan seguro es transmitir la información sin ser cambiada? Es muy común entre los usuarios de internet asegurara que ellos no enviaron una determinada información ¿Cómo poder comprobar el verdadero origen e identidad de la persona que escribe?

En el mundo tradicional la forma en cómo asegurarnos en que alguien recibió un mensaje es hacer que esa persona haga su firma autógrafa sobre el documento y compara su firma que en teoría sólo esa persona la puede hacer, sin embargo, ¿Cómo es posible hacerlo en un documento digital?

Justamente la firma digital surge para evitar que un documento sea modificado, o que alguien niegue que no es lo que firmo originalmente.

¿Qué es?
Es una herramienta tecnológica que nos permite asegurar el origen de un documento o mensaje y verificar que su contenido no ha sido alterado luego de ser firmado. Un documento electrónico firmado digitalmente tiene la misma validez jurídica que un documento en papel firmado de puño y letra garantizando que no pueda ser objeto de repudio.

¿Dónde se utiliza?
Actualmente la firma digital tiene muchas aplicaciones: se utiliza para hacer trámites con entidades públicas tales como declaraciones de impuestos, operaciones judiciales, bancarias, contratos a distancia y documentos de comercio exterior. Además algunas veces es usada como autentificación en internet.

¿Cómo funciona?
La firma digital es una secuencia única de letras y números que vincula al firmante con un documento electrónico, para firmar digitalmente una persona necesita:

     1. Dos claves asociadas entre sí que se generan utilizando funciones criptográficas seguras (algoritmos matemáticos), una de estas claves es secreta y sólo es conocida por esa persona, de esa forma nadie más conoce esa clave y por lo tanto nadie puede imitar tu firma.

      2. La segunda clave en cambio es pública y sirve para que el destinatario pueda verificar la firma hecha por el autor y comprobar que fue éste quien la produjo.
La clave pública está contenida en un certificado digital, junto con la información personal del firmante.

     3. Solicitar certificado digital en un centro certificador (Ej. SAT, en el caso de México), este certificado sirve para asegurar que la clave pública pertenece a una determinada persona.

¿Cómo obtener una firma digital?
Cuando una persona necesita una firma para algún trámite, debe cumplir con una serie de requisitos y paso:
      -  Llenar un trámite de registro (datos personales) en la página del ente certificador.
      -  Presentarse físicamente al ente certificador para comprobar identidad.
      -  El ente certificador emitirá un certificado digital que le permitirá a la persona poder
         firmar digitalmente sus documentos importantes.

Una firma digital puede cambiarse o destruirse en un determinado tiempo.

Firma electrónica avanzada (FIEL)
La Fiel es una firma digital que permite de manera única, en México se le conoce como Firma electrónica avanzada.

La fiel sustituye a la firma autógrafa para algunos trámites y tiene el mismo peso jurídico. Tiene cuatro elementos de seguridad:

     - Registro Federal de Contribuyentes (RFC)
     - Llave privada: se genera en una aplicación que proporciona el SAT y genera un archivo .key
     - Llave pública (conocido como certificado)
     - Contraseña de la llave privada

Al momento del trámite presencial se registra información biométrica para generar el certificado:
     - Huellas dactilares
     - Fotografía del iris
     - Fotografía de rostro
     - Firma autógrafa

De este modo la Fiel brinda seguridad a las transacciones electrónicas de los contribuyentes por lo que puede utilizarse en los siguientes servicios fiscales:
     -  Declaración anual.
     -  Factura electrónica
     -  Devoluciones automáticas
     - Pedimentos aduanales
      Dictámenes y expediente integral
     -  Donatarias autorizadas
      Padrón de importadores, etc.

¿Cómo se tramita?
     - Documentos de identificación
     - Formato FE (solicitud de la FIEL)
     - Usb o disco compacto con archivo .req generado con la aplicación SOLCEDI
     - Toma de información biométrica.

Referencias

miércoles, 11 de marzo de 2015

Crar Jar Netbeans con librerias externas

CREAR UN ARCHIVO JAR NETBEANS CON LIBRERÍAS EXTERNAS

A principios de cuenta es necesario saber que en Netbeans puedes crear un archivo .jar haciendo clic en clear and build y si existen librerías externas Netbeans las guardara en una carpeta lib. 

La carpeta lib estará contenida dentro de la carpeta dist, donde también estará el jar que hemos creado.

Una vez dicho esto conozco dos maneras de incluir las librerías para que nuestro archivo .jar se ejecute sin problemas.

  1. Agregar la carpeta lib en el directorio donde pondremos nuestro archivo .jar para cuando necesite alguna librería la tome de la carpeta lib.
  2. La segunda forma de incluir en un archivo .jar se describe a continuación.
Crear un archivo distribuible jar para poder usar las aplicaciones que haces en java no tiene mucha ciencia y sino quieres meterle nada especial y simplemente quieres que se ejecute el programita en cuestión con netbeans tienes que hacer lo siguiente:
  1. Establecer el proyecto del que quieres obtener el jar como proyecto principal
  2. Ir al menú Run y elegir Clean and Build Main Proyect o pulsar Mayúsculas+F11
Otra opción es haciendo click derecho en el proyecto elegido elegir Clean and Build y se obtiene lo mismo. Lo hagas de la forma que lo hagas la primera vez hay que elegir Clean and Build y luego si quieres puedes usar Build o Build Main Proyect (ó F11).
El .jar resultante esta en la carpeta dist dentro del proyecto de netbeans.
Pero si has usado alguna librería externa netbeans no te la incluye en el jar sino que la deja mete en la carpeta lib (que también esta dentro de la carpeta dist). Para incluir la librería externa en el jar tienes que hacer lo siguiente:
  1. Descomprime el jar (Si usas winrar elige extraer aquí) y tendrás la carpeta lib y las dos que había dentro del jar META-INF y otra que tendrá el nombre de tu aplicación.
  2. Abre el archivo MANIFEST.MF que esta en la carpeta META-INF y modifica la ruta en la que buscará las librerías. Por ejemplo si tenemos Class-Path: lib/log4j-1.2.16.jar para que funcione al incluir la carpeta lib dentro del .jar la ruta deberá de ser Class-Path: ./lib/log4j-1.2.16.jar.
  3. Selecciona las 3 carpetas, botón derecho Añadir al archivo… le pones el nombre de tu aplicación (si quieres) eliges ZIP como formato del archivo y le das a aceptar (Si no usas winrar comprímelo en un ZIP como se haga teniendo en cuenta que lo que necesitas es comprimir las 3 carpetas sin que estén dentro de otra porque sino no funcionará el jar).
  4. Ahora solo queda cambiar la extensión del archivo resultante de .zip a .jar y ya tienes tu jar listo y con tus librerías externas incluidas.
Así de rápido y sencillo es incluir librerías (imágenes, los .java o lo que quieras) en el jar del proyecto usando NetBeans.
IMPORTANTE
Esta segunda forma de incluir librerías externas dentro de un archivo ,jar fue información totalmente copiada textualmente de la siguiente página: http://programandoointentandolo.com/2013/04/crear-archivo-jar-en-netbeans-con-librerias-externas.html





lunes, 9 de febrero de 2015

Editor "VI"

Editor "vi"

La siguiente información fue recuperada en su totalidad de: http://iie.fing.edu.uy/~vagonbar/unixbas/editorvi.htm

Uso básico de vi.

El editor vi es un editor de texto de pantalla completa que maneja en memoria el texto entero de un archivo. Es el editor clásico de UNIX; está en todas las versiones. Puede usarse en cualquier tipo de terminal con un mínimo de teclas; esto lo hace difícil de usar hasta que uno se acostumbra.Existe un editor vi ampliado llamado vim que contiene facilidades adicionales, así como diversas versiones del vi original. En todos los casos, el conjunto de comandos básicos es el mismo.
Existen en UNIX otros editores más potentes y versátiles, como emacs, que provee un ambiente de trabajo completo; también versiones fáciles de manejar como jove o pico, o aún mínimas e inmediatas como ae. En ambiente X-Windows hay muchos editores amigables, fáciles de usar y con múltiples capacidades. No obstante, vi está en todos los UNIX, requiere pocos recursos, se usa mucho en administración, para programar y en situaciones de emergencia. En casos de roturas de discos, corrupción de sistemas de archivos, errores en el arranque y otras catástrofes, puede ser el único editor disponible. Como la mayoría de las configuraciones en UNIX se manejan editando archivos, disponer de esta capacidad es esencial en la administración de un sistema.

Modos de vi.

Existen tres modos o estados en vi:
  • modo comando: las teclas ejecutan acciones que permiten desplazar el cursor, recorrer el archivo, ejecutar comandos de manejo del texto y salir del editor. Es el modo inicial de vi.
  • modo texto o modo inserción: las teclas ingresan caracteres en el texto.
  • modo última línea o ex: las teclas se usan para escribir comandos en la última línea al final de la pantalla.

Guía de supervivencia.

Con unos pocos comandos básicos se puede ya trabajar en vi editando y salvando un texto:
vi arch1  arranca en modo comando editando el archivo arch1
i         inserta texto a la izquierda del cursor
a         agrega texto a la derecha del cursor
ESC       vuelve a modo comando
x         borra el caracter bajo el cursor
dd        borra una línea
h o flecha izquierda     mueve el cursor un caracter a la izquierda
j o flecha abajo         mueve el cursor una línea hacia abajo
k o flecha arriba        mueve el cursor una línea hacia arriba
l o flecha derecha       mueve el cursor un caracter a la derecha
:w        salva el archivo (graba en disco)
:q        sale del editor (debe salvarse primero)

Uso avanzado de vi.

Invocación de vi.


  vi
abre la ventana de edición sin abrir ningún archivo.
  vi arch1
edita el archivo arch1 si existe; si no, lo crea.
  vi arch1 arch2
edita sucesivamente los archivos arch1 y luego arch2.
  vi +45 arch1
edita el archivo arch1 posicionando el cursor en la línea 45.
  vi +$ arch1
edita el archivo arch1 posicionando el cursor al final del archivo.
  vi +/Habia arch1
edita el archivo arch1 en la primera ocurrencia de la palabra "Habia".

Cambio de modo.


comando a texto:
   teclas de inserción i I a A o O, o

   tecla de sobreescritura R.
texto a comando:
   tecla ESC.
comando a última línea:
   teclas : / ?
última línea a comando:
   tecla ENTER (al finalizar el comando), o
   tecla ESC (interrumpe el comando).

 
Confundir un modo con otro la de mayor dificultades para el manejo de vi. Puede activarse un indicador de modo escribiendo
  :set showmode
Esto hace aparecer una leyenda que indica si se está en modo comando o inserción.

Modo Comando.

El editor vi, al igual que todo UNIX, diferencia mayúsculas y minúsculas. Confundir un comando en minúscula digitando uno en mayúscula suele tener consecuencias catastróficas. Se aconseja evitar sistemáticamente el uso de la traba de mayúsculas; mantener el teclado en minúsculas.

Números multiplicadores.

Muchos comandos aceptan un número multiplicador antes del comando. La acción es idéntica a invocar el comando tantas veces como indica el multiplicador. Ejemplos:
  10j
en modo comando avanza 10 líneas;
  5Y
copia 5 líneas y las retiene para luego pegar.

Ejemplos de manejo.

Los siguientes ejemplos de manejo asumen que el editor se encuentra en modo comando.
flechas       mueven el cursor (si el terminal lo permite)

h j k l       mueven el cursor (igual que las flechas)
itextoESC     inserta la palabra "texto" y vuelve a comando
x             borra el caracter sobre el cursor
dw            borra una palabra
dd            borra una línea
3dd           borra las 3 líneas siguientes
u             deshace último cambio
ZZ            graba cambios y sale de vi
:q!ENTER      sale de vi sin grabar cambios
/expresiónENTER     busca la expresión indicada
3Y            copia 3 líneas para luego pegar
:6r arch3     inserta debajo de la líne 6 el archivo arch3

Movimiento del cursor:

flechas      mover en distintas direcciones

h o BS       una posición hacia la izquierda
l o SP       una posición hacia la derecha
k o -        una línea hacia arriba
j o +        una línea hacia abajo
$            fin de línea
0            principio de línea
1G           comienzo del archivo
G            fin del archivo
18G          línea número 18
Ctrl-G       mostrar número de línea actual
w            comienzo de la palabra siguiente
e            fin de la palabra siguiente
E            fin de la palabra siguiente antes de espacio
b            principio de la palabra anterior
^            primera palabra de la línea
%            hasta el paréntesis que aparea
H            parte superior de la pantalla
L            parte inferior de la pantalla
M            al medio de la pantalla
23|          cursor a la columna 23

Control de pantalla.

Ctrl-f    una pantalla adelante

Ctrl-b    una pantalla atrás
Ctrl-l    redibujar la pantalla
Ctrl-d    media pantalla adelante
Ctrl-u    media pantalla atrás

Ingreso en modo texto:

i    insertar antes del cursor
I    insertar al principio de la línea
a    insertar después del cursor
A    insertar al final de la línea
o    abrir línea debajo de la actual
O    abrir línea encima de la actual
R    sobreescribir (cambiar) texto

Borrar

x     borrar caracter bajo el cursor

dd    borrar línea, queda guardada
D     borrar desde cursor a fin de línea
dw    borrar desde cursor a fin de palabra
d$    borrar desde cursor a fin de línea
d0    borrar desde cursor a principio de línea

Copiar y pegar

Y o yy      copiar línea

P           pegar antes del cursor
p           pegar después del cursor
yw          copiar palabra
y$          copiar de cursor a fin de línea
"ayy o "aY  copiar línea en buffer llamado 'a'
'a' "ayw    copiar palabra en buffer llamado
"ap         pegar desde buffer 'a', a la derecha del cursor
"aP         pegar desde buffer 'a', a la izquierda del cursor
"bdd        borrar línea y guardar en buffer 'b'
"bdw        borrar palabra y guardar en buffer 'b'

Búsqueda

/str    buscar hacia adelante cadena de caracteres 'str'

?str    buscar hacia atrás cadena de caracteres 'str'
n       repetir último comando / o ?
N       repetir último comando / o ? para el otro lado
fc      buscar el siguiente caracter 'c' en la línea
Fc      buscar el anterior caracter 'c' en la línea
tc      ir al caracter anterior al siguiente 'c'
Tc      ir al caracter posterior al precedente 'c'
;       repetir el último comando f, F, t, o T
,       último comando f, F, t, o T para el otro lado
La cadena a buscar en / o ? puede ser una expresión regular. 
La acción de f, F, t y T alcanza sólo a la línea actual; si el caracter buscado no está en esa línea el cursor no se mueve.

Reemplazo

Estos comandos admiten multiplicadores: un número delante del comando. Al dar un comando de reemplazo el editor coloca un símbolo $ en donde termina el pedido de reemplazo. El usuario escribe normalmente, sobreescribiendo, hasta donde necesite, y sale con ESC. Estos comandos admiten multiplicadores: 3cw abre un área de reemplazo para 3 palabras.
c         reemplaza caracteres
cw        reemplaza palabras
C o c$    reemplaza hasta el fin de línea
c0        reemplaza desde el comienzo de línea

Otros

J     unir dos líneas en una

ZZ    grabar cambios si los hubo y salir
u     deshacer última acción
U     deshacer todos los cambios en una línea

Modo Texto.

BS    borrar caracter hacia la izquierda

ESC   pasar a modo comando

Modo ex o última línea.

:q            salir si no hubo cambios
:q!           salir sin guardar cambios
:w            guardar cambios
:w arch1      guardar cambios en archivo arch1
:wq           guardar cambios y salir
:r arch2      insertar un archivo
:e arch2      editar un nuevo archivo
:e! arch2     idem sin salvar anterior
:r! comando   insertar salida de comando
:shell        salir al shell (vuelve con exit)

Mover

:1    mueve a línea 1 
:15   mueve a línea 15 
:$    mueve a última línea

Opciones

:set                cambio de opciones 
:set nu             mostrar números de línea 
:set nonu           no mostrar números de línea 
:set showmode       mostrar modo actual de vi 
:set noshowmode     no mostrar modo actual de vi

Reemplazo


La sintaxis del comando de búsqueda y reemplazo es la siguiente:
  :<desde>,<hasta>s/<buscar>/<reemplazar>/g
<desde><hasta> indican líneas en el archivo; <buscar> y <reemplazar> son cadenas de caracteres o expresiones regulares; / es un separador, s (sustituir) y g (global) son letras de comando para el manejo de expresiones regulares.
 

 :1,$s/Martes/martes/g
cambia Martes por martes en todo el archivo.
  :.,5s/ayuda/&ndo/g
cambia ayuda por ayudando desde línea actual hasta la 5a. línea.

Tipo de terminal.

vi es independiente del tipo de terminal, pero la variable de ambiente TERM debe estar fijada correctamente. Si no se conoce o no existe el tipo exacto de terminal, en la mayoría de los terminales remotos el tipo ansi da buenos resultados. Para fijar el terminal en tipo ansi, digitar
TERM=ansi;export TERM
Algunos comandos, especialmente more y a veces vi, pueden no responder bien en la terminal o el emulador que se está usando. En estos casos, puede usarse Ctrl-L para refrescar la pantalla. 

Fuente:
http://iie.fing.edu.uy/~vagonbar/unixbas/editorvi.htm