/OcadoTechnology
The Slower the Stronger
A Story of Password Hash Migration
Who am I?
Tomasz Borowiec (tomasz@borowiec.org)
Senior Software Engineer @ Ocado Technology Kraków
Agenda
● Slow hashing algorithms
○ BCrypt hash - a closer look
○ Live demo
○ Hash computing times comparison
● Migration process
○ ‘Before’ state
○ Why change?
○ AppSec’s crypto lib
○ Migration plan
○ Problems
● Summary & Links
Image: http://mariafresa.net/single/2223016.html
Hashing algorithms
Image: https://blog.varonis.com/the-definitive-guide-to-cryptographic-hash-functions-part-1/
Hashing algorithms
• Fast old school and general purpose hash functions
• Examples: MD5, SHA1, SHA256, SHA512, SHA-3
• Slow hashing algorithms a.k.a. BCrypt and friends
• Examples: Argon2, PBKDF-2, SCrypt, BCrypt
Slow hashing algorithms
• Argon2
• PBKDF-2
• SCrypt
• BCrypt
Providing secure
hashes with salt
Designed to slow
attacker down
Need to be
reasonably
configured
BCrypt hash
Let’s hash “ocado” with BCrypt:
$2a$08$CSBUe24az8PPuFs7Gch5GuCOdD20hJ6Qk9eOVlA9cJzZLkFkDLq66
BCrypt hash
Let’s hash “ocado” with BCrypt:
$2a$08$CSBUe24az8PPuFs7Gch5GuCOdD20hJ6Qk9eOVlA9cJzZLkFkDLq66
BCrypt hash
Let’s hash “ocado” with BCrypt:
$2a$08$CSBUe24az8PPuFs7Gch5GuCOdD20hJ6Qk9eOVlA9cJzZLkFkDLq66
BCrypt hash
Let’s hash “ocado” with BCrypt:
$2a$08$CSBUe24az8PPuFs7Gch5GuCOdD20hJ6Qk9eOVlA9cJzZLkFkDLq66
BCrypt hash
Let’s hash “ocado” with BCrypt:
$2a$08$CSBUe24az8PPuFs7Gch5GuCOdD20hJ6Qk9eOVlA9cJzZLkFkDLq66
Hashing speed comparison - live demo
Source code: https://github.com/tborowiec/password-hash-migration
How long does it take to compute a hash?
Source: http://www.netmux.com/blog/how-to-build-a-password-cracking-rig
• Date of article: January 6, 2018
• $5000 “budget” cracking rig (4 GPUs)
• Benchmark: Hashcat v3.20
• Results:
• MD5: 76526.9 MH/s -> 19_000_000_000 hashes / second / GPU
• SHA1: 25963.3 MH/s -> 6_500_000_000 hashes / second / GPU
• BCrypt^5: 43551 H/s -> 10_887 hashes / second / GPU
Migration process
What Ocado Technology does
(1) Cloud and AI
(2) Automation and robotics
(3) Big Data
(4) Web and app development
(5) IoT
‘Before’ state
● Our application used BCrypt^8
● Some old customers still had MD5
○ For them, it was bcrypt(md5(password))
Customer Number Password Hash Password Hash Type
12345678 $2a$08$JIIFVb3YQsNztayuUJNY8.HSCRZfHfrNjFi
BfBV2G4gzFHhfjrf8O
MD5
23456789 $2a$08$w4rhprdz/.hblW0ayNrQlOr3TD17eMqMRxe
oEPyAcfcBdeoajCUaq
BCRYPT
‘Before’ state
● Our application used BCrypt^8
● Some old customers still had MD5
○ For them, it was bcrypt(md5(password))
Customer Number Password Hash Password Hash Type
12345678 $2a$08$JIIFVb3YQsNztayuUJNY8.HSCRZfHfrNjFi
BfBV2G4gzFHhfjrf8O
MD5
23456789 $2a$08$w4rhprdz/.hblW0ayNrQlOr3TD17eMqMRxe
oEPyAcfcBdeoajCUaq
BCRYPT
‘Before’ state
● Our application used BCrypt^8
● Some old customers still had MD5
○ For them, it was bcrypt(md5(password))
Customer Number Password Hash Password Hash Type
12345678 $2a$08$JIIFVb3YQsNztayuUJNY8.HSCRZfHfrNjFi
BfBV2G4gzFHhfjrf8O
MD5
23456789 $2a$08$w4rhprdz/.hblW0ayNrQlOr3TD17eMqMRxe
oEPyAcfcBdeoajCUaq
BCRYPT
Why change?
Why change?
• Our Information Security team suggested that a change is needed
• BCrypt^8 on our machines took around 80ms to compute
Number of iterations
(N -> 2^N)
Average (ms) Median (ms) Throughput (no. of
samples / minute)
8 83 78 705
9 103 99 573
10 147 144 402
11 237 232 251
12 416 410 143
13 782 768 76
AppSec’s crypto lib
Image: https://www.bankinfosecurity.com/application-security-four-key-steps-a-7778
AppSec’s crypto lib
• PasswordHasher provided by AppSec takes care of password hashing
• Uses well-known and safe crypto implementations (e.g. Bouncy Castle)
• Produces a hashVector that acts as a password hash
• Once migrated - controlled by AppSec since
• … PROFIT!
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
Example hashVector
MD5Hasher$c29tZUVtYWlsQGV4YW1wbGUuY29t;
BCryptHasher$2a$08$CSBUe24az8PPuFs7Gch5Gu;
PBKDF2Hasher$SHA_256$250000$315bfda60fa8a7d2ab1e45b6bf7860d7;
4a9a8b5f3c8856e361b4dadfc7c272c610d00f486e2570b7e4f37ee5e3e2194d
PasswordHasher API
public interface PasswordHasher {
String hash(String password);
VerificationResult verify(String password, String hashVector);
String migrate(String hashVector);
}
PasswordHasher API
public interface PasswordHasher {
String hash(String password);
VerificationResult verify(String password, String hashVector);
String migrate(String hashVector);
}
String hashVector = passwordHasher.hash( “ocado”);
// PBKDF2Hasher$SHA_256$250000$4cc...707;65d...8b9
PasswordHasher API
public interface PasswordHasher {
String hash(String password);
VerificationResult verify(String password, String hashVector);
String migrate(String hashVector);
}
public interface VerificationResult {
boolean isSuccess();
String getHashVector();
}
PasswordHasher API
public interface PasswordHasher {
String hash(String password);
VerificationResult verify(String password, String hashVector);
String migrate(String hashVector);
}
String newHashVector =
passwordHasher.migrate( “MD5Hasher...BCryptHasher...;...” );
// MD5Hasher...;BCryptHasher...;PBKDF2Hasher...;...
Migration plan
Migration plan
1. Migrate passwords when:
a. Customer logs in
b. Customer creates/changes password
2. Asynchronous background jobs:
a. Translating existing hashes to hashVector
b. Upgrading hashVectors to newest algorithm
3. Cleanup
Migrate passwords when customers provide them
Migrate passwords when customers provide them
Migrate passwords when customers provide them
Migrate passwords when customers provide them
Migrate passwords when customers provide them
Migrate passwords when customers provide them
Migrate passwords when customers provide them
Translate current passwords to hashVectors
Password Hash Password
Hash Type
Hash Vector Migration Status
$2a$08$...4029hfvih220nj0 BCRYPT (null) NONE
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...BCryptHasher...;... TRANSLATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;... TRANSLATED
Translate current passwords to hashVectors
Password Hash Password
Hash Type
Hash Vector Migration Status
$2a$08$...4029hfvih220nj0 BCRYPT (null) NONE
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...BCryptHasher...;... TRANSLATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;... TRANSLATED
Translate current passwords to hashVectors
Password Hash Password
Hash Type
Hash Vector Migration Status
$2a$08$...4029hfvih220nj0 BCRYPT (null) NONE
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...BCryptHasher...;... TRANSLATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;... TRANSLATED
Translate current passwords to hashVectors
Password Hash Password
Hash Type
Hash Vector Migration Status
$2a$08$...4029hfvih220nj0 BCRYPT (null) NONE
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...BCryptHasher...;... TRANSLATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;... TRANSLATED
Upgrade translated passwords to PBKDF-2
hashVector
Password Hash Password
Hash Type
Hash Vector Migration
Status
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...;BCryptHasher...;PBKDF2Hasher...;... MIGRATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;PBKDF2Hasher...;... MIGRATED
Upgrade translated passwords to PBKDF-2
hashVector
Password Hash Password
Hash Type
Hash Vector Migration
Status
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...;BCryptHasher...;PBKDF2Hasher...;... MIGRATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;PBKDF2Hasher...;... MIGRATED
Upgrade translated passwords to PBKDF-2
hashVector
Password Hash Password
Hash Type
Hash Vector Migration
Status
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...;BCryptHasher...;PBKDF2Hasher...;... MIGRATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;PBKDF2Hasher...;... MIGRATED
After full migration is done
Password Hash Password
Hash Type
Hash Vector Migration
Status
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...BCryptHasher...;PBKDF2Hasher...;... MIGRATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;PBKDF2Hasher...;... MIGRATED
Password Hash Password
Hash Type
Hash Vector Migration
Status
$2a$08$...gth54y3Hhfjrf8O MD5 MD5Hasher...BCryptHasher...;PBKDF2Hasher...;... MIGRATED
$2a$08$...vcb56tweoajCUaq BCRYPT BCryptHasher...;PBKDF2Hasher...;... MIGRATED
Migration report
Problems
Problem: time taken to migrate
• Translating password hashes… +
• Upgrading password hashes … =
• ~ 30 days
Problem: orphan password entries
CUSTOMER_PASSWORD
Customer number Password hash
12345678 abcdefghijklasdfdasfds
87654321 zxcvbbnmuefsdfaewte
CUSTOMER
Customer number Login Name
12345678 gary.muvaut@ocado.com Gary Muvaut
23456789 nobody.cares@ocado.com Nobody CaresX
Problem: entire process took over a year
Summary
Summary
• Use slow hashing algorithms for passwords
• Monitor time taken to compute hash (reconfigure if needed)
• Hash migration - complicated, but not impossible
• Good preparation is key
• Cleanup (remove old hashes!)
• Monitor the process
Links
• OWASP’s Password Storage Cheat Sheet: https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet
• Password Hashing Competition: https://password-hashing.net/
• Bouncy Castle Crypto APIs: https://www.bouncycastle.org/java.html
• How To Build A Password Cracking Rig: http://www.netmux.com/blog/how-to-build-a-password-cracking-rig
• hashcat - advanced password recovery: https://hashcat.net/hashcat/
• Check if your email or password has been compromised in a data breach: https://haveibeenpwned.com/
/OcadoTechnology
Image: https://gabrielledolan.com/latest-posts/any-questions/
That’s it!

More Related Content

PDF
Even the LastPass Will be Stolen Deal with It!
PPTX
Security at the speed of dev ops ppt
PPTX
Webinar: MongoDB 2.4 Feature Demo and Q&A on Hash-based Sharding
PDF
Blockchain presentation for prudential
PDF
Javascript Object Signing & Encryption
PDF
apidays LIVE New York - WT* is JWT? by Maciej Treder
PDF
JSON Web Tokens (JWT)
PDF
JS Fest 2019. Andrew Betts. Headers for hackers
Even the LastPass Will be Stolen Deal with It!
Security at the speed of dev ops ppt
Webinar: MongoDB 2.4 Feature Demo and Q&A on Hash-based Sharding
Blockchain presentation for prudential
Javascript Object Signing & Encryption
apidays LIVE New York - WT* is JWT? by Maciej Treder
JSON Web Tokens (JWT)
JS Fest 2019. Andrew Betts. Headers for hackers

What's hot (15)

PDF
Routing Trillions of Events Per Day @Twitter
PPTX
Data Security Essentials - JavaOne 2013
PDF
Cryptography With PHP - ZendCon 2017 Workshop
PDF
Cryptography in PHP: use cases
PDF
[WTMC 2019] Detecting malicious campaigns in obfuscated JavaScript with scala...
PPTX
What Video Games and BotCoin Did To The World Of Security... On Accident
PPTX
Honing headers for highly hardened highspeed hypertext
PDF
The New Generation Of Blockchains – What Is It Capable Of?
PDF
Securing PostgreSQL from External Attack
PDF
Module: Content Exchange in IPFS
PPTX
JOSE Can You See...
PPT
Network Security: Standards and Cryptography
PPTX
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
PDF
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
PDF
AREA41 - Anatomy of attacks aimed at financial sector by the Lazarus group
Routing Trillions of Events Per Day @Twitter
Data Security Essentials - JavaOne 2013
Cryptography With PHP - ZendCon 2017 Workshop
Cryptography in PHP: use cases
[WTMC 2019] Detecting malicious campaigns in obfuscated JavaScript with scala...
What Video Games and BotCoin Did To The World Of Security... On Accident
Honing headers for highly hardened highspeed hypertext
The New Generation Of Blockchains – What Is It Capable Of?
Securing PostgreSQL from External Attack
Module: Content Exchange in IPFS
JOSE Can You See...
Network Security: Standards and Cryptography
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
2018 colombia deconstruyendo y evolucionando la seguridad en servicios rest
AREA41 - Anatomy of attacks aimed at financial sector by the Lazarus group
Ad

Similar to The slower the stronger a story of password hash migration (20)

PDF
Bitcoin protocol for developers at techfest
PPTX
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
PDF
Bitcoin protocol for developerBitcoin Protocol for Developers
PDF
0 to 31337 Real Quick: Lessons Learned by Reversing the Flare-On Challenge
PPTX
Bruno Lowagie (iText) #cfoconferenz
PPTX
Rainbow Tables
PDF
Common Browser Hijacking Methods
PDF
How to build a scalable SNS using HBase
PDF
A Pharo story on blockchain technology
PPTX
Cryptography for Absolute Beginners (May 2019)
PPT
Basics of html5, data_storage, css3
PDF
Securing Your Containerized Applications with NGINX
PDF
Encryption: It's For More Than Just Passwords
PDF
re:Invent 2018 - Cryptocurrency 101/201 by Kristen Stone and Jake Craige
PDF
Workshop - Registro de Informações em Blockchain - Bitcoin - Ethereum - Decred
PDF
Jwt Security
PDF
Blockchain models and their practical applications
PPTX
Blockchain and Smart Contract Long Term Security (updated)
PPTX
Blockchain Fundamentals
PDF
Ekon25 mORMot 2 Cryptography
Bitcoin protocol for developers at techfest
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
Bitcoin protocol for developerBitcoin Protocol for Developers
0 to 31337 Real Quick: Lessons Learned by Reversing the Flare-On Challenge
Bruno Lowagie (iText) #cfoconferenz
Rainbow Tables
Common Browser Hijacking Methods
How to build a scalable SNS using HBase
A Pharo story on blockchain technology
Cryptography for Absolute Beginners (May 2019)
Basics of html5, data_storage, css3
Securing Your Containerized Applications with NGINX
Encryption: It's For More Than Just Passwords
re:Invent 2018 - Cryptocurrency 101/201 by Kristen Stone and Jake Craige
Workshop - Registro de Informações em Blockchain - Bitcoin - Ethereum - Decred
Jwt Security
Blockchain models and their practical applications
Blockchain and Smart Contract Long Term Security (updated)
Blockchain Fundamentals
Ekon25 mORMot 2 Cryptography
Ad

More from OWASP (20)

PDF
[OPD 2019] Web Apps vs Blockchain dApps
PDF
[OPD 2019] Threat modeling at scale
PDF
[OPD 2019] Life after pentest
PDF
[OPD 2019] .NET Core Security
PDF
[OPD 2019] Top 10 Security Facts of 2020
PDF
[OPD 2019] Governance as a missing part of IT security architecture
PDF
[OPD 2019] Storm Busters: Auditing & Securing AWS Infrastructure
PPTX
[OPD 2019] Side-Channels on the Web:
Attacks and Defenses
PPTX
[OPD 2019] AST Platform and the importance of multi-layered application secu...
PPTX
[OPD 2019] Inter-application vulnerabilities
PDF
[OPD 2019] Automated Defense with Serverless computing
PDF
[OPD 2019] Advanced Data Analysis in RegSOC
PDF
[OPD 2019] Attacking JWT tokens
PDF
[OPD 2019] Rumpkernels meet fuzzing
PDF
[OPD 2019] Trusted types and the end of DOM XSS
PDF
[Wroclaw #9] The purge - dealing with secrets in Opera Software
PDF
[Wroclaw #9] To be or Not To Be - Threat Modeling in Security World
PDF
OWASP Poland 13 November 2018 - Martin Knobloch - Building Secure Software
PDF
OWASP Poland Day 2018 - Amir Shladovsky - Crypto-mining
PDF
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
[OPD 2019] Web Apps vs Blockchain dApps
[OPD 2019] Threat modeling at scale
[OPD 2019] Life after pentest
[OPD 2019] .NET Core Security
[OPD 2019] Top 10 Security Facts of 2020
[OPD 2019] Governance as a missing part of IT security architecture
[OPD 2019] Storm Busters: Auditing & Securing AWS Infrastructure
[OPD 2019] Side-Channels on the Web:
Attacks and Defenses
[OPD 2019] AST Platform and the importance of multi-layered application secu...
[OPD 2019] Inter-application vulnerabilities
[OPD 2019] Automated Defense with Serverless computing
[OPD 2019] Advanced Data Analysis in RegSOC
[OPD 2019] Attacking JWT tokens
[OPD 2019] Rumpkernels meet fuzzing
[OPD 2019] Trusted types and the end of DOM XSS
[Wroclaw #9] The purge - dealing with secrets in Opera Software
[Wroclaw #9] To be or Not To Be - Threat Modeling in Security World
OWASP Poland 13 November 2018 - Martin Knobloch - Building Secure Software
OWASP Poland Day 2018 - Amir Shladovsky - Crypto-mining
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts

Recently uploaded (20)

PPTX
assetexplorer- product-overview - presentation
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PDF
Salesforce Agentforce AI Implementation.pdf
PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PDF
Microsoft Office 365 Crack Download Free
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PDF
Cost to Outsource Software Development in 2025
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
AI Guide for Business Growth - Arna Softech
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PPTX
CNN LeNet5 Architecture: Neural Networks
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PDF
iTop VPN Crack Latest Version Full Key 2025
assetexplorer- product-overview - presentation
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
Salesforce Agentforce AI Implementation.pdf
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
How to Use SharePoint as an ISO-Compliant Document Management System
Microsoft Office 365 Crack Download Free
Weekly report ppt - harsh dattuprasad patel.pptx
Cost to Outsource Software Development in 2025
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Trending Python Topics for Data Visualization in 2025
AI Guide for Business Growth - Arna Softech
Monitoring Stack: Grafana, Loki & Promtail
CNN LeNet5 Architecture: Neural Networks
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
iTop VPN Crack Latest Version Full Key 2025

The slower the stronger a story of password hash migration