Web Cryptography API

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 28. Juli 2015, 11:22

Hab zwar schon im django-secure-js-login darüber geschrieben, aber ein eigener Thread losgelöst davon, macht vielleicht auch Sinn...

Zum Thema hab ich noch zwei git repositories gemacht: Zu https://github.com/jedie/WebCrypto-compatibility es gibt ja sie schöne Test Seite https://diafygi.github.io/webcrypto-examples/ aber dort will man keine Browser-Informationen führen, siehe: https://github.com/diafygi/webcrypto-examples/issues/15

Dann gibt es noch: http://caniuse.com/#feat=cryptography
Aber die Liste ist viel zu grob, siehe: https://github.com/Fyrd/caniuse/issues/1759

Dann existiert noch: https://docs.google.com/spreadsheets/d/ ... A0/pubhtml siehe auch: http://blog.engelke.com/2015/03/06/wher ... api-today/
Aber hier fehlen mir einige Browser/OS Kombinationen...

Also hab ich halt https://github.com/jedie/WebCrypto-compatibility gemacht um ein paar Screenshots von https://diafygi.github.io/webcrypto-examples/ zusammen zu tragen.



Zu https://github.com/jedie/WebCrypto-bench :
Ich nutzte ja in django-secure-js-login die PBKDF2 hash Funktion... Aber welchen "Iteration" Wert kann man wohl nutzten?!? Um den testen zu können, hab ich das repro gemacht.
Deswegen existiert bisher nur eine Test-Seite hier: https://jedie.github.io/WebCrypto-bench/PBKDF2/ :P

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2452
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dienstag 28. Juli 2015, 12:07

jens hat geschrieben:Aber welchen "Iteration" Wert kann man wohl nutzten?!?
Es gibt Empfehlungen dazu, wobei man natürlich aufpassen muss da die natürlich mit voranschreitender Entwicklung veralten. Ich würde einfach mal schauen was Django nutzt, dass dürfte ein akzeptables Minimum sein. Je nachdem wie lange es damit dauert, empfiehlt es sich natürlich den Wert noch soweit zu erhöhen wie man es sich zeitlich erlauben kann.

Die Iterationen musst du natürlich in der Zukunft auch anpassen. Django hat glaub ich Richtlinien dazu und die erhöhen die Anzahl der Iterationen mit jedem Release, die würde ich mir mal anschauen. Ansonsten gilt ja Moore's Law was Performance angeht, insofern sollte man nach 18 Monaten den Wert nochmal nach erhöhen.

Konkret hiesse das 24000 wäre unser Minimum, dass ist zumindest was Django nutzt. Auf deiner Benchmark Seite dauert es damit allerdings nur 0.06s. Das ist schon sehr schnell, vorallem da es ja nur um den Login geht. Ich glaub da kann man auch eine Sekunde warten und damit wären wir bei ca. 400000 Iterationen, zumindest auf meinem MacBook Air (Mid 2011, 1.8 GHz i7). Das dürfte natürlich auf mobilen Geräten etwas anders aussehen aber von einem Minimum von 24000 ausgehend, kann man die 400000 ja noch deutlich runterschrauben um auch auf Smartphones und Tablets nicht zu lange warten zu müssen.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 28. Juli 2015, 12:39

Hab nun auch mal Tests laufen lassen: https://github.com/jedie/WebCrypto-benc ... e35994d672

Leider läuft mein Raspberry Pi z.Z. nicht :( Aber mein Cubietruck...

Werte vom Cubietruck:
duration: 0.207sec for 10.000 iterations.
duration: 1.665sec for 100.000 iterations.
duration: 16.668sec for 1.000.000 iterations.
Werte auf meinem i7-4790K (mit Firefox):
duration: 0.03sec for 10.000 iterations.
duration: 0.159sec for 100.000 iterations.
duration: 1.429sec for 1.000.000 iterations.
duration: 14.081sec for 10.000.000 iterations.
Also irgendwas an die 100.000 sind schon ok.
Aber Handy/tablet sollten auch noch getestet werden...

@DasIch: Kannst du die Werte von deinem Mac, wie im Format hier: https://github.com/jedie/WebCrypto-bench#pbkdf2-test posten?!?
Dann würde ich die einfügen.

Ansonsten hat jemand einen Raspberry Pi 1 laufen und kann man testen?!?

EDIT: Falls jemand es auf seinem Handy/Tablet probieren will:
Bild
QR-code ist die URL: https://jedie.github.io/WebCrypto-bench/PBKDF2/

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 28. Juli 2015, 12:53

Hab es mal auf meinem alten Galaxy S3 ausgeführt:
0.14sec - 1.000 iterations
0.209sec - 10.000 iterations
0.995sec - 100.000 iterations
7,567sec - 1.000.000 iterations
Ein wenig schneller als der Cubietruck :shock:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 28. Juli 2015, 18:12

Altes Galaxy Tab 2 10.1 (GT-P5110):
calculate PBKDF2...Generated PBKDF2 hash:b7e8df10cc21ff1ca55a032792b632d09a4b74a71d6284501f0f77c849b1b50f
duration: 0.117sec for 1000 iterations. calculate PBKDF2...Generated PBKDF2 hash:708def111d20ff88702f5d17ed125c952790877add91e3b25277debcac0058d7
duration: 0.361sec for 10000 iterations. calculate PBKDF2...Generated PBKDF2 hash:594b28f3bd8152cb577c58e62b09e02905e787c986d607c4a4006b3ed9d5ef14
duration: 1.456sec for 100000 iterations. calculate PBKDF2...Generated PBKDF2 hash:d5eefdbededfab47b5e873aba6ebbe50ad02d10945a208d8bf5d4920db2a1d42
duration: 12.096sec for 1000000 iterations.
Ein tick schneller als cubietruck...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 29. Juli 2015, 09:44

Zu https://github.com/jedie/WebCrypto-compatibility : Ich hab noch weitere Beispiele gesammelt und dabei den Test-Account von https://www.browserstack.com/ genutzt:
  • Safari v600.1.4 on iPad Air with iOS v8.3
  • IEMobile v11 on Nokia Lumia 930 with Windows Phone v8.1
  • Chromium v39 Android 5.0 on Samsung Galaxy S6

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten