| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| tea [2025/01/22 13:15] – lss | tea [2025/12/01 11:40] (current) – external edit 127.0.0.1 |
|---|
| Mirjana je osmislila novi hash algoritam koji se brzo izvodi i zauzima jako malo prostora. | Mirjana je osmislila novi hash algoritam koji se brzo izvodi i zauzima jako malo prostora. |
| Zna koliko je bitno testirati algoritme prije nego što ih se stavi u proizvod, | Zna koliko je bitno testirati algoritme prije nego što ih se stavi u proizvod, |
| pa te moli da testiraš postoje li praktični napadi protiv njega, | pa te moli da testiraš postoje li praktični napadi protiv njega. |
| konkretno za jako je bitno da algoritam nije ranjiv na "second preimage" | Konkretno jako joj je bitno da algoritam nije ranjiv na "second preimage" |
| napad (https://en.wikipedia.org/wiki/Preimage_attack) . | napad (https://en.wikipedia.org/wiki/Preimage_attack) . |
| |
| U kodu se koristi TEA kao hash algoritam tako da se konstantne vrijednosti "0x123456789" i "0x9ABCDEF0" šifriraju s našim unosom koji se koristi kao ključ (sličan "hash" algoritam se koristio i u Xbox igraćoj konzoli). | U kodu se koristi TEA kao hash algoritam tako da se konstantne vrijednosti "0x123456789" i "0x9ABCDEF0" šifriraju s našim unosom koji se koristi kao ključ (sličan "hash" algoritam se koristio i u Xbox igraćoj konzoli). |
| |
| Istraživanjem javno poznatih napada na TEA algoritam, moguće je pronaći [[https://www.schneier.com/wp-content/uploads/2016/02/paper-key-schedule.pdf|članak]] koji kaže kako TEA ima ranjivost povezanih ključeva. To znači da mogu postojati različiti enkripcijski ključevi koji za isti plaintext daju isti ciphertext. Članak kaže kako se takvi povezani ključevi mogu konstruirati tako da se napravi "bit-filip" na najvišem bitu prve i druge 32-bitne riječi ključa, najvišem bitu treće i i četvrte 32-bitne riječi ključa ili sve četiri 32-bitne riječi ključa. Ova ranjivost se može iskoristiti kako bi se zavarao hash algoritam implementiran u zadatku, budući da se naš unos zapravo koristi kao ključ u TEA algoritmu. | Istraživanjem javno poznatih napada na TEA algoritam, moguće je pronaći [[https://www.schneier.com/wp-content/uploads/2016/02/paper-key-schedule.pdf|članak]] koji kaže kako TEA ima ranjivost povezanih ključeva (za bolje razumijevanje ranjivosti, preporučuje se pročitati članak). To znači da mogu postojati različiti enkripcijski ključevi koji za isti plaintext daju isti ciphertext. U članku je objašnjeno da se takav par povezanih ključeva (ključ je uvijek iste dužine, 128 bitova, odnosno 4 32-bitne riječi) može konstruirati na tri načina, tako da se napravi "bit-flip" na najvišem bitu prve i druge 32-bitne riječi ključa, najvišem bitu treće i i četvrte 32-bitne riječi ključa ili bit flip najviših bitova svih četiriju 32-bitnih riječi ključa. Ova ranjivost se može iskoristiti kako bi se zavarao hash algoritam implementiran u zadatku, budući da se naš unos zapravo koristi kao ključ u TEA algoritmu. |
| |
| Tekst "flagflagflagflag" u binarnom zapisu glasi | Tekst "flagflagflagflag" u binarnom zapisu glasi: |
| <file> | <file> |
| 01100110 01101100 01100001 01100111 01100110 01101100 01100001 01100111 01100110 01101100 01100001 01100111 01100110 01101100 01100001 01100111 | 01100110 01101100 01100001 01100111 |
| | 01100110 01101100 01100001 01100111 |
| | 01100110 01101100 01100001 01100111 |
| | 01100110 01101100 01100001 01100111 |
| </file> | </file> |
| |
| Bit-flipom svih 32-bitnih riječi dobivamo | Bit-flipom najviših bitova svih 32-bitnih riječi dobivamo: |
| |
| <file> | <file> |
| 11100110 01101100 01100001 01100111 11100110 01101100 01100001 01100111 11100110 01101100 01100001 01100111 11100110 01101100 01100001 01100111 | 11100110 01101100 01100001 01100111 |
| | 11100110 01101100 01100001 01100111 |
| | 11100110 01101100 01100001 01100111 |
| | 11100110 01101100 01100001 01100111 |
| </file> | </file> |
| |
| Zadatak prihvaća tekst u base64 kodiranom formatu, pa možemo koristiti [[https://gchq.github.io/CyberChef/#recipe=From_Binary('Space',8)To_Base64('A-Za-z0-9%2B/%3D')&input=MTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTEgMTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTEgMTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTEgMTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTE|CyberChef recept]] da dobijemo vrijednost potrebnu za rješavanje zadatka. | Zadatak prihvaća tekst u base64 kodiranom formatu, pa možemo koristiti [[https://gchq.github.io/CyberChef/#recipe=From_Binary('Space',8)To_Base64('A-Za-z0-9%2B/%3D')&input=MTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTEgMTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTEgMTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTEgMTExMDAxMTAgMDExMDExMDAgMDExMDAwMDEgMDExMDAxMTE|CyberChef recept]] da dobijemo vrijednost potrebnu za rješavanje zadatka. |
| | |
| | Zadatak pokazuje kako je bitno istražiti javno poznate napade na kriptografske algoritme, budući da je često moguće uspješno izvesti napad i bez matematičkog razumijevanja ranjivosti. |
| |