Page 1 of 4 1234 Last
  1. #1

    Registered
    03/03/04
    Location
    Blankenberge/Gent
    Posts
    1,105
    iTrader
    7 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0

    [PROG]JAVA Programma beveiligen met paswoord

    Hallo,


    Ik zou moeten een programma maken dat beveiligd is a.d.h.v. een login en een pasword. Meerdere gebruikers zou een mogelijkheid moeten zijn, alsook het aanpassen van wachtwoord en toevoegen van gebruikers...

    Nu vraag ik me af hoe ik dit op een zo veilig mogelijke manier kan beveiligen? Het gaat namelijk over zeer gevoelige, financiele informatie...


    Dit is wat ik in gedachten had :
    - paswoord encrypted opslaan in een bestand m.b.v. JCE (wat is het beste encryption algoritm?? DES?? ).
    - CRC checken van bestand om integriteit na te gaan.


    Nu heb ik het gevoel dat dit geen zo'n goeie aanpak is. Heeft er iemand een beter idee?? Veiligheid is een absolute prioriteit!


    Greetz
    no votes  

  2. #2
    BuiZe's Avatar
    Registered
    08/08/02
    Posts
    134
    iTrader
    4 (100%)
    Mentioned
    0 Post(s)
    DES is redelijk verouderd en vlot te kraken. AES, Triple DES, Blowfish zijn goeie keuzes, zolang de encryptiesleutel volgoende groot is.

    Voor de rest is encryptie wel aangewezen, maar het grote probleem hierbij is dat gegevens met één sleutel geencrypteerd worden terwijl meerdere gebruikers met elk een eigen login noodzakelijk zijn.

    Mijn eerste idee zou zijn om de (unieke) sleutel voor de gegevens te encrypteren voor elke gebruiker met als sleutel de login van deze gebruiker.
    no votes  

  3. #3

    Registered
    03/03/04
    Location
    Blankenberge/Gent
    Posts
    1,105
    iTrader
    7 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by BuiZe
    This quote is hidden because you are ignoring this member. Show
    DES is redelijk verouderd en vlot te kraken. AES, Triple DES, Blowfish zijn goeie keuzes, zolang de encryptiesleutel volgoende groot is.

    Voor de rest is encryptie wel aangewezen, maar het grote probleem hierbij is dat gegevens met één sleutel geencrypteerd worden terwijl meerdere gebruikers met elk een eigen login noodzakelijk zijn.

    Hmm het is mss ook een mogelijkheid zonder username te werken en met enkel 1 paswoord al ik op deze manier een veiliger programma kan maken...


    Wat ik me nu ook afvroeg is of dit eigenlijk wel nut heeft omdat ik van plan was om data op te slaan in een postgreSQL database. Hoe veilig zit de data hier dan? Dit paswoord zou ik dan mss best hardcoden in het programma? Of niet? Of is een ander database systeem aangeraden voor gevoelige data?


    Greetz
    no votes  

  4. #4
    Messias.'s Avatar
    Registered
    06/04/06
    Location
    BXL
    Posts
    4,415
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/40
    Ik heb trouwens overlaatst een interessant artikel gelezen over cache-timing aanvallen op AES.
    I caught a glimpse and now it haunts me.
    no votes  

  5. #5

    Registered
    30/07/03
    Posts
    626
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Sla geen wachtwoorden op! Ook niet geëncrypteerd!
    Maak een MD5 hash van je wachtwoord en sla die op. Als je dan een wachtwoord vraagt dmv een dialog box, dan ga je daar de MD5 hash van berekenen en deze vergelijken met de reeds opgeslagen hash.

    Een MD5 hash kan je creëren uit een reeks data(een wachtwoord, een file, etc). Het is zoiets als een CRC, maar dan een unieke sleutel. Een MD5 hash heeft ook altijd dezelfde grootte(kan alleen even niet herinneren hoe groot precies).
    Je kan dus data naar MD5 omrekenen, maar niet terug. Dit is een soort van eenwegs-encryptie.

    Je hebt dus iets nodig dat een MD5 sleutel kan berekenen.
    Je zou ook bijvoorbeeld de MD5 sleutel van elk bestand kunnen berekenen om te zien of de inhoud veranderd is, maar ik weet niet hoe CPU-intensief dat is.
    [LifeIsDigital.net] - Mijn artikels, open source software en projecten!
    no votes  

  6. #6

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Vich
    This quote is hidden because you are ignoring this member. Show
    Je zou ook bijvoorbeeld de MD5 sleutel van elk bestand kunnen berekenen om te zien of de inhoud veranderd is, maar ik weet niet hoe CPU-intensief dat is.
    Valt goed mee. Wordt vaak gedaan om te controleren op corrupte downloads/isos/.... Alleen moet je het nu niet op immens grote bestanden gaan doen telkens als je programma opstart, zou nogal lomp zijn imho.

    Voor de rest volg ik vich volledig in wat hier gezegd wordt.
    Gebruik hashing ipv encryptie waar mogelijk.
    no votes  

  7. #7

    Registered
    30/09/02
    Location
    Mariakerke
    Posts
    554
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Quote Originally Posted by killgore
    This quote is hidden because you are ignoring this member. Show
    Valt goed mee. Wordt vaak gedaan om te controleren op corrupte downloads/isos/.... Alleen moet je het nu niet op immens grote bestanden gaan doen telkens als je programma opstart, zou nogal lomp zijn imho.

    Voor de rest volg ik vich volledig in wat hier gezegd wordt.
    Gebruik hashing ipv encryptie waar mogelijk.
    Hoe zie je dat dan concreet? Want zoiets als

    if(MD5Hash(password) == eenBepaaldeString) then
    Inorde
    else
    print("fout passwoord");

    is ook niet bepaald veilig.
    no votes  

  8. #8
    BuiZe's Avatar
    Registered
    08/08/02
    Posts
    134
    iTrader
    4 (100%)
    Mentioned
    0 Post(s)
    Gebruik hashing ipv encryptie waar mogelijk.
    Op welke manier zijn de financiële gegevens dan afgeschermd?
    no votes  

  9. #9
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Als je een hoge mate van beveiliging wil kan je voor de communicatie met PostgreSQL best opteren voor een SSL verbinding (of connecteren via een SSH tunnel). Daarnaast kan je bepaalde kolommen in de DB ook via een functie library (vb. pgcrypto) gaan encrypteren. Nadeel van dat laatste is wel dat je kolommen dan BLOBs (BYTEA) moeten zijn, dus het is niet echt toepasbaar op kolommen waar je op wil zoeken of mee wil rekenen.

    Verder gelden de algemene regels : geen makkelijk te raden username/paswoord combinaties gebruiken.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  10. #10

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Krueger
    This quote is hidden because you are ignoring this member. Show
    Hoe zie je dat dan concreet? Want zoiets als

    if(MD5Hash(password) == eenBepaaldeString) then
    Inorde
    else
    print("fout passwoord");

    is ook niet bepaald veilig.
    wat is daar onveilig aan?

    Dat ze je string kunnen bruteforcen of zo?
    no votes  

  11. #11

    Registered
    30/09/02
    Location
    Mariakerke
    Posts
    554
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Quote Originally Posted by killgore
    This quote is hidden because you are ignoring this member. Show
    wat is daar onveilig aan?

    Dat ze je string kunnen bruteforcen of zo?
    Dat niet, het passwoord kan je immers ook bruteforcen. Ik was eerder aan het denken in de richting van het decompileren van de java-code. Maar ofdat mogelijk is hangt natuurlijk af hoe het programma er uit komt te zien. (gedistribueerd/downloadbare class file met alles in/...)

    Misschien moet de threadposter ook eens wat meer info geven hoe hij het juist ziet
    no votes  

  12. #12

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Zelfs al kan hij decompileren, dan heeft hij enkel nog maar de hash en moet hij die hash gaan bruteforcen voor hij het kan gebruiken...

    Als je trouwens kan decompileren kan je evengoed je programmacode gaan herschrijven zonder die controle te gebruiken .
    no votes  

  13. #13

    Registered
    30/09/02
    Location
    Mariakerke
    Posts
    554
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Quote Originally Posted by killgore
    This quote is hidden because you are ignoring this member. Show
    Zelfs al kan hij decompileren, dan heeft hij enkel nog maar de hash en moet hij die hash gaan bruteforcen voor hij het kan gebruiken...

    Als je trouwens kan decompileren kan je evengoed je programmacode gaan herschrijven zonder die controle te gebruiken .
    Programmacode herschrijven is niet altijd simpel. Zeker niet als deze door programma's vervormd is (kben de naam van die techniek ff kwijt)

    Maar waarom nu juist een hash gebruiken, ipv het paswoord zelf?

    In mijn ogen is bij gedistribueerde toepassingen het principe van publieke/private sleutel + een challenge redelijk veilig.
    no votes  

  14. #14

    Registered
    03/03/04
    Location
    Blankenberge/Gent
    Posts
    1,105
    iTrader
    7 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Alrighty, eerst en vooral nen grote merci voor de vele nuttige replies! Kben ier weer volop aant bijleren


    Eerst en vooral, hashing of encryptie, ik zou sowieso in het programma nog een lange, willekeurige string (20 tekens ofzo?) voor en na het paswoord plakken, en die string dan hashen of encrypten. Kwestie van dictionary attacks toch onmogelijk te maken.

    Ik weet echter niet hoe gemakkellijk het is om een java class te decompilen?? Hoe kan ik dit tegengaan? (Bestaat er niet zoiets als javad ? )


    @Krueger : Het programma zal niet echt widely verspreidt worden. Ik schat hooguit een tiental klanten, lokaal dan nog...

    Om eerlijk te zijn is dit men eerste grote, "echte" programma dat ik ga maken...


    @dJeez : SSL is veronderstel ik enkel voor als de database server op een andere pc draait zodat ze geen data via het netwerk zouden kunnen onderscheppen? Of sla ik hier de bal mis? In eerste instantie zou ik met een database werken die lokaal draait... Dit klinkt misschien een beetje paranoia, maar stel dat er iemand de pc in handen krijgt waarop de database staat (en dus wss ook het programma), is er dan een manier om te voorkomen dat deze persoon de de inhoud van de database te weten komt?


    EDIT :
    if(MD5Hash(password) == eenBepaaldeString) then
    Inorde
    else
    print("fout passwoord");
    In dit geval zit tik toch weer met een hardcoded paswoord right??

    Greetz
    no votes  

  15. #15

    Registered
    30/09/02
    Location
    Mariakerke
    Posts
    554
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Java decompileren is zeer eenvoudig, met 1 klik kan je de broncode perfect lezen.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in