Kleine Vragen Topic #4

Gestart doorOne2xs1.965 reacties23.994 weergaven

1.966 berichten · pagina 129 van 132

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Als je het wilt encrypten en ook wilt uitlezen (neem aan dat iemand zijn gegeven nog kan uitlezen), dan moet die encryption-key op de server staan.

Ik vraag mij af waarom het encrypted moet zijn? Met een RBAC-systeem kan je toch ook bepaalde mensen rechten geven om het in te zien? Want wat als de sleutel verdwenen is?
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Milan schreef:
Eerdere citaten tonen
Jessee schreef:
Eerdere citaten tonen
Milan schreef:
Lang geleden dat hier iets gepost is redface
Heeft iemand ervaring met user-data geëncrypt opslaan? Echter dan wel dat deze data op te halen is met 2 verschillende wachtwoorden? Ik wil namelijk voor scouting wat medische gegevens gaan opslaan online en deze data encrypten, maar de ouders en ikzelf moet bij die data kunnen. Wat is een goede manier om dit binnen PHP toe te passen?

Waarom niet zelfde wachtwoord gebruiken?
Je hebt één passphrase om je data te encrypten (en decrypten) zoals het in database staat
En dmv php decrypt je dit dan aan de hand van een opgegeven passphrase (kunnen dus meerdere zijn)
Maar hoe werkt dat dan met meerdere wachtwoorden? Je hebt in principe toch maar 1 encryption key..

Niet hetzelfde wachtwoord komt omdat we allemaal eigen accounts hebben.

Of bedoel je een private key maken en die afzonderlijk encrypten voor dat account en mijn account?
À‰én pk op de server.
En alle users kunnen die data decrypten met hun password, die sturen ze naar de server. De server checkt of password valid is, zo ja dan decrypt hij de data met de servers PK (voor iedereen is het dezelfde servers PK, maar om die te verkrijgen (ze krijgen hem nooit zelf te zien) moet hun password goed zijn)
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Jessee schreef:
Eerdere citaten tonen
Milan schreef:
Eerdere citaten tonen
Jessee schreef:
Eerdere citaten tonen
Milan schreef:
Lang geleden dat hier iets gepost is redface
Heeft iemand ervaring met user-data geëncrypt opslaan? Echter dan wel dat deze data op te halen is met 2 verschillende wachtwoorden? Ik wil namelijk voor scouting wat medische gegevens gaan opslaan online en deze data encrypten, maar de ouders en ikzelf moet bij die data kunnen. Wat is een goede manier om dit binnen PHP toe te passen?

Waarom niet zelfde wachtwoord gebruiken?
Je hebt één passphrase om je data te encrypten (en decrypten) zoals het in database staat
En dmv php decrypt je dit dan aan de hand van een opgegeven passphrase (kunnen dus meerdere zijn)
Maar hoe werkt dat dan met meerdere wachtwoorden? Je hebt in principe toch maar 1 encryption key..

Niet hetzelfde wachtwoord komt omdat we allemaal eigen accounts hebben.

Of bedoel je een private key maken en die afzonderlijk encrypten voor dat account en mijn account?
À‰én pk op de server.
En alle users kunnen die data decrypten met hun password, die sturen ze naar de server. De server checkt of password valid is, zo ja dan decrypt hij de data met de servers PK (voor iedereen is het dezelfde servers PK, maar om die te verkrijgen (ze krijgen hem nooit zelf te zien) moet hun password goed zijn)
Maar hoe voorkom je dan dat als de server gehackt wordt deze data in handen van de hackers valt? Het gaat niet om gevoelige medische data maar ik wil toch een veilige implementatie hebben.
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Milan schreef:
Eerdere citaten tonen
Jessee schreef:
Eerdere citaten tonen
Milan schreef:
Eerdere citaten tonen
Jessee schreef:
Eerdere citaten tonen
Milan schreef:
Lang geleden dat hier iets gepost is redface
Heeft iemand ervaring met user-data geëncrypt opslaan? Echter dan wel dat deze data op te halen is met 2 verschillende wachtwoorden? Ik wil namelijk voor scouting wat medische gegevens gaan opslaan online en deze data encrypten, maar de ouders en ikzelf moet bij die data kunnen. Wat is een goede manier om dit binnen PHP toe te passen?

Waarom niet zelfde wachtwoord gebruiken?
Je hebt één passphrase om je data te encrypten (en decrypten) zoals het in database staat
En dmv php decrypt je dit dan aan de hand van een opgegeven passphrase (kunnen dus meerdere zijn)
Maar hoe werkt dat dan met meerdere wachtwoorden? Je hebt in principe toch maar 1 encryption key..

Niet hetzelfde wachtwoord komt omdat we allemaal eigen accounts hebben.

Of bedoel je een private key maken en die afzonderlijk encrypten voor dat account en mijn account?
À‰én pk op de server.
En alle users kunnen die data decrypten met hun password, die sturen ze naar de server. De server checkt of password valid is, zo ja dan decrypt hij de data met de servers PK (voor iedereen is het dezelfde servers PK, maar om die te verkrijgen (ze krijgen hem nooit zelf te zien) moet hun password goed zijn)
Maar hoe voorkom je dan dat als de server gehackt wordt deze data in handen van de hackers valt? Het gaat niet om gevoelige medische data maar ik wil toch een veilige implementatie hebben.
Als je server gehackt wordt heb je sowieso problemen.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
@Milan Hier zijn public en private keys voor gemaakt! Ik heb een proof of concept voor je gemaakt. Het werkt als volgt:

Tijdstip A
- user 1 registreert zich op je website
- je genereert een private key en een public key voor deze user (met openssl_pkey_new())
- je slaat de public key gewoon op zoals ie is, dus niet encrypted
- je encrypt de private key die je zojuist hebt aangemaakt met het wachtwoord van de user (met openssl_encrypt())
- de geëncrypte private key sla je op in je database

Tijdstip B
- user 2 registreert zich; dit is bijvoorbeeld een admin-user, daarmee doe je hetzelfde als met user 1 hierboven

Tijdstip C
- iemand slaat gevoelige informatie op (in mijn PoC is dat "Lennard heeft bloedgroep A") en encrypt dat met de public key van de klant
- het resultaat sla je op in de database

Tijdstip D
- user 1 (dus de klant) logt op je site in met zijn wachtwoord
- wachtwoord sla je op in $_SESSIE (je kunt ook een hash van dat wachtwoord ofzo gebruiken)
- je decrypt de private key van de user met het wachtwoord van de user
- je gebruikt de gedecrypte private key van de user om de opgeslagen hash met gevoelige informatie te decrypten
- et voila, je kunt de informatie zien

Tijdstip E
- user 2 (dus de admin) logt op je site in met zijn wachtwoord
- wachtwoord sla je op in $_SESSIE (je kunt ook een hash van dat wachtwoord ofzo gebruiken)
- je decrypt de private key van deze user (= admin) met het wachtwoord van de user
- je gebruikt de gedecrypte private key van de user om de opgeslagen hash met gevoelige informatie te decrypten
- et voila, je kunt de informatie zien

Volgens mij klopt het zo wel aardig. Check het wel even goed voor je het gebruikt, misschien zie ik iets heel obvious over het hoofd en is het zo lek als een mandje. biggrin
[COLOR= #0000BB]<?php
$klant_privkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC6xVTznrBu+Dml
p+w5QWuRkL+0JRRvypjWLD88qyosEBZ0isEiOgolBb7HJzfkRtZMpaG4/xSSZLa/
XWM/m+Me9oOA2GI+5E5rh6hIegZglwdWpQsd7hEKB8yZIv65Hf9Rwy8RU59AVJPU
BIfjlYxbQtokGMPJQo637Bs28egff8XlAmVYMltdwacBRYVFwxoBOGfWeXlWoC/o
gdr4acZV3LaHlGA0MJJkXQCaKk6oFdU2UdeaEhZ8nLCOEQWm8I9V4ZIrTQWrC2z1
EXC3wmxEyIr37uPXKGAWQ2LPcS3zFTUhh2CQlB8jIiKieBW2p7oqPg/UvscFkioJ
tkuPoIRLAgMBAAECggEADh77VEwMNOepnB+9GXsbwe66v8kJ6YXc1lyUD2c1kg1J
VVhkT80plTEBApexfx3n9/WR66XFjWf19TP/XADSRDYJLUWu7+hdEX45N/mZ39Wr
ZV6nH4UvXp3GV1GxBpgBBNKIDXxQDxIV9zK8f3WAHipIye/hZacVmUxNpnLVxQPI
BuS1+zNfJXeoGg31o/EA+ywgh/CHBRoZP0pGo4QJiaBWigsG/fnWvvYMI0uARrrL
JqTKpKlPjooe3FaWTO5pW3IRXItAe0n7ZdyTyNb6X05p8OBvSVDKjqPJBLCfNXlN
Y60vzKRRgjtKC5gKVeSPwPtUPktYctnZdJTx/iiKgQKBgQDbRpzcjUa4IffW8X1+
RdMQ9C4669Hs3Q4IzRxobBR85PNR+Zm9MnIg85I4iiXzgDN68u7dEf2jBwqZ0wjA
eGVIZFPw7RbgQ14baPi2leJZUWnCfTNEjeBzjQqKamCkN8c79Sfz02r7DygGl3XL
pR2Oa8UnZfm5K8bUg2g5WXfQwQKBgQDaDROZo9fvcp10bEIt22CQ0UH9LLshwRGy
ENRgN8Y5SYylRWmCC1zCTn9LOOcVjRegF3lwJjqRiThTdwSe5ajdwtN9qng5bE2M
PyswlB5sNou4CPJ7ZFlx6amzBDYaiy2WIfVU+1v4s+P7jUB/Y+YnHibM92SpGAkB
mTGS9JGMCwKBgDV8ifK6e0+a6YuCqGvOuGdgSI6Sy0gNu8ilz5IhGvZEGp4aVkfy
MCidgUNNX2iAEw6gh2dhZg8IPqu68F2SgJIh9t/D1Vqq1B+3gUN4WBgVZcjNJV5J
hUBqXPHadOxZtr2HVVGCdov67HZ/J3qfMhB1dUfg9gMXDI715sxmaHWBAoGAPelY
l1ceCK7SZiwW3k5brMK9qdT5jSv0ikqdAnTTo5Bujr6WpoXzYHhJTGJruoLFIn+H
y4APQSNlCs3QUg2DVPPseNHeMO+/VQLakIB94tvZ7/caYk6r1twxgtK/Seoal3Ys
4mQ8SPFK2jHRDlqfDpxRCAF2Y0yfwgRtPvySFuECgYB1mL99HIBOFUthQ1IfMErx
7tGa37sJx3ug3lqF9Q+OMUW377qAd4rVvaggCnSqJz3pY4kR8BrjreID8ychZt1K
XogZTC2sgcCkPW2yh599fgGyg+Ofynzl5sM05QMzPq6JfrXGgvhV1bOiFpCOJa4W
Bm8pdGVTcuSnaSCUS6OoQw==
-----END PRIVATE KEY-----[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$klant_pubkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAusVU856wbvg5pafsOUFr
kZC/tCUUb8qY1iw/PKsqLBAWdIrBIjoKJQW+xyc35EbWTKWhuP8UkmS2v11jP5vj
HvaDgNhiPuROa4eoSHoGYJcHVqULHe4RCgfMmSL+uR3/UcMvEVOfQFST1ASH45WM
W0LaJBjDyUKOt+wbNvHoH3/F5QJlWDJbXcGnAUWFRcMaAThn1nl5VqAv6IHa+GnG
Vdy2h5RgNDCSZF0AmipOqBXVNlHXmhIWfJywjhEFpvCPVeGSK00Fqwts9RFwt8Js
RMiK9+7j1yhgFkNiz3Et8xU1IYdgkJQfIyIiongVtqe6Kj4P1L7HBZIqCbZLj6CE
SwIDAQAB
-----END PUBLIC KEY-----[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]# user voert zijn wachtwoord in[/COLOR]
[COLOR= #0000BB]$klant_wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]berenpak12[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #FF8000]# je encrypt de private key van de user met zijn eigen wachtwoord[/COLOR]
[COLOR= #0000BB]$klant_privkey_encrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_encrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$klant_privkey[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$klant_wachtwoord[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #FF8000]# opslaan in database:
# - $klant_privkey_encrypted
# - $klant_pubkey[/COLOR]

[COLOR= #0000BB]$admin_privkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC0R6TJJ6jTVK2f
tzkfaHHxsLsNb5pxv3hsjAjo/K1LRnIFzYY2HZUk895xObxjBccqPhN4GcSsLaH4
lrdBzhtQJXjLsvkUhR4kjbu/3tv9w1Wt+WSTCkrt/2f60hyRsNqM0S/+cuGGJHdH
+FXIdS2nacC7AgJV/9T/+7wmEoiIwckubJ2JZYNhZbHWPiYhe8oAljjnk0W6Y2gc
LqGkUOS8Aw/IcRnVg1R7cTxdz7+fB50kyPW4gzUjLKijEdpUGYNnibqWMheLg0oX
xhI+ListTipE1E8gi7uYzlPoTMJbm84DfgCQ+3CyLP1HKRjkuDosN5JScoFhL1bs
QqoA3nupAgMBAAECggEAWlyCszTGwU5zTFfZMO34Fu2/hCeJYTRYlwfFu4pTDiT8
J/5xJBTF2eTGfTg0Pen6fyjoN02rL6Ybxm884aX+OLjfiDJn+KoUhrvn/G8nE1Xi
TzZu++iv0AUxyB2ipj/f+68qgD5y3frPMuq9jKF3Ra+TI+kI5LQ7viceknK9rtWj
VhdWKIdC3gdvRTIiR90xA54I3psnXDH2LpcpKJzZFKtFTTYVVuQ8zEtjZVJ28Tum
YORgKvLGxd6aQtz4nGGSR8bFBJu8VP8iq5M1J+jUfL1T2Fq26s5lH6FygVGHhF7f
QG0KX0CUyJf1JsIu95dvRxNL3kGB5Iv6ommxByTUFQKBgQDj4NqbloDIMb6mq5fH
+JHceFGAmYZ+SkfODXCMr76XFVF++VjJTc0S7h+YQJb1fqR/91/EXlVf8yATgOsS
eN7FUYF+wPkeI0QbMZjrNM2aZxEAQXKUL1v57vi3+xmGVcdqpLlzGnE9M3d7cBQQ
/mMA1FHIGzBGWXT2MpFrZwptbwKBgQDKhw5IzlMImBZaIWtmhaBQXByQvc4DOZN3
c4mcqSYEycSqx7I6B//rjqxpSwYVry2R1oCuXmtC31jmk655CmaHDikdb7O124dL
7mI0AO/vQU+nJNVxLNNkQOTf/pgofGSU4Nenx00wCIzMHKZWfwvIFI1CWiFpgDZj
4uiCvwjMZwKBgCUtVfz0POZsVzJR5F1XjFRvvLxCT9Liw3w2bRpGwc1cSQNyIq4U
51QjTTxFrVs34haOgS1ERqF0xNLpwXAuEAoZFgtb6EimcEIPgWc+Ih0Cm59zDgJn
B5ZrCmDZsnxcGkCnxymkMr1NXDzjOCLdncFQ4lbHOMUBazePYHIpSWY5AoGATxxy
d/4gcTr3gD2Ntn58IOfaQK/jyV60O/TlzExGjZhDOnLHK+P0FA+nSXoE5nOHWXBw
06wOOhEEqQ0HGkD1y8u8Q8Neb6tRLlfwBGBZWRwqASBiP9NCv+aZgOXyid4NbBpo
IyG3BQxR82k9kIwQDhf5FfIfGxb6KAp6yJfW2AECgYA3nWx+Bb40YMZ6mkSU12t/
gigPc8yb6KpgjWtnm6WzkUB4ZNQn7XSeqlivAcGrIUVFfUakz957IarTJNqPWQIM
gOUiZ+vG2qrMHY7Zp2GAKcN+IijX/HYeFfPaEAKJBsdHidhFmw61YP06Kr+x12AN
wRGm85gsB153hseW44enzQ==
-----END PRIVATE KEY-----[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$admin_pubkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtEekySeo01Stn7c5H2hx
8bC7DW+acb94bIwI6PytS0ZyBc2GNh2VJPPecTm8YwXHKj4TeBnErC2h+Ja3Qc4b
UCV4y7L5FIUeJI27v97b/cNVrflkkwpK7f9n+tIckbDajNEv/nLhhiR3R/hVyHUt
p2nAuwICVf/U//u8JhKIiMHJLmydiWWDYWWx1j4mIXvKAJY455NFumNoHC6hpFDk
vAMPyHEZ1YNUe3E8Xc+/nwedJMj1uIM1IyyooxHaVBmDZ4m6ljIXi4NKF8YSPi4r
LU4qRNRPIIu7mM5T6EzCW5vOA34AkPtwsiz9RykY5Lg6LDeSUnKBYS9W7EKqAN57
qQIDAQAB
-----END PUBLIC KEY-----[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]# admin voert zijn wachtwoord in[/COLOR]
[COLOR= #0000BB]$admin_wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]mamaappelsap1[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #FF8000]# je encrypt de private key van de admin met zijn eigen wachtwoord[/COLOR]
[COLOR= #0000BB]$admin_privkey_encrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_encrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$admin_privkey[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$admin_wachtwoord[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #FF8000]# de string die je beveiligd wil opslaan[/COLOR]
[COLOR= #0000BB]$te_beveiligen_string[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]Lennard heeft bloedgroep A[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]# de string encrypten om een encrypted ($encrypted) string te krijgen die je in de database kunt zetten[/COLOR]
[URL="http://www.php.net/openssl_public_encrypt"]openssl_public_encrypt[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$te_beveiligen_string[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$klant_pubkey[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #FF8000]# opslaan in database: $encrypted

# klant wil data inzien en geeft zijn wachtwoord in:[/COLOR]
[COLOR= #0000BB]$wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]berenpak12[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$klant_privkey_decrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_decrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$klant_privkey_encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$wachtwoord[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# eerst weer achter de private key zien te komen[/COLOR]
[URL="http://www.php.net/openssl_private_decrypt"]openssl_private_decrypt[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$decrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$klant_privkey_decrypted[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# met private key kun je de encrypted string ($encrypted, staat in de database) decrypten[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$decrypted[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# string(26) "Lennard heeft bloedgroep A"

# admin wil data inzien en geeft zijn wachtwoord in:[/COLOR]
[COLOR= #0000BB]$wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]mamaappelsap1[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$klant_privkey_decrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_decrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$admin_privkey_encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$wachtwoord[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# eerst weer achter de private key zien te komen[/COLOR]
[URL="http://www.php.net/openssl_private_decrypt"]openssl_private_decrypt[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$decrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$admin_privkey_decrypted[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# met private key kun je de encrypted string ($encrypted, staat in de database) decrypten[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$decrypted[/COLOR][COLOR= #007700]);[/COLOR] # string[COLOR= #007700]([/COLOR][COLOR= #0000BB]26[/COLOR][COLOR= #007700])[/COLOR] [COLOR= #DD0000]"Lennard heeft bloedgroep A"[/COLOR]


Op die manier kunnen zowel klant als admin de data inzien, elk alleen met hun eigen wachtwoord. Wanneer de server wordt gehackt en de wachtwoorden veilig zijn opgeslagen kan de hacker alleen maar de encrypted data zien. In bovenstaand geval is dat dit:

string(256) "!|nG&2vmFg)7 m8$j5EB[sTdg    {F.&r;C9ixx4t"{r+T2n= d.*!vQ-nK,U[R:YN8{fJ_!`DulDjzO]+OR4I+~W    "


en daar heb je dus niets aan als hacker. pompom
Lijkt nu ingewikkeld, maar als je er een mooie class voor schrijft dan valt het best wel mee. Lastigste is om even goed te checken of het daadwerkelijk veilig is zo.

toevoeging op donderdag 1 februari 2018, 23:30:45:
update:
Wat je zoekt heet asymmetric encryption; zie bijv. hier voor hetzelfde idee en hier voor (diep) theoretische uitleg.

toevoeging op donderdag 1 februari 2018, 23:33:59:
update 2:
Ah, openssl_seal() over het hoofd gezien, daar werkt het beter mee. Zo te zien kunnen openssl_public_encrypt() en openssl_private_decrypt() maar met 245 bytes omgaan. Zie hier voor een handigere opzet, het idee is hetzelfde als de mijne.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Kudos voor @Lennard! smileIk ga me er ook eens in verdiepen.

[offtopic]
lol @ berenpak12 emoWaar kwam dat ook alweer vandaan biggrin[/offtopic]
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
Kudos voor @Lennard! smile
Ik ga me er ook eens in verdiepen.

[offtopic]
lol @ berenpak12 emoWaar kwam dat ook alweer vandaan biggrin[/offtopic]
Thanks biggrin best interessant hoe die private en public keys enzo werken, maar encryptie op zichzelf is natuurlijk al rete-interessant.

En geen idee, volgens mij van FOK! emo
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Ik gebruik dat principe ook middels mijn Yubikey (encryptie usb ding)
Staat Private Key op mijn Yubikey, waar je niet bij kan. Die werkt met zowel ssh (gpg-agent) als gpg (public/private key)

Ik kan files encrypten dmv mijn Yubikey, en hier dan public keys aan toevoegen.
Iedereen met de bij de public keys horende private keys kan mijn file dan decrypten.

Kan dus ook zo maken dat ik mijn eigen public niet toevoeg, dan kan ik m zelf ook niet meer decrypten.

Zo kan je ook data naar elkaar versturen dat echt niet af te luisteren is.
Als je een file encrypt met een password, en opstuurt naar iemand. Heeft diegene een password nodig. Die moet je dus opsturen, dus is het al niet veilig meer.
Je stuurt elkaar je public key. Waar een hacker niets mee kan.
En dan encrypt je en voeg je iemands public toe en dat verstuur je dan. Met zijn private kan die hem decrypten. En die private is nooit over netwerk oid verstuurd
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
@Lennard thanks!, volgens mij werkt je PoC niet gezien als ik dit doe:

regel 108 & 109: $decrypted naar $decrypted2 verander

Ik null terug krijg in var_dump ($decrypted word niet overschreven, vandaar dat het resultaat hetzelfde leek). Hoe is het sowieso mogelijk dat je encrypte data met een andere private key kan decrypten?

Ik ga je andere linkjes eventjes bekijken!
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
@Lennard thanks!, volgens mij werkt je PoC niet gezien als ik dit doe:

regel 108 & 109: $decrypted naar $decrypted2 verander

Ik null terug krijg in var_dump ($decrypted word niet overschreven, vandaar dat het resultaat hetzelfde leek). Hoe is het sowieso mogelijk dat je encrypte data met een andere private key kan decrypten?

Ik ga je andere linkjes eventjes bekijken!
Oja shit. Logisch ook wel. Poging twee dan, heb het nu meteen met openssl_seal() en openssl_open() gedaan, die zijn daar specifiek voor geschreven.
[COLOR= #0000BB]<?php
$klant_privkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC6xVTznrBu+Dml
p+w5QWuRkL+0JRRvypjWLD88qyosEBZ0isEiOgolBb7HJzfkRtZMpaG4/xSSZLa/
XWM/m+Me9oOA2GI+5E5rh6hIegZglwdWpQsd7hEKB8yZIv65Hf9Rwy8RU59AVJPU
BIfjlYxbQtokGMPJQo637Bs28egff8XlAmVYMltdwacBRYVFwxoBOGfWeXlWoC/o
gdr4acZV3LaHlGA0MJJkXQCaKk6oFdU2UdeaEhZ8nLCOEQWm8I9V4ZIrTQWrC2z1
EXC3wmxEyIr37uPXKGAWQ2LPcS3zFTUhh2CQlB8jIiKieBW2p7oqPg/UvscFkioJ
tkuPoIRLAgMBAAECggEADh77VEwMNOepnB+9GXsbwe66v8kJ6YXc1lyUD2c1kg1J
VVhkT80plTEBApexfx3n9/WR66XFjWf19TP/XADSRDYJLUWu7+hdEX45N/mZ39Wr
ZV6nH4UvXp3GV1GxBpgBBNKIDXxQDxIV9zK8f3WAHipIye/hZacVmUxNpnLVxQPI
BuS1+zNfJXeoGg31o/EA+ywgh/CHBRoZP0pGo4QJiaBWigsG/fnWvvYMI0uARrrL
JqTKpKlPjooe3FaWTO5pW3IRXItAe0n7ZdyTyNb6X05p8OBvSVDKjqPJBLCfNXlN
Y60vzKRRgjtKC5gKVeSPwPtUPktYctnZdJTx/iiKgQKBgQDbRpzcjUa4IffW8X1+
RdMQ9C4669Hs3Q4IzRxobBR85PNR+Zm9MnIg85I4iiXzgDN68u7dEf2jBwqZ0wjA
eGVIZFPw7RbgQ14baPi2leJZUWnCfTNEjeBzjQqKamCkN8c79Sfz02r7DygGl3XL
pR2Oa8UnZfm5K8bUg2g5WXfQwQKBgQDaDROZo9fvcp10bEIt22CQ0UH9LLshwRGy
ENRgN8Y5SYylRWmCC1zCTn9LOOcVjRegF3lwJjqRiThTdwSe5ajdwtN9qng5bE2M
PyswlB5sNou4CPJ7ZFlx6amzBDYaiy2WIfVU+1v4s+P7jUB/Y+YnHibM92SpGAkB
mTGS9JGMCwKBgDV8ifK6e0+a6YuCqGvOuGdgSI6Sy0gNu8ilz5IhGvZEGp4aVkfy
MCidgUNNX2iAEw6gh2dhZg8IPqu68F2SgJIh9t/D1Vqq1B+3gUN4WBgVZcjNJV5J
hUBqXPHadOxZtr2HVVGCdov67HZ/J3qfMhB1dUfg9gMXDI715sxmaHWBAoGAPelY
l1ceCK7SZiwW3k5brMK9qdT5jSv0ikqdAnTTo5Bujr6WpoXzYHhJTGJruoLFIn+H
y4APQSNlCs3QUg2DVPPseNHeMO+/VQLakIB94tvZ7/caYk6r1twxgtK/Seoal3Ys
4mQ8SPFK2jHRDlqfDpxRCAF2Y0yfwgRtPvySFuECgYB1mL99HIBOFUthQ1IfMErx
7tGa37sJx3ug3lqF9Q+OMUW377qAd4rVvaggCnSqJz3pY4kR8BrjreID8ychZt1K
XogZTC2sgcCkPW2yh599fgGyg+Ofynzl5sM05QMzPq6JfrXGgvhV1bOiFpCOJa4W
Bm8pdGVTcuSnaSCUS6OoQw==
-----END PRIVATE KEY-----[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$klant_pubkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAusVU856wbvg5pafsOUFr
kZC/tCUUb8qY1iw/PKsqLBAWdIrBIjoKJQW+xyc35EbWTKWhuP8UkmS2v11jP5vj
HvaDgNhiPuROa4eoSHoGYJcHVqULHe4RCgfMmSL+uR3/UcMvEVOfQFST1ASH45WM
W0LaJBjDyUKOt+wbNvHoH3/F5QJlWDJbXcGnAUWFRcMaAThn1nl5VqAv6IHa+GnG
Vdy2h5RgNDCSZF0AmipOqBXVNlHXmhIWfJywjhEFpvCPVeGSK00Fqwts9RFwt8Js
RMiK9+7j1yhgFkNiz3Et8xU1IYdgkJQfIyIiongVtqe6Kj4P1L7HBZIqCbZLj6CE
SwIDAQAB
-----END PUBLIC KEY-----[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]# user voert zijn wachtwoord in[/COLOR]
[COLOR= #0000BB]$klant_wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]berenpak12[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #FF8000]# je encrypt de private key van de user met zijn eigen wachtwoord[/COLOR]
[COLOR= #0000BB]$klant_privkey_encrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_encrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$klant_privkey[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$klant_wachtwoord[/COLOR][COLOR= #007700]);[/COLOR]
[COLOR= #FF8000]# opslaan in database:
# - $klant_privkey_encrypted
# - $klant_pubkey[/COLOR]

[COLOR= #0000BB]$admin_privkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC0R6TJJ6jTVK2f
tzkfaHHxsLsNb5pxv3hsjAjo/K1LRnIFzYY2HZUk895xObxjBccqPhN4GcSsLaH4
lrdBzhtQJXjLsvkUhR4kjbu/3tv9w1Wt+WSTCkrt/2f60hyRsNqM0S/+cuGGJHdH
+FXIdS2nacC7AgJV/9T/+7wmEoiIwckubJ2JZYNhZbHWPiYhe8oAljjnk0W6Y2gc
LqGkUOS8Aw/IcRnVg1R7cTxdz7+fB50kyPW4gzUjLKijEdpUGYNnibqWMheLg0oX
xhI+ListTipE1E8gi7uYzlPoTMJbm84DfgCQ+3CyLP1HKRjkuDosN5JScoFhL1bs
QqoA3nupAgMBAAECggEAWlyCszTGwU5zTFfZMO34Fu2/hCeJYTRYlwfFu4pTDiT8
J/5xJBTF2eTGfTg0Pen6fyjoN02rL6Ybxm884aX+OLjfiDJn+KoUhrvn/G8nE1Xi
TzZu++iv0AUxyB2ipj/f+68qgD5y3frPMuq9jKF3Ra+TI+kI5LQ7viceknK9rtWj
VhdWKIdC3gdvRTIiR90xA54I3psnXDH2LpcpKJzZFKtFTTYVVuQ8zEtjZVJ28Tum
YORgKvLGxd6aQtz4nGGSR8bFBJu8VP8iq5M1J+jUfL1T2Fq26s5lH6FygVGHhF7f
QG0KX0CUyJf1JsIu95dvRxNL3kGB5Iv6ommxByTUFQKBgQDj4NqbloDIMb6mq5fH
+JHceFGAmYZ+SkfODXCMr76XFVF++VjJTc0S7h+YQJb1fqR/91/EXlVf8yATgOsS
eN7FUYF+wPkeI0QbMZjrNM2aZxEAQXKUL1v57vi3+xmGVcdqpLlzGnE9M3d7cBQQ
/mMA1FHIGzBGWXT2MpFrZwptbwKBgQDKhw5IzlMImBZaIWtmhaBQXByQvc4DOZN3
c4mcqSYEycSqx7I6B//rjqxpSwYVry2R1oCuXmtC31jmk655CmaHDikdb7O124dL
7mI0AO/vQU+nJNVxLNNkQOTf/pgofGSU4Nenx00wCIzMHKZWfwvIFI1CWiFpgDZj
4uiCvwjMZwKBgCUtVfz0POZsVzJR5F1XjFRvvLxCT9Liw3w2bRpGwc1cSQNyIq4U
51QjTTxFrVs34haOgS1ERqF0xNLpwXAuEAoZFgtb6EimcEIPgWc+Ih0Cm59zDgJn
B5ZrCmDZsnxcGkCnxymkMr1NXDzjOCLdncFQ4lbHOMUBazePYHIpSWY5AoGATxxy
d/4gcTr3gD2Ntn58IOfaQK/jyV60O/TlzExGjZhDOnLHK+P0FA+nSXoE5nOHWXBw
06wOOhEEqQ0HGkD1y8u8Q8Neb6tRLlfwBGBZWRwqASBiP9NCv+aZgOXyid4NbBpo
IyG3BQxR82k9kIwQDhf5FfIfGxb6KAp6yJfW2AECgYA3nWx+Bb40YMZ6mkSU12t/
gigPc8yb6KpgjWtnm6WzkUB4ZNQn7XSeqlivAcGrIUVFfUakz957IarTJNqPWQIM
gOUiZ+vG2qrMHY7Zp2GAKcN+IijX/HYeFfPaEAKJBsdHidhFmw61YP06Kr+x12AN
wRGm85gsB153hseW44enzQ==
-----END PRIVATE KEY-----[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$admin_pubkey[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtEekySeo01Stn7c5H2hx
8bC7DW+acb94bIwI6PytS0ZyBc2GNh2VJPPecTm8YwXHKj4TeBnErC2h+Ja3Qc4b
UCV4y7L5FIUeJI27v97b/cNVrflkkwpK7f9n+tIckbDajNEv/nLhhiR3R/hVyHUt
p2nAuwICVf/U//u8JhKIiMHJLmydiWWDYWWx1j4mIXvKAJY455NFumNoHC6hpFDk
vAMPyHEZ1YNUe3E8Xc+/nwedJMj1uIM1IyyooxHaVBmDZ4m6ljIXi4NKF8YSPi4r
LU4qRNRPIIu7mM5T6EzCW5vOA34AkPtwsiz9RykY5Lg6LDeSUnKBYS9W7EKqAN57
qQIDAQAB
-----END PUBLIC KEY-----[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]# admin voert zijn wachtwoord in[/COLOR]
[COLOR= #0000BB]$admin_wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]mamaappelsap1[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #FF8000]# je encrypt de private key van de admin met zijn eigen wachtwoord[/COLOR]
[COLOR= #0000BB]$admin_privkey_encrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_encrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$admin_privkey[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$admin_wachtwoord[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #FF8000]# de string die je beveiligd wil opslaan[/COLOR]
[COLOR= #0000BB]$te_beveiligen_string[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]Lennard heeft bloedgroep A[/COLOR][COLOR= #007700];[/COLOR]

[COLOR= #FF8000]# data sealen[/COLOR]
[URL="http://www.php.net/openssl_seal"]openssl_seal[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$te_beveiligen_string[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$keys[/COLOR][COLOR= #007700],[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$klant_pubkey[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$admin_pubkey[/COLOR][COLOR= #007700]));[/COLOR]

[COLOR= #FF8000]# opslaan in database:
# - $encrypted
# - $keys

# klant wil data inzien en geeft zijn wachtwoord in:[/COLOR]
[COLOR= #0000BB]$wachtwoord_klant[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]berenpak12[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$klant_privkey_decrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_decrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$klant_privkey_encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$wachtwoord_klant[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# eerst weer achter de private key zien te komen[/COLOR]
[URL="http://www.php.net/openssl_open"]openssl_open[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$decrypted_klant[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$keys[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]0[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]$klant_privkey_decrypted[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# met private key kun je de encrypted string ($encrypted, staat in de database) decrypten[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$decrypted_klant[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# string(26) "Lennard heeft bloedgroep A"

# admin wil data inzien en geeft zijn wachtwoord in:[/COLOR]
[COLOR= #0000BB]$wachtwoord_admin[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]mamaappelsap1[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$admin_privkey_decrypted[/COLOR] [COLOR= #007700]=[/COLOR] openssl_decrypt[COLOR= #007700]([/COLOR][COLOR= #0000BB]$admin_privkey_encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]BF-ECB[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$wachtwoord_admin[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# eerst weer achter de private key zien te komen[/COLOR]
[URL="http://www.php.net/openssl_open"]openssl_open[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$encrypted[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$decrypted_admin[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$keys[/COLOR][COLOR= #007700][[/COLOR][COLOR= #0000BB]1[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]$admin_privkey_decrypted[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]# met private key kun je de encrypted string ($encrypted, staat in de database) decrypten[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$decrypted_admin[/COLOR][COLOR= #007700]);[/COLOR] # string[COLOR= #007700]([/COLOR][COLOR= #0000BB]26[/COLOR][COLOR= #007700])[/COLOR] [COLOR= #DD0000]"Lennard heeft bloedgroep A"[/COLOR]
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
@Lennard, thanks! ziet er goed uit! Ga kijken of ik het kan toepassen binnen mijn eigen applicatie.

toevoeging op vrijdag 2 februari 2018, 14:42:51:
Oke nog één vraag haha, moeten die $keys ook nog eens encrypt worden met het wachtwoord?
0
Berichten
13.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
De array $keys bevat voor elke public key de ge-encrypte versie van de key waarmee de data versleuteld is.

Voor het decrypten zijn de ge-encrypte data, de versleutelde key uit $keys (die bij de public key hoort) en de private key. Aan alleen de versleutelde key uit $keys hebben ze dus niets.

Verder raad ik ook aan om na gebruik van de key deze weer vrij te maken d.m.v. php openssl_free_key Dat blijkt niet nodig yummie
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Huh?

SELECT u.filename, ui.Featured, u.Author, u.Description, ui.InGallery, ui.Description AS AltDescription
                    FROM uploads_items ui
                    INNER JOIN uploads u 
                         ON ui.UploadID = u.ID
                    WHERE Uploadtype_ID=7
                        AND ui.InGallery = 1
                    AND ui.KindID=4576


Kan iemand mij uitleggen waarom ik de records zie met InGallery met waarde 0 erin, tetwijl ik toch echt expliciet om InGallery = 1 vraag?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Iemand?
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Aarclay schreef:
Iemand?
Had er naar gekeken maar geen idee. Probeer eens HAVING ipv WHERE?
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren