Labb 2 - IDA.LiU.se

Labb 2
Kryptering
-
Måste kryptera lösenord som ska lagras i databaser
En krypteringsmetod är “subset sum”
Det finns en bruteforce-lösning given i labben (tar låååång tid!)
Er uppgift: Snabba upp bruteforce-lösningen
Subset sum
-
Krypterar ett lösenord som är N bitar långt
Behövs en tabell T med N stycken slumpmässiga heltal/nycklar
Varje heltal/nyckel ska vara N bitar långt
Subset sum
Lösenord: 00101
T0 10110
0
T1 01101
0
T2 00101
1
T3 10001
0
T4 01011
1
Krypterat: T2 + T4 = 00101 + 01011 = 10000
Labbens alfabet
-
Ett lösenord är en sekvens av tecken från alfabetet
Innehåller 32 tecken: a, b, c, …, y, z, 0, 1, 2, 3, 4, 5
Representeras decimalt som:
-
a = 0, b=1, …, z = 25, 0 = 26, …, 5 = 31
Labbens alfabet
-
Ett lösenord är en sekvens av tecken från alfabetet
Innehåller 32 tecken: a, b, c, …, y, z, 0, 1, 2, 3, 4, 5
Representeras decimalt som:
-
-
a = 0, b=1, …, z = 25, 0 = 26, …, 5 = 31
Representeras med 5 binära bitar!
-
a = 00000, b = 00001, …, 4 = 11110, 5 = 11111
Labbens alfabet
-
Ett lösenord är en sekvens av tecken från alfabetet
Innehåller 32 tecken: a, b, c, …, y, z, 0, 1, 2, 3, 4, 5
Representeras decimalt som:
-
-
a = 0, b=1, …, z = 25, 0 = 26, …, 5 = 31
Representeras med 5 binära bitar!
-
bas 32 { a, …, 5 }
bas 10 { 0, …, 9 }
a = 00000, b = 00001, …, 4 = 11110, 5 = 11111
bas 2 {0, 1}
Bokstaven “m”
-
I labbens alfabet (bas 32): m
Decimalt: 12 (13e bokstaven, a har värdet 0)
Binärt: 01100
Bokstaven “m”
-
I labbens alfabet (bas 32): m
Decimalt: 12 (13e bokstaven, a har värdet 0)
Binärt: 01100
I labben så kan en nyckel exempelvis se ut såhär: fdam2a
Kom ihåg att fdam2a är ett vanligt tal, så det går att summera nycklar!
bas 32:
m+b= n
decimalt:
12 + 1 = 13
Kryptering av lösenordet “uab”
Bas32
u a b
(20 0
1)
Binärt
Decimalt
10100 00000 00001
20481
Kryptering av lösenordet “uab”
Bas32
Binärt
Decimalt
u a b
(20 0
1)
10100 00000 00001
20481
T0
t i s
(19 8 18)
10011 01000 10010
19730
T1
i s 2
( 8 18 27)
01000 10010 11011
8795
T2
f u n
( 5 20 13)
00101 10100 01101
5773
…
…
…
…
...
o f c
(14 5 2)
01110 00101 00010
14498
T14
Kryptering av lösenordet “uab” => “hcb”
Bas32
Binärt
Decimalt
u a b
(20 0
1)
10100 00000 00001
20481
T0
t i s
(19 8 18)
10011 01000 10010
19730
T1
i s 2
( 8 18 27)
01000 10010 11011
8795
T2
f u n
( 5 20 13)
00101 10100 01101
5773
…
…
…
…
...
o f c
(14 5 2)
01110 00101 00010
14498
T14
Bruteforce
-
I labben finns redan en bruteforcelösning
Den testar alla möjliga lösenord i ordning
-
-
aaaaa, aaaab, aaaac, …, 55554, 55555
Detta tar 2^N tid, N antalet bitar
-
N = 5*C, C antalet tecken i lösenordet
Om C=10 (ex. “not2hardpw”) så är N=50
Det finns då 2^50 (över 1 biljard) lösenord att testa
Bruteforce
-
I labben finns redan en bruteforcelösning
Den testar alla möjliga lösenord i ordning
-
-
aaaaa, aaaab, aaaac, …, 55554, 55555
Detta tar 2^N tid, N antalet bitar
-
N = 5*C, C antalet tecken i lösenordet
Om C=10 (ex. “not2hardpw”) så är N=50
Det finns då 2^50 (över 1 biljard) lösenord att testa
Er uppgift: Lös detta på under en timma
Bruteforce
-
I labben finns redan en bruteforcelösning
Den testar alla möjliga lösenord i ordning
-
-
aaaaa, aaaab, aaaac, …, 55554, 55555
Detta tar 2^N tid, N antalet bitar
-
N = 5*C, C antalet tecken i lösenordet
Om C=10 (ex. “not2hardpw”) så är N=50
Det finns då 2^50 (över 1 biljard) lösenord att testa
Er uppgift: Lös detta på under en timma
Lösningen: Använd symboltabell!
Vad är en symboltabell?
-
Mappar en symbol till information
I det här fallet är symbolen ett heltal och infon är färg, form och area
Symbol (identifierare)
Färg
Form
Area
0
“blå”
“cirkel”
42
1
“röd”
“fyrkant”
12
2
“grön”
“triangel”
20
Er lösning
-
Beräkna alla möjliga summor för en delmängd av tabellen T
Lägg in dessa summor i en symboltabell
Använd symboltabellen för att kolla alla de möjligheterna på en uppslagning
Kodfiler i labben
-
encrypt.cc - krypterar ett lösenord
brute.cc - bruteforcelösningen för dekryptering
Textfiler - är tabellen T för olika lösenordslängder C
key.h - Hanterar nycklar och implementerar subset sum
-
En nyckel är en sekvens av tecken ifrån alfabetet a, b, …, 4, 5
Exempelvis lösenordet “uab” eller dess krypterade värde “hcb”
Kom ihåg att nyckeln “uab” har värdet 20481, så det går att summera
Tyvärr inget mer om lösningen
Kom ihåg att börjar med labben medan ni fortfarande minns något av det jag sagt