SlideShare a Scribd company logo
1 of 64
Download to read offline
@maciejtreder
WT* is JWT?!
What the **** is JWT?!
hell
I like you
I like you
I like you
I don’t like you!
I like you
I like you
I don’t like you!
Symmetric cipher
a b c d e f g h i j k l m
1 2 3 4 5 6 7 8 9 10 11 12 13
n o p r s t u v w x y z _
14 15 16 17 18 19 20 21 22 23 24 25 26
I like you
9 26 12 9 11 5 26 24 15 20
What if…?
Asymmetric cipher
• Private key - used to decrypt the message
• Public key - used to encrypt the message
• Keys are generated using the one-way function
f(p,q) = p*q where p & q are primes
• Keys can be used interchangeably
RSA key
• Select p & q primes
• Calculate n = p*q
• Calculate φ = (p-1)*(q-1)
• Choose such e, relatively prime to φ
gcd(φ,e) == 1
• Compute such d, that
(ed-1) modφ=0
• Private key = (n,e)
• Public key = (n,d)
p=11 q=3
n = 11*3 = 33
φ = (11-1)*(3-1) = 20
e = 3
d=7
(ed-1) mod φ = 0
(3d-1) mod 20 = 0
3d-1 = 20n
d = (20n + 1)/3
d = (20*1+1)/3
d = 21/3
public key = (n, e) = (33, 3)
private key = (n, d) = (33, 7)
Asymmetric cipher
Mikes public key
Mikes private key
Kates public key
Kates private key
Asymmetric cipher
c = m^e mod n public key = (n, e) = (33, 3)
private key = (n, d) = (33, 7)
a b c d e f g h i j k l m
m 2 3 4 5 6 7 8 9 10 11 12 13 14
c 8 27 31 26 18 13 17 3 10 11 12 19 5
n o p r s t u v w x y z _
m 15 16 17 18 19 20 21 22 23 24 25 26 27
c 9 4 29 24 28 14 21 22 23 30 16 20 15
I like you
10 15 19 10 12 18 15 16 4 21
m’ = c^d mod n
What if…?
Mikes public key
Mikes private key
Kates public key
Kates private key
Breaking the RSA
• Compromising public key gives an attacker the modulus n
• Key sizes - 1024 to 4096 bit (from 2^1024 to 2^4096)
• p:
109337661836325758176115170347306682871557999846322234541387456711212734562876700082908433028755212749702453145932
22946129064538358581018615539828479146469
• q:
109106169673491102317237340786149226453370608821417489682098342251389760111799933942998101597369044685540217082898
24396553412180514827996444845438176099727
• 1024 bit modulus:
119294134840169509055527211331255649644606569661527638012067481954943056851150333806315957037715620297305000118628
770846689969112892212245457118060574995989517080042105263427376322274266393116193517839570773505632231596681121927
337473973220312512599061231322250945506260066557538238517575390621262940383913963
Signing
• Write the message
• Hash the message
• Encrypt hash with your private key
• Combine message with hash
• Encrypt message+hash with their public key
• I like you
• f1d049f7b893bf8601c66045b801d590
• xxx-yyy-zzz
• I like you.xxx-yyy-zzz
• aaa-bbb-ccc
Verifying
• Receive the message
• Decrypt using your private key
• Get original message & encrypted hash
• Hash the original message
• Decrypt received hash using their public key
• Compare hashes
• aaa-bbb-ccc
• I like you.xxx-yyy-zzz
• f1d049f7b893bf8601c66045b801d590
• xxx-yyy-zzz ->
f1d049f7b893bf8601c66045b801d590
Signing
Signing
+ =
- =
Signing
Signing
• Create a message
• Hash the message
• Encrypt hash with private key
• Combine message and encrypted hash
• From tomorrow everyone in the kingdom must use his left
hand to open the door.
• F03CF2EF5AFCE429DB88051746F3864B
• Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0=
• {
“message”: “From tomorrow everyone in the kingdom must use his
left hand to open door.”
“signature”: “Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0=”
}
Verifying
• Get the message
• Hash the message
• Decrypt the signature
• Compare hash with decrypted signature
• {
“message”: “From tomorrow everyone in the kingdom must use his left
hand to open door.”
“signature”: “Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0=”
}
• F03CF2EF5AFCE429DB88051746F3864B
• Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0=
• F03CF2EF5AFCE429DB88051746F3864B
That’s what most people call JWT
JSON Web Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJIGFtIjoiSlNPTiBXZWIgVG9rZW4if
Q.NmTt6oAkllTqmLqR-QqKxIgIsIaZIRIcBjNyhPnGziU
{"alg":"HS256","typ":"JWT"}.{"I am":"JSON Web Token"}.NmTt6oAkllTqmLqR-
QqKxIgIsIaZIRIcBjNyhPnGziU
JSON Web Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJIGFtIjoiSlNPTiBXZWIgVG9rZW4if
Q.NmTt6oAkllTqmLqR-QqKxIgIsIaZIRIcBjNyhPnGziU
• JOSE Header
Javascript Object Signing and Encryption
information about token type, encryption algorithm
• Payload - message body
• Signature - encrypted header and body
So.. What the **** is JWT?
• JWT does not exist itself
• Signed JWT is called JWS (JSON Web Signature)
• Encrypted JWT is called JWE (JSON Web Encryption)
JWT
JWSJWE
Registered claims
{
"alg":"HS256",
"typ":"JWT"
}
{
"iss": "authorization-service",
"sub": "myself",
"aud": "someone",
"iat": 1594655553034,
"nbf": 1594655553134,
"exp": 1594655553234,
"jti": 12345
}
Algorithm used for signing
Token type
Issuer
Subject (the user)
Audience (recipient)
Issued at (time at which token was issued)
Not before (time before which token is not valid)
Expires (time after which token is not valid)
Unique identifier
Custom claims
{
“alg":"RS512",
"typ":"JWT"
}
{
"name": "Maciej",
"surname": "Treder",
"privileges": ["booking_reschedule"],
"exp": 1594655553234
}
• Public claims - defined at will by those
using JWTs. To avoid collisions should
be defend in the IANA JSON Web Token
Registry
• Private claims - custom claims create to
share information between parties that
agree on using them
Pre JWT authorization
POST /auth
userID
Pre JWT authorization
POST /auth
userID
POST /book
POST/changeGate
POST /cancelFlight
Pre JWT authorization
POST /auth
userID
POST /book
POST/changeGate
POST /cancelFlight
canChange?
canBook?
canCancel?
Pre JWT authorization
POST /auth
userID
POST /book
POST/changeGate
POST /cancelFlight
JWT authorization
POST /auth
{privs: [“booking”], exp: 12345}
JWT authorization
POST /auth
{privs: [“booking”], exp: 12345}
POST /book
POST/changeGate
POST /cancelFlight
JWT authorization
POST /auth
{privs: [“booking”], exp: 12345}
POST /book
POST/changeGate
POST /cancelFlight
JWT authorization
POST /auth
POST/changeGate
@PostMapping("/changeGate")
public ResponseEntity<Gate> changeGate(
@RequestHeader("jwt-token") Token token,
@RequestBody Gate gate
) {
DecodedToken decoded = decodeToken(token);
if(decoded.hasPrivilege("changeGate") && verifySignature(token)) {
changeGate(gate);
return this.flightDetails;
}
throw new AuthorizationFailureException();
}
{privs: [“booking”]}
JWT authorization
verify claim and signature
Delegate validation to 3rd parties
verify claim and signature
Delegate validation to 3rd parties
Further reading
• JSON web token validation
https://learn.akamai.com/en-us/webhelp/api-gateway/api-gateway-user-guide/
GUID-682D1D3F-4CF2-46F2-B16B-5E0E1E991218.html
• Protecting JavaScript Microservices on Node.js with JSON Web
Tokens and Twilio Authy
https://www.twilio.com/blog/protecting-javascript-microservices-node-js-json-web-tokens-twilio-
authy
OAuth
OAuth
authenticate
access token
request resource
validate token
token valid
return resource
authenticate
client
OAuth
authenticate
access token
request resource
return resource
authenticate
client
validate
token
JWKS
• What if my key get compromised?
• What if want to rotate keys?
• What if I want to invalidate someones access?
• JSON Web Key Set
• A repository of keys (public, private, symmetric)
JWKS
{
"alg":"HS256",
"typ":"JWT",
"kid":"12",
"jku":"https://my-service.com/.well-known/jwks.json"
}
{
"privileges": ["booking_reschedule"]
}
NmTt6oAkllTqmLqR-QqKxIgIsIaZIRIc
JWKS
{
"keys": [
{
"kty": "RSA",
"kid": "1",
"alg": "RS256",
"use": "sig",
"e": "AQAB",
"n": "ujZ1fTy2k-
xc6Fa3Bfqe1T78Zx_oWBkDS1TNgw8Jbvbzfj5wgK5
_xSK5ikNlkOXvBjrsVOnCCJXTNiHZxMtIfARbz91O-5n
cuNah1H6WntWrLmaVfiIMaaKoNjDzScG1cIjPITarEV
jDb0GI0eH9BKpFz8LUbVlcy2m7IOKbmDt6yusHsj7z
OfjlV55dT1FU-
q5bfyLXQyCf7Uy2JJAVEutWLMp3Ld53q9mvW47Lh
hXKl5pKKbLARJgkccpQdN0bURiggvYjs2SHmZgh6d
Ceap1mki4LB2aX-Z4TB-
u8GbLq51HPZSpK71rR0QzZozluS5aLE49ciQ6-5u7K
HWBbrQ"
}
]
}
Key type
Key ID
Algorithm
Usage
Exponent
Modulus
JWKS
Standard attributes:
• kty - key type
• kid - key ID
• alg - algorithm [HMAC, RSA, …]
• use - usage
• e - exponent number
• m - modulus number
Chinese remainder algorithm:
• p, q - prime factors
• dp - d (mod p-1)
• dq - d (mod q-1)
• qi - q^-1 (mod p)
Certificate:
• x5c - x.509 certificate chain
• x5t - Thumbprint of the x.509 cert
JWKS
JWKS
JWKS
{
"alg":"HS256",
"typ":"JWT",
"kid":"12",
"jku":"https://my-service.com/.well-known/jwks.json"
}
{
"privileges": ["change_gate"]
}
NmTt6oAkllTqmLqR-QqKxIgIsIaZIRIc
Pitfalls & Vulnerabilities
Data Security
• JWS payload is encoded not encrypted
• Never store sensitive data (ie. credit card numbers) in JWS token
• If you want to store sensitive data choose JWE
Unsigned JWT
• JWT doesn’t need to be signed
• Do not rely only on the header when you’re validating the token
• “alg”: “none”
Error Responses
• Pay attention to what you are providing in
the error response
• https://github.com/jwt-dotnet/jwt/issues/
61
Weak Key
• HS256 (HMAC-SHA256)
• Token is signed applying the SHA256 twice
• When attacker obtains a signed token, he can “easily” retrieve the key (ie. by using the HashCat)
• According to documentation, use key which has at least same size as the hash output (256 bit for
HS256)
Decoding != Verifying
• Decoding is enough only for denying access (lack of required claim)
• Always verify signature if you want grant someone access
• Read library documentation, often verifying process is available as a separate method
“Time” attack
• Applies when signature is verified byte-after-byte
• Once bytes doesn’t match then access is denied
• Attacker may observe the response time and generate next bytes of the signature
jku
• Always verify the URL provided as a jku claim
{
"alg":"HS256",
"typ":"JWT",
"kid":"12",
"jku":"https://attacker.com/.well-known/jwks.json"
}
{
"privileges": ["change_gate"]
}
jku validation
Summary
• JWT is often confused with JWS which is one of it’s implementations
• It’s a way of stateless data exchange
• JWS is built of JOSE header, payload and signature
• It’s a good place too keep not-sensitive data, which value should be verified
• Always follow given algorithm best practices (i.e. pass-phrase/key size)
• JWE is a good choice if you want to keep data encrypted
Resources
• JWT.IO
https://jwt.io
• JSON web token validation
https://learn.akamai.com/en-us/webhelp/api-gateway/api-gateway-user-guide/
GUID-682D1D3F-4CF2-46F2-B16B-5E0E1E991218.html
• Verify JWT With JSON Web Key Set (JWKS) In API Gateway
https://blogs.akamai.com/2019/10/verify-jwt-with-json-web-key-set-jwks-in-api-gateway.html
• RFC 7519 - JSON Web Token
https://tools.ietf.org/html/rfc7519
Resources
• Building JavaScript Microservices with Node.js
https://www.twilio.com/blog/building-javascript-microservices-node-js
• Implementing Eureka and Zuul for Service Discovery and Dynamic Routing in JavaScript
Microservices Running on Node.js
https://www.twilio.com/blog/eureka-zuul-service-discovery-dynamic-routing-javascript-microservices-node-js
• Scaling Node.js JavaScript Microservices on Shared MongoDB Atlas Cloud Persistence
Layers
https://www.twilio.com/blog/scale-node-js-javascript-microservices-shared-mongodb-atlas
• Protecting JavaScript Microservices on Node.js with JSON Web Tokens and Twilio Authy
https://www.twilio.com/blog/protecting-javascript-microservices-node-js-json-web-tokens-twilio-authy
Feedback
https://bit.ly/2DbNOcM
@maciejtreder

More Related Content

What's hot

Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017
Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017
Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017BookNet Canada
 
Cryptography For The Average Developer - Sunshine PHP
Cryptography For The Average Developer - Sunshine PHPCryptography For The Average Developer - Sunshine PHP
Cryptography For The Average Developer - Sunshine PHPAnthony Ferrara
 
MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...MongoDB
 
The slower the stronger a story of password hash migration
The slower the stronger  a story of password hash migrationThe slower the stronger  a story of password hash migration
The slower the stronger a story of password hash migrationOWASP
 
GraphTalk Stockholm - Fraud Detection with Graphs
GraphTalk Stockholm - Fraud Detection with GraphsGraphTalk Stockholm - Fraud Detection with Graphs
GraphTalk Stockholm - Fraud Detection with GraphsNeo4j
 
MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2
MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2
MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2Lisa Roth, PMP
 
GraphTalk Helsinki - Fraud Analysis with Neo4j
GraphTalk Helsinki - Fraud Analysis with Neo4jGraphTalk Helsinki - Fraud Analysis with Neo4j
GraphTalk Helsinki - Fraud Analysis with Neo4jNeo4j
 
The Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystemThe Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystemHarold Giménez
 
Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication Mediacurrent
 
DEFCON 23 - Eijah - crypto for hackers
DEFCON 23 - Eijah - crypto for hackersDEFCON 23 - Eijah - crypto for hackers
DEFCON 23 - Eijah - crypto for hackersFelipe Prado
 

What's hot (11)

Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017
Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017
Beyond Good & Evil: The nuts and bolts of DRM - Dave Cramer - ebookcraft 2017
 
Cryptography For The Average Developer - Sunshine PHP
Cryptography For The Average Developer - Sunshine PHPCryptography For The Average Developer - Sunshine PHP
Cryptography For The Average Developer - Sunshine PHP
 
MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local Munich 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
 
The slower the stronger a story of password hash migration
The slower the stronger  a story of password hash migrationThe slower the stronger  a story of password hash migration
The slower the stronger a story of password hash migration
 
GraphTalk Stockholm - Fraud Detection with Graphs
GraphTalk Stockholm - Fraud Detection with GraphsGraphTalk Stockholm - Fraud Detection with Graphs
GraphTalk Stockholm - Fraud Detection with Graphs
 
MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2
MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2
MongoDB .local London 2019: Using Client Side Encryption in MongoDB 4.2
 
GraphTalk Helsinki - Fraud Analysis with Neo4j
GraphTalk Helsinki - Fraud Analysis with Neo4jGraphTalk Helsinki - Fraud Analysis with Neo4j
GraphTalk Helsinki - Fraud Analysis with Neo4j
 
The Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystemThe Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystem
 
Token based-oauth2
Token based-oauth2Token based-oauth2
Token based-oauth2
 
Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication Using JSON Web Tokens for REST Authentication
Using JSON Web Tokens for REST Authentication
 
DEFCON 23 - Eijah - crypto for hackers
DEFCON 23 - Eijah - crypto for hackersDEFCON 23 - Eijah - crypto for hackers
DEFCON 23 - Eijah - crypto for hackers
 

Similar to apidays LIVE Australia - WT* is JWT? by Maciej Treder

Blockchain Fundamentals
Blockchain FundamentalsBlockchain Fundamentals
Blockchain FundamentalsBruno Lowagie
 
SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...
SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...
SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...SMART Infrastructure Facility
 
Bitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsBitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsChristopher Allen
 
HifnCrypto101
HifnCrypto101HifnCrypto101
HifnCrypto101Jim Faith
 
Cs166 mynote
Cs166 mynoteCs166 mynote
Cs166 mynoteKaya Ota
 
Blockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentationBlockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentationPaperchain
 
Securing your Bitcoin wallet
Securing your Bitcoin walletSecuring your Bitcoin wallet
Securing your Bitcoin walletRon Reiter
 
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Krzysztof Kotowicz
 
What is a decentralised application? - Devoxx Morocco 2018
What is a decentralised application? - Devoxx Morocco 2018What is a decentralised application? - Devoxx Morocco 2018
What is a decentralised application? - Devoxx Morocco 2018Wajug
 
What is a decentralised application ? - Les Jeudis du Libre
What is a decentralised application ? - Les Jeudis du LibreWhat is a decentralised application ? - Les Jeudis du Libre
What is a decentralised application ? - Les Jeudis du LibreWajug
 
Blockchain By Code examples - Devoxx Poland 2018
Blockchain By Code examples - Devoxx Poland 2018Blockchain By Code examples - Devoxx Poland 2018
Blockchain By Code examples - Devoxx Poland 2018Mario Romano
 
Crypto talk OpenValue meetup 20-3-18
Crypto talk OpenValue meetup 20-3-18Crypto talk OpenValue meetup 20-3-18
Crypto talk OpenValue meetup 20-3-18Roy Wasse
 
201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...
201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...
201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...Paperchain
 
Bitcoin developer guide
Bitcoin developer guideBitcoin developer guide
Bitcoin developer guide承翰 蔡
 
Blockchain and Cryptography - A Primer
Blockchain and Cryptography - A PrimerBlockchain and Cryptography - A Primer
Blockchain and Cryptography - A PrimerGokul Alex
 
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...Dace Barone
 
Crypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies IntroCrypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies IntroTal Shmueli
 
Blockchain and bitcoin fundamentals (usages and applications)
Blockchain and bitcoin fundamentals (usages and applications)Blockchain and bitcoin fundamentals (usages and applications)
Blockchain and bitcoin fundamentals (usages and applications)Amir Rafati
 
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contractsOWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contractsOWASP
 

Similar to apidays LIVE Australia - WT* is JWT? by Maciej Treder (20)

Blockchain Fundamentals
Blockchain FundamentalsBlockchain Fundamentals
Blockchain Fundamentals
 
SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...
SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...
SMART Seminar Series: "Blockchain and its Applications". Presented by Prof Wi...
 
Bitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsBitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & Wallets
 
HifnCrypto101
HifnCrypto101HifnCrypto101
HifnCrypto101
 
Cs166 mynote
Cs166 mynoteCs166 mynote
Cs166 mynote
 
Blockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentationBlockchain, cryptography and tokens — NYC Bar presentation
Blockchain, cryptography and tokens — NYC Bar presentation
 
Securing your Bitcoin wallet
Securing your Bitcoin walletSecuring your Bitcoin wallet
Securing your Bitcoin wallet
 
Class3
Class3Class3
Class3
 
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
 
What is a decentralised application? - Devoxx Morocco 2018
What is a decentralised application? - Devoxx Morocco 2018What is a decentralised application? - Devoxx Morocco 2018
What is a decentralised application? - Devoxx Morocco 2018
 
What is a decentralised application ? - Les Jeudis du Libre
What is a decentralised application ? - Les Jeudis du LibreWhat is a decentralised application ? - Les Jeudis du Libre
What is a decentralised application ? - Les Jeudis du Libre
 
Blockchain By Code examples - Devoxx Poland 2018
Blockchain By Code examples - Devoxx Poland 2018Blockchain By Code examples - Devoxx Poland 2018
Blockchain By Code examples - Devoxx Poland 2018
 
Crypto talk OpenValue meetup 20-3-18
Crypto talk OpenValue meetup 20-3-18Crypto talk OpenValue meetup 20-3-18
Crypto talk OpenValue meetup 20-3-18
 
201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...
201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...
201803 Blockchains, Cryptocurrencies & Tokens - NYC Bar Association Presentat...
 
Bitcoin developer guide
Bitcoin developer guideBitcoin developer guide
Bitcoin developer guide
 
Blockchain and Cryptography - A Primer
Blockchain and Cryptography - A PrimerBlockchain and Cryptography - A Primer
Blockchain and Cryptography - A Primer
 
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...
 
Crypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies IntroCrypto & Crpyocurrencies Intro
Crypto & Crpyocurrencies Intro
 
Blockchain and bitcoin fundamentals (usages and applications)
Blockchain and bitcoin fundamentals (usages and applications)Blockchain and bitcoin fundamentals (usages and applications)
Blockchain and bitcoin fundamentals (usages and applications)
 
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contractsOWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
 

More from apidays

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...apidays
 
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...apidays
 
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...apidays
 
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...apidays
 
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...apidays
 
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...apidays
 
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...apidays
 
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...apidays
 
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...apidays
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...apidays
 

More from apidays (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
 
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
 
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
 
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
 
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
 
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
 
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
 
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
 
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

apidays LIVE Australia - WT* is JWT? by Maciej Treder

  • 2. What the **** is JWT?! hell
  • 3.
  • 5. I like you I like you I don’t like you!
  • 6. I like you I like you I don’t like you!
  • 7.
  • 8. Symmetric cipher a b c d e f g h i j k l m 1 2 3 4 5 6 7 8 9 10 11 12 13 n o p r s t u v w x y z _ 14 15 16 17 18 19 20 21 22 23 24 25 26 I like you 9 26 12 9 11 5 26 24 15 20
  • 10. Asymmetric cipher • Private key - used to decrypt the message • Public key - used to encrypt the message • Keys are generated using the one-way function f(p,q) = p*q where p & q are primes • Keys can be used interchangeably
  • 11. RSA key • Select p & q primes • Calculate n = p*q • Calculate φ = (p-1)*(q-1) • Choose such e, relatively prime to φ gcd(φ,e) == 1 • Compute such d, that (ed-1) modφ=0 • Private key = (n,e) • Public key = (n,d) p=11 q=3 n = 11*3 = 33 φ = (11-1)*(3-1) = 20 e = 3 d=7 (ed-1) mod φ = 0 (3d-1) mod 20 = 0 3d-1 = 20n d = (20n + 1)/3 d = (20*1+1)/3 d = 21/3 public key = (n, e) = (33, 3) private key = (n, d) = (33, 7)
  • 12. Asymmetric cipher Mikes public key Mikes private key Kates public key Kates private key
  • 13. Asymmetric cipher c = m^e mod n public key = (n, e) = (33, 3) private key = (n, d) = (33, 7) a b c d e f g h i j k l m m 2 3 4 5 6 7 8 9 10 11 12 13 14 c 8 27 31 26 18 13 17 3 10 11 12 19 5 n o p r s t u v w x y z _ m 15 16 17 18 19 20 21 22 23 24 25 26 27 c 9 4 29 24 28 14 21 22 23 30 16 20 15 I like you 10 15 19 10 12 18 15 16 4 21 m’ = c^d mod n
  • 14. What if…? Mikes public key Mikes private key Kates public key Kates private key
  • 15. Breaking the RSA • Compromising public key gives an attacker the modulus n • Key sizes - 1024 to 4096 bit (from 2^1024 to 2^4096) • p: 109337661836325758176115170347306682871557999846322234541387456711212734562876700082908433028755212749702453145932 22946129064538358581018615539828479146469 • q: 109106169673491102317237340786149226453370608821417489682098342251389760111799933942998101597369044685540217082898 24396553412180514827996444845438176099727 • 1024 bit modulus: 119294134840169509055527211331255649644606569661527638012067481954943056851150333806315957037715620297305000118628 770846689969112892212245457118060574995989517080042105263427376322274266393116193517839570773505632231596681121927 337473973220312512599061231322250945506260066557538238517575390621262940383913963
  • 16. Signing • Write the message • Hash the message • Encrypt hash with your private key • Combine message with hash • Encrypt message+hash with their public key • I like you • f1d049f7b893bf8601c66045b801d590 • xxx-yyy-zzz • I like you.xxx-yyy-zzz • aaa-bbb-ccc
  • 17. Verifying • Receive the message • Decrypt using your private key • Get original message & encrypted hash • Hash the original message • Decrypt received hash using their public key • Compare hashes • aaa-bbb-ccc • I like you.xxx-yyy-zzz • f1d049f7b893bf8601c66045b801d590 • xxx-yyy-zzz -> f1d049f7b893bf8601c66045b801d590
  • 21. Signing • Create a message • Hash the message • Encrypt hash with private key • Combine message and encrypted hash • From tomorrow everyone in the kingdom must use his left hand to open the door. • F03CF2EF5AFCE429DB88051746F3864B • Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0= • { “message”: “From tomorrow everyone in the kingdom must use his left hand to open door.” “signature”: “Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0=” }
  • 22. Verifying • Get the message • Hash the message • Decrypt the signature • Compare hash with decrypted signature • { “message”: “From tomorrow everyone in the kingdom must use his left hand to open door.” “signature”: “Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0=” } • F03CF2EF5AFCE429DB88051746F3864B • Vf2Lx/jOUNLoXawCw4disZhrFfqcoNRGDvpG+SbxUX0= • F03CF2EF5AFCE429DB88051746F3864B
  • 23. That’s what most people call JWT
  • 25. JSON Web Signature eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJIGFtIjoiSlNPTiBXZWIgVG9rZW4if Q.NmTt6oAkllTqmLqR-QqKxIgIsIaZIRIcBjNyhPnGziU • JOSE Header Javascript Object Signing and Encryption information about token type, encryption algorithm • Payload - message body • Signature - encrypted header and body
  • 26. So.. What the **** is JWT? • JWT does not exist itself • Signed JWT is called JWS (JSON Web Signature) • Encrypted JWT is called JWE (JSON Web Encryption) JWT JWSJWE
  • 27. Registered claims { "alg":"HS256", "typ":"JWT" } { "iss": "authorization-service", "sub": "myself", "aud": "someone", "iat": 1594655553034, "nbf": 1594655553134, "exp": 1594655553234, "jti": 12345 } Algorithm used for signing Token type Issuer Subject (the user) Audience (recipient) Issued at (time at which token was issued) Not before (time before which token is not valid) Expires (time after which token is not valid) Unique identifier
  • 28. Custom claims { “alg":"RS512", "typ":"JWT" } { "name": "Maciej", "surname": "Treder", "privileges": ["booking_reschedule"], "exp": 1594655553234 } • Public claims - defined at will by those using JWTs. To avoid collisions should be defend in the IANA JSON Web Token Registry • Private claims - custom claims create to share information between parties that agree on using them
  • 30. Pre JWT authorization POST /auth userID POST /book POST/changeGate POST /cancelFlight
  • 31. Pre JWT authorization POST /auth userID POST /book POST/changeGate POST /cancelFlight canChange? canBook? canCancel?
  • 32. Pre JWT authorization POST /auth userID POST /book POST/changeGate POST /cancelFlight
  • 33. JWT authorization POST /auth {privs: [“booking”], exp: 12345}
  • 34. JWT authorization POST /auth {privs: [“booking”], exp: 12345} POST /book POST/changeGate POST /cancelFlight
  • 35. JWT authorization POST /auth {privs: [“booking”], exp: 12345} POST /book POST/changeGate POST /cancelFlight
  • 36. JWT authorization POST /auth POST/changeGate @PostMapping("/changeGate") public ResponseEntity<Gate> changeGate( @RequestHeader("jwt-token") Token token, @RequestBody Gate gate ) { DecodedToken decoded = decodeToken(token); if(decoded.hasPrivilege("changeGate") && verifySignature(token)) { changeGate(gate); return this.flightDetails; } throw new AuthorizationFailureException(); } {privs: [“booking”]}
  • 38. Delegate validation to 3rd parties verify claim and signature
  • 39. Delegate validation to 3rd parties
  • 40. Further reading • JSON web token validation https://learn.akamai.com/en-us/webhelp/api-gateway/api-gateway-user-guide/ GUID-682D1D3F-4CF2-46F2-B16B-5E0E1E991218.html • Protecting JavaScript Microservices on Node.js with JSON Web Tokens and Twilio Authy https://www.twilio.com/blog/protecting-javascript-microservices-node-js-json-web-tokens-twilio- authy
  • 41. OAuth
  • 42. OAuth authenticate access token request resource validate token token valid return resource authenticate client
  • 43. OAuth authenticate access token request resource return resource authenticate client validate token
  • 44. JWKS • What if my key get compromised? • What if want to rotate keys? • What if I want to invalidate someones access? • JSON Web Key Set • A repository of keys (public, private, symmetric)
  • 46. JWKS { "keys": [ { "kty": "RSA", "kid": "1", "alg": "RS256", "use": "sig", "e": "AQAB", "n": "ujZ1fTy2k- xc6Fa3Bfqe1T78Zx_oWBkDS1TNgw8Jbvbzfj5wgK5 _xSK5ikNlkOXvBjrsVOnCCJXTNiHZxMtIfARbz91O-5n cuNah1H6WntWrLmaVfiIMaaKoNjDzScG1cIjPITarEV jDb0GI0eH9BKpFz8LUbVlcy2m7IOKbmDt6yusHsj7z OfjlV55dT1FU- q5bfyLXQyCf7Uy2JJAVEutWLMp3Ld53q9mvW47Lh hXKl5pKKbLARJgkccpQdN0bURiggvYjs2SHmZgh6d Ceap1mki4LB2aX-Z4TB- u8GbLq51HPZSpK71rR0QzZozluS5aLE49ciQ6-5u7K HWBbrQ" } ] } Key type Key ID Algorithm Usage Exponent Modulus
  • 47. JWKS Standard attributes: • kty - key type • kid - key ID • alg - algorithm [HMAC, RSA, …] • use - usage • e - exponent number • m - modulus number Chinese remainder algorithm: • p, q - prime factors • dp - d (mod p-1) • dq - d (mod q-1) • qi - q^-1 (mod p) Certificate: • x5c - x.509 certificate chain • x5t - Thumbprint of the x.509 cert
  • 48. JWKS
  • 49. JWKS
  • 52. Data Security • JWS payload is encoded not encrypted • Never store sensitive data (ie. credit card numbers) in JWS token • If you want to store sensitive data choose JWE
  • 53. Unsigned JWT • JWT doesn’t need to be signed • Do not rely only on the header when you’re validating the token • “alg”: “none”
  • 54. Error Responses • Pay attention to what you are providing in the error response • https://github.com/jwt-dotnet/jwt/issues/ 61
  • 55. Weak Key • HS256 (HMAC-SHA256) • Token is signed applying the SHA256 twice • When attacker obtains a signed token, he can “easily” retrieve the key (ie. by using the HashCat) • According to documentation, use key which has at least same size as the hash output (256 bit for HS256)
  • 56. Decoding != Verifying • Decoding is enough only for denying access (lack of required claim) • Always verify signature if you want grant someone access • Read library documentation, often verifying process is available as a separate method
  • 57. “Time” attack • Applies when signature is verified byte-after-byte • Once bytes doesn’t match then access is denied • Attacker may observe the response time and generate next bytes of the signature
  • 58. jku • Always verify the URL provided as a jku claim { "alg":"HS256", "typ":"JWT", "kid":"12", "jku":"https://attacker.com/.well-known/jwks.json" } { "privileges": ["change_gate"] }
  • 60. Summary • JWT is often confused with JWS which is one of it’s implementations • It’s a way of stateless data exchange • JWS is built of JOSE header, payload and signature • It’s a good place too keep not-sensitive data, which value should be verified • Always follow given algorithm best practices (i.e. pass-phrase/key size) • JWE is a good choice if you want to keep data encrypted
  • 61. Resources • JWT.IO https://jwt.io • JSON web token validation https://learn.akamai.com/en-us/webhelp/api-gateway/api-gateway-user-guide/ GUID-682D1D3F-4CF2-46F2-B16B-5E0E1E991218.html • Verify JWT With JSON Web Key Set (JWKS) In API Gateway https://blogs.akamai.com/2019/10/verify-jwt-with-json-web-key-set-jwks-in-api-gateway.html • RFC 7519 - JSON Web Token https://tools.ietf.org/html/rfc7519
  • 62. Resources • Building JavaScript Microservices with Node.js https://www.twilio.com/blog/building-javascript-microservices-node-js • Implementing Eureka and Zuul for Service Discovery and Dynamic Routing in JavaScript Microservices Running on Node.js https://www.twilio.com/blog/eureka-zuul-service-discovery-dynamic-routing-javascript-microservices-node-js • Scaling Node.js JavaScript Microservices on Shared MongoDB Atlas Cloud Persistence Layers https://www.twilio.com/blog/scale-node-js-javascript-microservices-shared-mongodb-atlas • Protecting JavaScript Microservices on Node.js with JSON Web Tokens and Twilio Authy https://www.twilio.com/blog/protecting-javascript-microservices-node-js-json-web-tokens-twilio-authy