|
|
|
|
6
|
|
6
|
|
7
|
[Verano 2016 - Ive - Coralys]
|
7
|
[Verano 2016 - Ive - Coralys]
|
8
|
|
8
|
|
9
|
-En casi todas las instancias en que queremos resolver un problema seleccionamos una o más opciones dependiendo de si se cumplen o no ciertas condiciones. Los programas de computadoras se construyen para resolver problemas y, por lo tanto, deben tener una estructura que permita tomar decisiones y seleccionar alternativas. En C++ las selecciones se estructuran utilizando `if`, `else`, `else if` o `switch`. Muchas veces el uso de estas estructuras también envuelve el uso de expresiones de relación y operadores lógicos. En la experiencia de laboratorio de hoy, practicarás el uso de algunas estructuras de selección completando el diseño de una aplicación que determina la fortaleza de una contraseña de acceso ("password").
|
|
|
|
|
9
|
+En casi todas las instancias en las cuales queremos resolver un problema seleccionamos una o más opciones dependiendo de si se cumplen o no ciertas condiciones. Los programas de computadoras se construyen para resolver problemas y, por lo tanto, deben tener una estructura que permita tomar decisiones y seleccionar alternativas. En C++ las selecciones se estructuran utilizando `if`, `else`, `else if` o `switch`. Muchas veces el uso de estas estructuras también envuelve el uso de expresiones de relación y operadores lógicos. En la experiencia de laboratorio de hoy, practicarás el uso de algunas estructuras de selección, completando el diseño de una aplicación que determina la fortaleza de una contraseña de acceso ("password").
|
10
|
|
10
|
|
11
|
## Objetivos:
|
11
|
## Objetivos:
|
12
|
|
12
|
|
|
|
|
|
20
|
|
20
|
|
21
|
1. Haber repasado los siguientes conceptos:
|
21
|
1. Haber repasado los siguientes conceptos:
|
22
|
|
22
|
|
23
|
- a. Operadores lógicos
|
|
|
|
|
23
|
+ a. operadores lógicos
|
24
|
|
24
|
|
25
|
b. `if`, `else`, `else if`.
|
25
|
b. `if`, `else`, `else if`.
|
26
|
|
26
|
|
|
|
|
|
39
|
|
39
|
|
40
|
Utilizar contraseñas de acceso resistentes es esencial para mantener los datos seguros en los sistemas de información. Una contraseña se considera resistente o fuerte si resulta costo-inefectivo para el "pirata informático" ("hacker") emplear tiempo tratando de adivinarla usando contraseñas ingenuas o fuerza bruta. Por ejemplo, una contraseña que consiste de una palabra simple del diccionario, sin números, símbolos o letras mayúsculas, es tan fácil de descifrar que hasta "un cavernícola puede hacerlo".
|
40
|
Utilizar contraseñas de acceso resistentes es esencial para mantener los datos seguros en los sistemas de información. Una contraseña se considera resistente o fuerte si resulta costo-inefectivo para el "pirata informático" ("hacker") emplear tiempo tratando de adivinarla usando contraseñas ingenuas o fuerza bruta. Por ejemplo, una contraseña que consiste de una palabra simple del diccionario, sin números, símbolos o letras mayúsculas, es tan fácil de descifrar que hasta "un cavernícola puede hacerlo".
|
41
|
|
41
|
|
42
|
-Como no existe un sistema oficial para medir las contraseñas, utilizaremos fórmulas creadas por el "passwordmeter" para evaluar la fortaleza general de una contraseña dada [1]. Te recomendamos que juegues un poco con la aplicación en http://passwordmeter.com para que entiendas cómo debe comportarse la aplicación que estarás implementando en esta experiencia de laboratorio. La fortaleza de la contraseña se cuantificará otorgando puntos por utilizar "buenas" técnicas de selección de contraseñas (como utilizar mezclas de símbolos y letras) y restando puntos por utilizar "malos" hábitos en las contraseñas (como utilizar solo letras minúsculas o símbolos consecutivos de un mismo tipo).
|
|
|
|
|
42
|
+Como no existe un sistema oficial para medir las contraseñas, utilizaremos fórmulas creadas por el "passwordmeter" para evaluar la fortaleza general de una contraseña dada [1]. Te recomendamos que juegues un poco con la aplicación en http://passwordmeter.com para que entiendas cómo debe comportarse la aplicación que estarás implementando en esta experiencia de laboratorio. La fortaleza de la contraseña se cuantificará otorgando puntos por utilizar buenas técnicas de selección de contraseñas (como utilizar mezclas de símbolos y letras) y restando puntos por utilizar malos hábitos en las contraseñas (como utilizar solo letras minúsculas o símbolos consecutivos de un mismo tipo).
|
43
|
|
43
|
|
44
|
Las siguientes tablas resumen los valores añadidos y sustraídos para varias características en las contraseñas.
|
44
|
Las siguientes tablas resumen los valores añadidos y sustraídos para varias características en las contraseñas.
|
45
|
|
45
|
|
|
|
|
|
61
|
| 6. | Dígitos o símbolos en el medio | $$2n$$ | $$n$$ es el número de dígitos y símbolos en el medio |
|
61
|
| 6. | Dígitos o símbolos en el medio | $$2n$$ | $$n$$ es el número de dígitos y símbolos en el medio |
|
62
|
| 7. | Requisitos | ![criterios.png](images/small/criterios.png) | $$n$$ es el número de criterios que se cumplen |
|
62
|
| 7. | Requisitos | ![criterios.png](images/small/criterios.png) | $$n$$ es el número de criterios que se cumplen |
|
63
|
|
63
|
|
64
|
-**Tabla 1.** Criterios positivos para la fortaleza de la contraseña.
|
|
|
|
|
64
|
+**Tabla 1.** Criterios positivos para la fortaleza de la contraseña.
|
65
|
|
65
|
|
66
|
---
|
66
|
---
|
67
|
|
67
|
|
68
|
-Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para **sumas**.
|
|
|
|
|
68
|
+Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para **sumar puntos**.
|
69
|
|
69
|
|
70
|
-1. **Número de caracteres**: Este es el criterio más simple. La puntuación es $$4$$ veces el largo de la contraseña. Por ejemplo, `"ab453"` tiene un conteo de $$5$$ y puntuación de $$4 \cdot 5 = 20$$.
|
|
|
|
|
70
|
+1. **Número de caracteres:** este es el criterio más simple. La puntuación es $$4$$ veces el largo de la contraseña. Por ejemplo, `"ab453"` tiene un conteo de $$5$$ y puntuación de $$4 \cdot 5 = 20$$.
|
71
|
|
71
|
|
72
|
-2. **Letras mayúsculas** La puntuación es $$2 \left(len - n \right)$$ si la contraseña consiste de una mezcla de letras mayúsculas **y** al menos otro tipo de caracter (minúscula, dígitos, símbolos). De lo contrario, la puntuación es $$0$$. Por ejemplo:
|
|
|
|
|
72
|
+2. **Letras mayúsculas:** la puntuación es $$2 \left(len - n \right)$$ si la contraseña consiste de una mezcla de letras mayúsculas **y** al menos otro tipo de caracter (minúscula, dígitos, símbolos). De lo contrario, la puntuación es $$0$$. Por ejemplo:
|
73
|
|
73
|
|
74
|
a. La puntuación para `"ab453"` sería $$0$$ ya que no tiene letras mayúsculas (el conteo también es $$0$$).
|
74
|
a. La puntuación para `"ab453"` sería $$0$$ ya que no tiene letras mayúsculas (el conteo también es $$0$$).
|
75
|
|
75
|
|
|
|
|
|
77
|
|
77
|
|
78
|
c. La puntuación para `"SANC8in"` sería $$2 \left(7-4\right) = 6$$ porque la contraseña es de largo $$7$$, contiene $$4$$ letras mayúsculas, y contiene caracteres de otro tipo (el conteo es $$4$$).
|
78
|
c. La puntuación para `"SANC8in"` sería $$2 \left(7-4\right) = 6$$ porque la contraseña es de largo $$7$$, contiene $$4$$ letras mayúsculas, y contiene caracteres de otro tipo (el conteo es $$4$$).
|
79
|
|
79
|
|
80
|
-3. **Letras minúsculas** La puntuación es $$2 \left(len - n\right)$$ si la contraseña es una mezcla de letras minúsculas **y** al menos otro tipo de caracter (mayúscula, dígitos, símbolos). De lo contrario, la puntuación es $$0$$. Por ejemplo:
|
|
|
|
|
80
|
+3. **Letras minúsculas:** La puntuación es $$2 \left(len - n\right)$$ si la contraseña es una mezcla de letras minúsculas **y** al menos otro tipo de caracter (mayúscula, dígitos, símbolos). De lo contrario, la puntuación es $$0$$. Por ejemplo:
|
81
|
|
81
|
|
82
|
a. La puntuación para `"ab453"` sería $$2 \left(5-2\right) = 6$$ porque la contraseña es de largo $$5$$, contiene $$2$$ letras minúsculas, y contiene caracteres de otro tipo. El conteo es $$2$$.
|
82
|
a. La puntuación para `"ab453"` sería $$2 \left(5-2\right) = 6$$ porque la contraseña es de largo $$5$$, contiene $$2$$ letras minúsculas, y contiene caracteres de otro tipo. El conteo es $$2$$.
|
83
|
|
83
|
|
|
|
|
|
85
|
|
85
|
|
86
|
c. La puntuación para `"sancochin"` sería $$0$$ porque contiene **solo** letras minúsculas. El conteo es $$9$$.
|
86
|
c. La puntuación para `"sancochin"` sería $$0$$ porque contiene **solo** letras minúsculas. El conteo es $$9$$.
|
87
|
|
87
|
|
88
|
-4. **Dígitos** La puntuación es $$4n$$ si la contraseña consiste de una mezcla de dígitos **y** al menos otro tipo de caracter (minúscula, mayúscula, símbolos). De otro modo la puntuación es $$0$$. Por ejemplo:
|
|
|
|
|
88
|
+4. **Dígitos:** la puntuación es $$4n$$ si la contraseña consiste de una mezcla de dígitos **y** al menos otro tipo de caracter (minúscula, mayúscula, símbolos). De otro modo la puntuación es $$0$$. Por ejemplo:
|
89
|
|
89
|
|
90
|
a. La puntuación para `"ab453"` sería $$4 \cdot3 = 12$$ porque la contraseña contiene $$3$$ dígitos y contiene caracteres de otro tipo.
|
90
|
a. La puntuación para `"ab453"` sería $$4 \cdot3 = 12$$ porque la contraseña contiene $$3$$ dígitos y contiene caracteres de otro tipo.
|
91
|
|
91
|
|
|
|
|
|
93
|
|
93
|
|
94
|
c. La puntuación para `801145555` sería $$0$$ porque contiene **solo** dígitos.
|
94
|
c. La puntuación para `801145555` sería $$0$$ porque contiene **solo** dígitos.
|
95
|
|
95
|
|
96
|
-5. **Símbolos** La puntuación es $$6n$$ si la contraseña contiene $n$ símbolos. De otro modo la puntuación es $$0$$. Por ejemplo:
|
|
|
|
|
96
|
+5. **Símbolos:** la puntuación es $$6n$$ si la contraseña contiene $n$ símbolos. De otro modo la puntuación es $$0$$. Por ejemplo:
|
97
|
|
97
|
|
98
|
a. La puntuación para `"ab453"` sería $$0$$ porque no contiene símbolos.
|
98
|
a. La puntuación para `"ab453"` sería $$0$$ porque no contiene símbolos.
|
99
|
|
99
|
|
100
|
- b. La puntuación para `"ALGO!!"` sería $$6 \cdot 2$$ porque contiene $$2$$ símbolos y contiene otros tipos de caracteres.
|
|
|
|
|
100
|
+ b. La puntuación para `"ALGO!!"` sería $$6 \cdot 2 = 12$$ porque contiene $$2$$ símbolos y contiene otros tipos de caracteres.
|
101
|
|
101
|
|
102
|
c. La puntuación para `"---><&&"` sería $$6 \cdot 7 = 42$$ porque contiene $$7$$ símbolos. Nota que en el caso de símbolos, se otorga puntuación incluso cuando no hay otro tipo de caracteres.
|
102
|
c. La puntuación para `"---><&&"` sería $$6 \cdot 7 = 42$$ porque contiene $$7$$ símbolos. Nota que en el caso de símbolos, se otorga puntuación incluso cuando no hay otro tipo de caracteres.
|
103
|
|
103
|
|
104
|
-6. **Dígitos o símbolos en el medio** La puntuación es $$2n$$ si la contraseña contiene símbolos o dígitos que no están en la primera o última posición. Por ejemplo:
|
|
|
|
|
104
|
+6. **Dígitos o símbolos en el medio:** la puntuación es $$2n$$ si la contraseña contiene símbolos o dígitos que no están en la primera o última posición. Por ejemplo:
|
105
|
|
105
|
|
106
|
a. La puntuación para `"ab453"` sería $$2 \cdot2 = 4$$ porque contiene dos dígitos que no están en la primera o última posición, estos son `4` y `5`.
|
106
|
a. La puntuación para `"ab453"` sería $$2 \cdot2 = 4$$ porque contiene dos dígitos que no están en la primera o última posición, estos son `4` y `5`.
|
107
|
|
107
|
|
|
|
|
|
109
|
|
109
|
|
110
|
c. La puntuación para `S&c8i7o!` sería $$2 \cdot 3 = 6$$ porque contiene $$3$$ símbolos o dígitos en el medio, estos son `&`, 8`, y `7`.
|
110
|
c. La puntuación para `S&c8i7o!` sería $$2 \cdot 3 = 6$$ porque contiene $$3$$ símbolos o dígitos en el medio, estos son `&`, 8`, y `7`.
|
111
|
|
111
|
|
112
|
-7. **Requisitos**: Se otorga $$2n$$ solo si el criterio del largo **y** 3 o 4 de los otros criterios se cumplen, donde $$n$$ es el número de *criterios* que se cumplen. Los criterios son:
|
|
|
|
|
112
|
+7. **Requisitos:** se otorga $$2n$$ solo si el criterio del largo **y** 3 o 4 de los otros criterios se cumplen, donde $$n$$ es el número de *criterios* que se cumplen. Los criterios son:
|
113
|
|
113
|
|
114
|
a. La contraseña debe tener 8 o más caracteres de largo.
|
114
|
a. La contraseña debe tener 8 o más caracteres de largo.
|
115
|
|
115
|
|
|
|
|
|
148
|
|
148
|
|
149
|
---
|
149
|
---
|
150
|
|
150
|
|
151
|
-Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para **restas**.
|
|
|
|
|
151
|
+Lo que sigue son algunos detalles adicionales y ejemplos de los criterios para **restar puntos**.
|
152
|
|
152
|
|
153
|
1. **Letras solamente**: La puntuación es $$-len$$ para una contraseña que consista solo de letras, de otro modo obtiene $$0$$. Por ejemplo:
|
153
|
1. **Letras solamente**: La puntuación es $$-len$$ para una contraseña que consista solo de letras, de otro modo obtiene $$0$$. Por ejemplo:
|
154
|
|
154
|
|
|
|
|
|
199
|
|
199
|
|
200
|
En esta experiencia de laboratorio practicarás el uso de expresiones matemáticas y estructuras de selección para computar la puntuación de resistencia o fortaleza de una contraseña, combinando las puntuaciones de los criterios individuales.
|
200
|
En esta experiencia de laboratorio practicarás el uso de expresiones matemáticas y estructuras de selección para computar la puntuación de resistencia o fortaleza de una contraseña, combinando las puntuaciones de los criterios individuales.
|
201
|
|
201
|
|
202
|
-Tu tarea es completar el diseño de una aplicación para medir la fortaleza de las contraseñas de acceso ("password strength"). Al final, obtendrás un programa que será una versión simplificada de la aplicación en http://www.passwordmeter.com . Como no existe un sistema oficial para medir las contraseñas, se utilizarán las fórmulas creadas por el "passwordmeter" para evaluar la fortaleza general de una contraseña dada. La aplicación permitirá al usuario entrar una contraseña y calculará su fortaleza utilizando una serie de reglas.
|
|
|
|
|
202
|
+Tu tarea es completar el diseño de una aplicación para medir la fortaleza de las contraseñas de acceso. Al final, obtendrás un programa que será una versión simplificada de la aplicación en http://www.passwordmeter.com . Como no existe un sistema oficial para medir las contraseñas, se utilizarán las fórmulas creadas por el "passwordmeter" para evaluar la fortaleza general de una contraseña dada. La aplicación permitirá al usuario entrar una contraseña y calculará su fortaleza utilizando una serie de reglas.
|
203
|
|
203
|
|
204
|
-La fortaleza de la contraseña se cuantificará otorgando puntos por utilizar "buenas" técnicas de selección de contraseñas (como combinar símbolos y letras) y restando puntos por utilizar "malos" hábitos (como utilizar solo letras minúsculas o caracteres consecutivos de un mismo tipo). Tu programa analizará la contraseña dada por el usuario y usará los criterios en las tablas presentadas arriba para computar una puntuación para la fortaleza de la contraseña.
|
|
|
|
|
204
|
+La fortaleza de la contraseña se cuantificará otorgando puntos por utilizar buenas técnicas de selección de contraseñas (como combinar símbolos y letras) y restando puntos por utilizar malos hábitos (como utilizar solo letras minúsculas o caracteres consecutivos de un mismo tipo). Tu programa analizará la contraseña dada por el usuario, y usará los criterios en las tablas presentadas arriba para computar una puntuación para la fortaleza de la contraseña.
|
205
|
|
205
|
|
206
|
Una vez completada la aplicación, esta mostrará una ventana en donde, según se vayan entrando los caracteres de la contraseña, se desglosará la puntuación parcial obtenida. Esta interfaz gráfica para el usuario le ofrecerá una manera de mejorar su contraseña y corregir los malos hábitos típicos al formular contraseñas débiles.
|
206
|
Una vez completada la aplicación, esta mostrará una ventana en donde, según se vayan entrando los caracteres de la contraseña, se desglosará la puntuación parcial obtenida. Esta interfaz gráfica para el usuario le ofrecerá una manera de mejorar su contraseña y corregir los malos hábitos típicos al formular contraseñas débiles.
|
207
|
|
207
|
|
|
|
|
|
212
|
El primer paso en esta experiencia de laboratorio es familiarizarte con las funciones pre-definidas en el código. Invocarás estas funciones en el código que crearás para computar la puntuación de varios de los criterios para fortaleza de contraseñas.
|
212
|
El primer paso en esta experiencia de laboratorio es familiarizarte con las funciones pre-definidas en el código. Invocarás estas funciones en el código que crearás para computar la puntuación de varios de los criterios para fortaleza de contraseñas.
|
213
|
|
213
|
|
214
|
|
214
|
|
215
|
-#### Instrucciones:
|
|
|
|
|
215
|
+#### Instrucciones
|
216
|
|
216
|
|
217
|
1. Carga a `QtCreator` el proyecto `PassworStrength`. Hay dos maneras de hacer esto:
|
217
|
1. Carga a `QtCreator` el proyecto `PassworStrength`. Hay dos maneras de hacer esto:
|
218
|
|
218
|
|
|
|
|
|
360
|
|
360
|
|
361
|
## Entregas
|
361
|
## Entregas
|
362
|
|
362
|
|
363
|
-Utiliza "Entrega" en Moodle para entregar el archivo `readpassword.cpp` que contiene el código con el cómputo de las puntuaciones de los criterios individuales, la puntuación final, las invocaciones para actualizar la interfaz gráfica, la clasificación de la fortaleza, y su despliegue. Recuerda utilizar buenas prácticas de programación, al incluir el nombre de los programadores y documentar tu programa.
|
|
|
|
|
363
|
+Utiliza "Entrega" en Moodle para entregar el archivo `readpassword.cpp` que contiene el código con el cómputo de las puntuaciones de los criterios individuales, la puntuación final, las invocaciones para actualizar la interfaz gráfica, la clasificación de la fortaleza, y su despliegue. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
|
364
|
|
364
|
|
365
|
|
365
|
|
366
|
|
366
|
|
|
|
|
|
372
|
|
372
|
|
373
|
|
373
|
|
374
|
[1] Passwordmeter, http://www.passwordmeter.com/
|
374
|
[1] Passwordmeter, http://www.passwordmeter.com/
|
375
|
-
|
|
|
376
|
----
|
|
|
377
|
-
|
|
|
378
|
----
|
|
|
379
|
-
|
|
|
380
|
----
|
|
|