This shows you the differences between two versions of the page.
pm:prj2023:iotelea:safeme [2023/05/29 21:15] oana.cocoara [Rezultate Obţinute] |
pm:prj2023:iotelea:safeme [2023/05/29 21:24] (current) oana.cocoara [Descriere generală] |
||
---|---|---|---|
Line 14: | Line 14: | ||
<note tip> | <note tip> | ||
- | Un sistem care cripteaza/decripteaza datele care vin de pe interfata seriala. | + | Un sistem care cripteaza/decripteaza mesajele care vin pe interfata seriala. Algoritmul de criptare este un One Time Pad unde expansiunea cheii se face prin repetarea ei. Accesul la chei se face prin intermediul unor utilizatori presetati, ale caror drepturi sunt accesate folosind PIN-ul prorpiu de 4 cifre. |
- | + | ||
- | **Mod de functionare:** | + | |
- | * Meniu initial de login: tot ce se poate face e sa se aleaga un user pentru logare: se cere PIN-ul de 4 cifre, care se introduce de la tastatura. La login efectuat cu succes, globala active_user se schimba la indexul userului respectiv. Va fi folosita la alegerea cheii de criptare si la verificarea posibilitatii decriptarii unui cyphertext. | + | |
- | + | ||
- | **Meniul de utilizare efectiva de catre un user: optiuni pentru criptare, decriptare si logout.** | + | |
- | + | ||
- | * Criptare: asteapta input de la interfata seriala. Acesta se cripteaza (aproape) OTP (expansiunea cheii este doar repetarea ei) folosind cheia cu indexul active_user si rezultatul este intors la seriala (primul caracter identifica cheia folosita). | + | |
- | + | ||
- | * Decriptare: se verifica daca userul curent poate decripta cyphertextul dat (in functie de primul caracter, despre care am mai zis): userii normali pot folosi doar propria cheie, admin le poate folosi pe toate. | + | |
- | + | ||
- | * Logout: se seteaza active_user la -1 si se revine in meniul initial. | + | |
</note> | </note> | ||
Line 51: | Line 39: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | **Mod de functionare:** |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Meniu initial de login: tot ce se poate face e sa se aleaga un user pentru logare: se cere PIN-ul de 4 cifre, care se introduce de la tastatura. La login efectuat cu succes, globala active_user se schimba la indexul userului respectiv. Va fi folosita la alegerea cheii de criptare si la verificarea posibilitatii decriptarii unui cyphertext. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | **Meniul de utilizare efectiva de catre un user: optiuni pentru criptare, decriptare si logout.** |
- | * (etapa 3) surse şi funcţii implementate | + | |
+ | * Criptare: asteapta input de la interfata seriala. Acesta se cripteaza (aproape) OTP (expansiunea cheii este doar repetarea ei) folosind cheia cu indexul active_user si rezultatul este intors la seriala (primul caracter identifica cheia folosita). | ||
+ | |||
+ | * Decriptare: se verifica daca userul curent poate decripta cyphertextul dat (in functie de primul caracter, despre care am mai zis): userii normali pot folosi doar propria cheie, admin le poate folosi pe toate. | ||
+ | |||
+ | * Logout: se seteaza active_user la -1 si se revine in meniul initial. | ||
</note> | </note> | ||
Line 111: | Line 104: | ||
* Problema (oarecum in acelasi registru cu cea anterioara): Folosind chei cu caractere uzuale, se poate ivi cazul in care am X xor X, ceea ce da 0, iar printarea va vedea asta ca un end of string. Asadar, am folosit caractere mai putin folosite in chei. | * Problema (oarecum in acelasi registru cu cea anterioara): Folosind chei cu caractere uzuale, se poate ivi cazul in care am X xor X, ceea ce da 0, iar printarea va vedea asta ca un end of string. Asadar, am folosit caractere mai putin folosite in chei. | ||
- | * Am avut probleme - read nu e blocant si a trebuit sa fac un loop blocant cu Serial.available(). | + | * Alte probleme simple: read nu este o functie blocanta si a trebuit sa fac un loop blocant cu Serial.available(). |
</note> | </note> |