Заштита података/К1П 2024 — разлика између измена
м (→1. zadatak [5]) |
мНема описа измене |
||
| Ред 26: | Ред 26: | ||
Dešifrovana poruka: <span class="spoiler" data-solution="text">A congruence is defined as following: We say that a is congruent to b modulo n if n∣(a−b) where a and b are both integers</span> | Dešifrovana poruka: <span class="spoiler" data-solution="text">A congruence is defined as following: We say that a is congruent to b modulo n if n∣(a−b) where a and b are both integers</span> | ||
Objašnjenje: < | Objašnjenje: <div class="spoiler" data-solution="explanation">Pošto ne znamo ključ za Cezarov algoritam, moramo da probamo svih 126-32+1 mogućih pomeraja i da vidimo koji od njih daje smislen plaintext kad se iskoristi za dešifrovanje Vigenere-a. | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
modulus = 126 - 32 + 1 | modulus = 126 - 32 + 1 | ||
| Ред 54: | Ред 54: | ||
print(mykey,": ", decrypt_vigenere(ciphertext, mykey), end="\n\n") | print(mykey,": ", decrypt_vigenere(ciphertext, mykey), end="\n\n") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</ | </div> | ||
== 2. zadatak [5]== | == 2. zadatak [5]== | ||
| Ред 70: | Ред 70: | ||
Odgovor <span class="spoiler" data-solution="text">240000</span> | Odgovor <span class="spoiler" data-solution="text">240000</span> | ||
<div class="spoiler" data-solution="explanation"> | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
e = 237997 | e = 237997 | ||
| Ред 85: | Ред 86: | ||
print(pow(p, find_d(e, n), n)) | print(pow(p, find_d(e, n), n)) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | |||
== 4. zadatak [2]== | == 4. zadatak [2]== | ||
Na slici je šema komunikacije između Ane i Branka. Podrazumeva se da je prvi nailazak na ključ enkripcija, a drugi dekripcija. Ukoliko je Branko Ani poslao poruku po ovoj šemi šta je postigao? | Na slici je šema komunikacije između Ane i Branka. Podrazumeva se da je prvi nailazak na ključ enkripcija, a drugi dekripcija. Ukoliko je Branko Ani poslao poruku po ovoj šemi šta je postigao? | ||
Верзија на датум 27. април 2024. у 16:22
K1P 2024. godine održan je 26. aprila i trajao je 1.5h.
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
1. zadatak [5]
Ana je Branku poslala poruku šifrovanu Vigenere-ovim algoritmom sa autokey poboljšanjem. Ključ za Vigener-ov algoritam je poslala šifrovan pomoću Cezarove šifre. Šifrovan ključ je dat dole kao enc_key, a šifrovana poruka kao ciphertext.
I Vigenere-ov i Cezarov algoritam rade u rasponu ASCII kodova od 32 do 126, uključujući oba (tzv. Printable ASCII)
1.Pronaći ključ za Vigenerov algoritam ukoliko nije poznat pomeraj kod Cezarovog algoritma.
enc_key = r'P/&t")/strt}$/zt)='
2.Dešifrovati poruku:
ciphertext = r'b ZUaarZKRITti_e^s(iRUSgTieUSRlYkiSM!iFKdsCm [XNaoYiX[:cGTgfW_nihVd D WcdY\^gauOUtnqwaobv{dmUUrT Kfa]a(D-D{q ZXZ[eiPtGVJrV.'
Napomena: karakter r ispred stringa u Pythonu označava raw string, odnosno da se svaki karakter tumači kao takav, jer bez toga bi skupovi karaktera imali posebno značenje, npr. \n bi se tumačio kao prelazak u novi red itd.
Ključ za Vigenere: A very decent key.
Dešifrovana poruka: A congruence is defined as following: We say that a is congruent to b modulo n if n∣(a−b) where a and b are both integers
Objašnjenje:
modulus = 126 - 32 + 1
def c_to_n(char):
return ord(char) - 32
def n_to_c(number):
return chr(number + 32)
def decrypt_caesar(ciphertext, key):
plaintext = ""
for i in ciphertext:
plaintext += n_to_c((c_to_n(i) - key) % modulus)
return plaintext
def decrypt_vigenere(ciphertext, key):
key = list(key)
plaintext = ""
for i in range(len(ciphertext)):
plaintext += decrypt_caesar(ciphertext[i], c_to_n(key[i]))
key.append(plaintext[i])
return plaintext
for i in range(modulus):
mykey = decrypt_caesar(enc_key, i)
print(mykey,": ", decrypt_vigenere(ciphertext, mykey), end="\n\n")
2. zadatak [5]
Za originlani tekst A10C i ključ 1F29 uraditi SAES.
- Podatak nakon inicjalne Add Round Key BE25
- Ključ prve iteracije B59C
- Podatak nakon prve runde C8AD
- Ključ druge iteracije 47DB
- Šifrovani tekst 89DD
3. zadatak [3]
Ana je poslala Branku svoju platu koju je šifrovanu pomoću RSA algoritma. Ana je šiforvala podatak Brankovim javnim ključem {e,n} = {237997, 234339640697}. Vi ste presreli Aniu poruku i pročitali broj 163860944446. Kolika je Anina plata?
Odgovor 240000
e = 237997
n = 234339640697
p = 163860944446
def find_d(e, n):
p, q = None, None
for i in range(3, n, 2):
if n % i == 0:
p, q = i, n // i
break
phi_n = (p - 1)*(q - 1)
return pow(e, -1, phi_n)
print(pow(p, find_d(e, n), n))
4. zadatak [2]
Na slici je šema komunikacije između Ane i Branka. Podrazumeva se da je prvi nailazak na ključ enkripcija, a drugi dekripcija. Ukoliko je Branko Ani poslao poruku po ovoj šemi šta je postigao?
- Autentikaciju
- Tajnost
- Tajnost i autentikaciju
- Ne znam
5. zadatak [2]
Koristeći napad izabranom porukom (chosen plaintext attack) moguće je dobiti koji ključ je korišćen za one-time pad. (Podrazumeva se da se ovim dobije plaintext i odgovarajući ciphertext)
- Tačno
- Netačno
5. zadatak [3]
Koji od sledećih napada na kompjuterske sisteme koriste softverske slabosti sistema?
- DNS spoofing
- DoS
- SQLi
- socijalni inžinjering
- XSS
- ARP spoofing