Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Combinatie de conturi pentru tran...

Adaptor semnal hi to low

Jocuri Android Multiplayer online...

Diferenta consum smart meter - Co...
 Recomandare demontare+instalare ...

CAIET SERVICE PREDEAL II

Internare spital psihiatrie

CM de snooker 2024
 Scot penele dupa montajul tamplar...

Masina de spalat vase si grasimea

Noua lege de acces in paduri

Sunt ouale proaspete?
 Aplicatie invatare limba Germana

Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile
 

Algoritm sistem licentiere

- - - - -
  • Please log in to reply
38 replies to this topic

#19
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
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
jobist

jobist

    Senior Member

  • Grup: Senior Members
  • Posts: 2,746
  • Înscris: 23.04.2010

View Postred46, 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?
Cum să decriptezi MD5? De când are revers? Posted Image
Ăia care "decriptează" on-line se laudă cu baze de date de 'catralioane' de MD5 hashuri.

#21
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,550
  • Înscris: 06.03.2016

View Postjobist, on 18 aprilie 2017 - 18:38, said:

Cum să decriptezi MD5? De când are revers? Posted Image
Ăia care "decriptează" on-line se laudă cu baze de date de 'catralioane' de MD5 hashuri.

View Postred46, on 18 aprilie 2017 - 11:19, said:

Da, recunosc, am gresit spunand ca MD5 e criptare.
Posted Image

Edited by red46, 18 April 2017 - 19:10.


#22
f300

f300

    30k si ma duc

  • Grup: Senior Members
  • Posts: 30,000
  • Înscris: 27.09.2008
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
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,550
  • Înscris: 06.03.2016
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
Flat

Flat

    Bugetar Esențial

  • Grup: Senior Members
  • Posts: 32,875
  • Înscris: 23.06.2006
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
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Si care utilizator din aceasta galaxie o sa accepte autentificare cu token expirabil ca sa intre intr-o aplicatie oarecare? :w00t:

#26
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postred46, 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.
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.

#27
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003

View Postred46, on 18 aprilie 2017 - 19:24, said:

Singura vulnerabilitate va rămâne doar codul aplicației.
Daca esenta aplicatiei tale sta in client si nu server, de ce nu te gandesti la solutii ce nu ofera codul sursa pe client! Un plugin nativ pentru browser (cu permisiunea utilizatorului), o aplicatie desktop dar care se actualizeaza singura via web etc. astfel incat sa mai elimini din vulnerabilitate.

Edited by neagu_laurentiu, 19 April 2017 - 07:05.


#28
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
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
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,550
  • Înscris: 06.03.2016

View PostOriginalCopy, 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.
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.

#30
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,430
  • Înscris: 10.08.2005
La asta s-a referit si OC, tu nu stapanesti termenii.
Textul criptat poate fi decriptat, hash-ul nu.

#31
DaculScoril0

DaculScoril0

    Senior Member

  • Grup: Senior Members
  • Posts: 6,670
  • Înscris: 03.12.2014

View Postred46, 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
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,550
  • Înscris: 06.03.2016
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
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,550
  • Înscris: 06.03.2016
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007

View Postred46, on 29 aprilie 2017 - 17:02, said:

3.Se decriptează rezultatul primit de la server

Daca ai in executabil cheia necesara pentru a decripta informatia, pune atacatorul mana pe ea in cateva minute.

#35
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postred46, on 17 aprilie 2017 - 21:49, said:

Alte idei mai bune?
Câteva idei:

* 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
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,550
  • Înscris: 06.03.2016
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 Files


Edited by red46, 13 May 2017 - 16:28.


Anunturi

Second Opinion 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate