Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Algoritm sistem licentiere
#19
Posted 18 April 2017 - 17:27
Nu e vorba doar de stocarea cheilor. Trebuie sa previ si simpla "comentare" a partii din cod care face validarea, programul putand fi facut sa creada ca totul e roz fara sa verifice nimic.
|
#20
Posted 18 April 2017 - 18:38
red46, on 17 aprilie 2017 - 21:49, said:
... Cheia sa aibă 64 caractere a câte 32 separate în format MD5. ... In aplicatie eu voi decripta primele 32 de caractere si apoi voi verifica daca output-ul script-ului PHP corespunde cu valoarea decriptata, la fel voi face si cu celelalte 32 caractere pentru data expirarii. ... Ce ziceti? Ar functiona? Alte idei mai bune? Ăia care "decriptează" on-line se laudă cu baze de date de 'catralioane' de MD5 hashuri. |
#21
Posted 18 April 2017 - 19:09
jobist, on 18 aprilie 2017 - 18:38, said:
Cum să decriptezi MD5? De când are revers? Ăia care "decriptează" on-line se laudă cu baze de date de 'catralioane' de MD5 hashuri. red46, on 18 aprilie 2017 - 11:19, said:
Da, recunosc, am gresit spunand ca MD5 e criptare. Edited by red46, 18 April 2017 - 19:10. |
#22
Posted 18 April 2017 - 19:11
Nu iti trebuie decit o baza de date cu 100 milioane de hash-uri pentru un ID de 8 cifre. Ca idee, nu ca are relevanta in situatia de fata.
Oricum algoritmul e extrem de slabut, chiar si fara vreo interventie asupra programului in sine (si fara aflarea cheii de encriptare, altminteri stocata in program). Un ID anume asteapta exact un singur raspuns de la server, atit vreme cit ai un raspuns valid poti sa-l redirectezi la un server de-al tau care ii da raspunsul si bafta. |
#23
Posted 18 April 2017 - 19:24
O să revin cu o abordare practică curând.
Nu prea cred că ați înțeles ce doresc să fac. Singura vulnerabilitate va rămâne doar codul aplicației. Edited by red46, 18 April 2017 - 19:35. |
#24
Posted 18 April 2017 - 20:26
orice e in codul aplicatiei = se poate hackui
ca sa fii mai sigur poti sa faci ca la banci, 2step authentification, cod trimis prin SMS care expira in 1min |
#25
Posted 19 April 2017 - 06:39
Si care utilizator din aceasta galaxie o sa accepte autentificare cu token expirabil ca sa intre intr-o aplicatie oarecare?
|
#26
Posted 19 April 2017 - 07:03
red46, on 18 aprilie 2017 - 19:24, said:
O să revin cu o abordare practică curând. Nu prea cred că ați ĂŽnțeles ce doresc să fac. Singura vulnerabilitate va rămâne doar codul aplicației. La fel cum, dacă tu numești hash criptare, e problema ta de a fi pe lângă subiectul în care vrei să activezi. |
#27
Posted 19 April 2017 - 07:05
red46, on 18 aprilie 2017 - 19:24, said:
Singura vulnerabilitate va rămâne doar codul aplicației. Edited by neagu_laurentiu, 19 April 2017 - 07:05. |
#28
Posted 19 April 2017 - 07:05
Am înțeles, ai zis că ai greșit, dar problema de fundament pare să fie recurentă la tine: nu te exprimi de ca și cum ai fi stăpân pe cunoștințele tale.
|
|
#29
Posted 19 April 2017 - 17:07
OriginalCopy, on 19 aprilie 2017 - 07:03, said:
Dacă tu îl numești sistem de licențiere, dar de fapt vrei să faci altceva, e problema ta de exprimare, nu a noastră de înțelegere. La fel cum, dacă tu numești hash criptare, e problema ta de a fi pe lângă subiectul în care vrei să activezi. hash = text criptat. La asta m-am referit. |
#30
Posted 19 April 2017 - 17:18
La asta s-a referit si OC, tu nu stapanesti termenii.
Textul criptat poate fi decriptat, hash-ul nu. |
#31
Posted 19 April 2017 - 18:32
red46, on 19 aprilie 2017 - 17:07, said:
E sistem de licențiere. Mă refeream la faptul că nu ați înțeles exact cum va funcționa. hash = text criptat. La asta m-am referit. pentru că n-ai explicat că să înțeleagă cineva ceva. Așa cum ți s-a mai spus nu ai vocabularul necesar, ceea ce denotă și lipsa cunoștințelor. |
#32
Posted 29 April 2017 - 16:31
Am abandonat ideea.
Am terminat deja un exemplu, însă se poate trece foarte simplu de orice verificare editând câteva linii de cod. Deci e inutil. Edited by red46, 29 April 2017 - 16:32. |
#33
Posted 29 April 2017 - 17:02
Ca și idee, algoritmul final era acesta:
Algoritm de criptare: AES128 ECB (nu am folosit CBC pentru că rezultatul rămâne mereu același și diferă în funcție de ID) Server-side: managekeys.php -> admin panel pentru a crea chei de licență și pentru a le șterge + evidență. addkey.php -> funcție de adăugare a cheii în baza de date. check.php -> verifică la cerere dacă textul criptat este prezent în baza de date, apoi criptează ID-ul specific cheii și alte date (ex: "123456782017/04/272017/09/022017/05/01 = ID unic din 8 cifre + data creării + data expirării + data serverului (pentru a preveni prelungirea licenței prin schimbarea datei locale) Client-side: Activarea se face printr-un fișier INI care conține numele posesorului și cheia. 1.Aplicația verifică dacă este necesară selectarea licenței printr-o variabilă setată într-un fișier de configurare (oricum licența va fi verificată la fiecare pornire, însă acea variabilă îi spune programului dacă este cazul să pună utilizatorul să-și adauge licența), apoi se verifică integritatea fișierului de licență, îl încarcă, și în cele din urmă obține informațiile necesare. 2.Se verifică existența cheii de licență prin intermediul fișierului "check.php", iar dacă rezultatul este cel așteptat (niște date criptate folosind AES128) se trece la următorul pas. Dacă cheia nu este validă, scriptul va afișa un text generat random în Base64. 3.Se decriptează rezultatul primit de la server, apoi se separă datele (primele 8 caractere reprezinta ID-ul, celelalte 10 caractere reprezintă data creării cheii, ș.a.). 4.Se decriptează cheia din fișierul de licențiere (cheia inițială de licență), apoi se compară primele 8 caractere din rezultatul primit de la server cu rezultatul cheii decriptate. Dacă cele 2 nu sunt egale, programul va afișa o eroare și se va închide. 5.Dacă cele 2 ID-uri sunt egale, se va trece la verificarea stării licenței (se compară data expirării cu data serverului) . Dacă data expirării este mai mică decât data serverului, atunci programul va afișa un mesaj de atenționare și se va închide. Licența va mai fi verificată și în alte părți ale programului (de exemplu secțiunea About=Despre), nu doar la pornire. (pentru a mai complica puțin treaba). Edited by red46, 29 April 2017 - 17:06. |
|
#34
Posted 29 April 2017 - 20:46
#35
Posted 30 April 2017 - 08:12
red46, on 17 aprilie 2017 - 21:49, said:
Alte idei mai bune? * Oferă părțile importante ale aplicației ca SaaS. Implică operațiuni mai lente prin rețea, deci asigură-te că merită latența. De exemplu, un API către cel mai inovativ algoritm din aplicație * Împachetează algoritmul din punctul anterior într-un modul PHP. Sistemul tot poate fi hackuit, dar ridici mult nivelul * O combinație a punctelor precedente: primul punct ca soluție demo sau pentru clienți care nu plătesc mult, al doilea pentru clienți deja fidelizați, care nu vor să depindă de conexiunea la serverul tău SaaS Treburile cu criptografia sunt interesante și importante, și poți în continuare să adopți ceva din ele în cadrul soluțiilor de mai sus, însă ele sunt "doar detalii". Deciziile de arhitectură/business sunt cele 3 de mai sus. |
#36
Posted 13 May 2017 - 16:03
Aveți în atașament abordarea practică scrisă în C#.
De aici puteți lua fișierele de licență: https://p2ptv.ml/vserver/getkey.php . Algoritmul a mai suferit mici modificări pe parcurs. Executabilul poate fi detectat ca virus din cauza faptului că am folosit un obfuscator de cod pentru a îngreuna puțin munca. Virustotal: https://virustotal.c...sis/1494685625/ Attached FilesEdited by red46, 13 May 2017 - 16:28. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users