SlideShare a Scribd company logo
1 of 24
Download to read offline
“È fatta. Resta da cifrare un campo in una tabella, che sarà mai?”
Paolo Montrasio Giorgio Sidari
paolo.montrasio@connettiva.eu giorgio@sidari.it
Il problema
Applicazione web conclusa
Bisogna cifrare un campo di testo nel DB
Il campo deve essere decifrabile nel client inserendo la chiave
Facile? Anche Ulisse deve aver detto così partendo da Troia
Alternative
Cifratura simmetrica con chiave sul server → inutile
Cifratura asimmetrica, solo chiave pubblica sul server → OK!
Alternative
Cifratura simmetrica con chiave sul server → inutile
Cifratura asimmetrica, solo chiave pubblica sul server → OK!
Ma…
Si cifrano solo blocchi lunghi quanto la chiave
Meno il padding
I nostri dati sono brevi
Sarà una passeggiata!
I nostri dati sono brevi
Sarà una passeggiata!
Come mai le SELECT non funzionano!?
$ openssl genpkey -algorithm RSA -out private_key.pem 
-pkeyopt rsa_keygen_bits:2048
$ openssl rsa -pubout -in private_key.pem -out public_key.pem
$ nvm install 5.7.0
$ nvm use 5.7.0
https://github.com/pmontrasio/full-stack-cryptography
La crittografia
non è
deterministica!
Ma possiamo far finta che lo sia
Padding deterministico in base ai dati Math.random()
crypto.randomBytes()
JavaScript si è scordato di un Math.seed()
→ modulo esterno require(“seedrandom”)
La crittografia deterministica indebolisce la sicurezza
Usarla con cautela solo se necessario
Mandiamo i dati al browser
Base64!
Sembra fatta
Anche le cose più semplici
nascondono sorprese
Interoperabilità con il backend
Base64 Node → Base64 JS, OK
Base64 Ruby → Base64 JS, un n di troppo
Inserire la chiave privata nel browser, ogni volta: NO!
La seppelliamo in LocalStorage: NI
La sicurezza della crittografia JS nel frontend è dibattuta
È fatta o è un altro inganno?
Jsencrypt non decifra senza padding!
Cercare un altro modulo → non se ne trovano
Aggiungere la propria funzione
di decifratura → non una passeggiata
Dare la brutta notizia al cliente → qui è dove Ulisse ha perso tutti
i compagni supestiti
Il codice da modificare è
di facile comprensione �
Scriviamo la funzione
Fork della libreria
https://github.com/pmontrasio/jsencrypt
E finalmente...
È ora di farla pagare!
È ora di farla pagare!
…la feature :)
Paolo Montrasio Giorgio Sidari
paolo.montrasio@connettiva.eu giorgio@sidari.it
@pmontrasio @ideaferace
https://github.com/pmontrasio/full-stack-cryptography
Slide a https://connettiva.eu/full-stack-cryptography

More Related Content

Viewers also liked

Teacher's Kit for Interactive Journalism by Juliana Ruhfus
Teacher's Kit for Interactive Journalism by Juliana RuhfusTeacher's Kit for Interactive Journalism by Juliana Ruhfus
Teacher's Kit for Interactive Journalism by Juliana Ruhfusjulianaruhfus
 
History of the PHILIPPINE Internet
History of the PHILIPPINE InternetHistory of the PHILIPPINE Internet
History of the PHILIPPINE InternetMiguel Perez
 
9ª Aula para Formação de Discipuladores
9ª Aula para Formação de Discipuladores9ª Aula para Formação de Discipuladores
9ª Aula para Formação de DiscipuladoresIBC de Jacarepaguá
 
11ª Aula - Formação de Discipuladores
11ª Aula - Formação de Discipuladores11ª Aula - Formação de Discipuladores
11ª Aula - Formação de DiscipuladoresIBC de Jacarepaguá
 
Aula 3 - Seminário sobre a Igreja
Aula 3 - Seminário sobre a IgrejaAula 3 - Seminário sobre a Igreja
Aula 3 - Seminário sobre a IgrejaIBC de Jacarepaguá
 
Muka depan content
Muka depan contentMuka depan content
Muka depan contentmohd admee
 
Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)
Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)
Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)IBC de Jacarepaguá
 
Mlp trainning algorithm
Mlp trainning algorithmMlp trainning algorithm
Mlp trainning algorithmHưng Đặng
 
Aula 5 - Seminário sobre a Igreja
Aula 5 - Seminário sobre a IgrejaAula 5 - Seminário sobre a Igreja
Aula 5 - Seminário sobre a IgrejaIBC de Jacarepaguá
 
School vocabulary
School vocabularySchool vocabulary
School vocabularySanelaNena
 
Luh ade gina andriyani
Luh ade gina andriyaniLuh ade gina andriyani
Luh ade gina andriyanitenobell
 
Aula 4 - Seminário sobre a Igreja
Aula 4 - Seminário sobre a IgrejaAula 4 - Seminário sobre a Igreja
Aula 4 - Seminário sobre a IgrejaIBC de Jacarepaguá
 
7ª Aula para Formação de Discipuladores
7ª Aula para Formação de Discipuladores7ª Aula para Formação de Discipuladores
7ª Aula para Formação de DiscipuladoresIBC de Jacarepaguá
 
Aula de Apresentação do Seminário: SOBRE A IGREJA...
Aula de Apresentação do Seminário: SOBRE A IGREJA...Aula de Apresentação do Seminário: SOBRE A IGREJA...
Aula de Apresentação do Seminário: SOBRE A IGREJA...IBC de Jacarepaguá
 
брест основные моменты проекта
брест основные моменты проектабрест основные моменты проекта
брест основные моменты проектаstmorol231
 
Artificial neural networks and its application
Artificial neural networks and its applicationArtificial neural networks and its application
Artificial neural networks and its applicationHưng Đặng
 

Viewers also liked (20)

Teacher's Kit for Interactive Journalism by Juliana Ruhfus
Teacher's Kit for Interactive Journalism by Juliana RuhfusTeacher's Kit for Interactive Journalism by Juliana Ruhfus
Teacher's Kit for Interactive Journalism by Juliana Ruhfus
 
208-EEI-49
208-EEI-49208-EEI-49
208-EEI-49
 
History of the PHILIPPINE Internet
History of the PHILIPPINE InternetHistory of the PHILIPPINE Internet
History of the PHILIPPINE Internet
 
Reported speech
Reported speechReported speech
Reported speech
 
9ª Aula para Formação de Discipuladores
9ª Aula para Formação de Discipuladores9ª Aula para Formação de Discipuladores
9ª Aula para Formação de Discipuladores
 
11ª Aula - Formação de Discipuladores
11ª Aula - Formação de Discipuladores11ª Aula - Formação de Discipuladores
11ª Aula - Formação de Discipuladores
 
Aula 3 - Seminário sobre a Igreja
Aula 3 - Seminário sobre a IgrejaAula 3 - Seminário sobre a Igreja
Aula 3 - Seminário sobre a Igreja
 
Muka depan content
Muka depan contentMuka depan content
Muka depan content
 
Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)
Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)
Aula 02 - Seminário Sobre a Igreja (Segunda Temporada)
 
Mlp trainning algorithm
Mlp trainning algorithmMlp trainning algorithm
Mlp trainning algorithm
 
Aula 5 - Seminário sobre a Igreja
Aula 5 - Seminário sobre a IgrejaAula 5 - Seminário sobre a Igreja
Aula 5 - Seminário sobre a Igreja
 
School vocabulary
School vocabularySchool vocabulary
School vocabulary
 
Luh ade gina andriyani
Luh ade gina andriyaniLuh ade gina andriyani
Luh ade gina andriyani
 
Aula 4 - Seminário sobre a Igreja
Aula 4 - Seminário sobre a IgrejaAula 4 - Seminário sobre a Igreja
Aula 4 - Seminário sobre a Igreja
 
7ª Aula para Formação de Discipuladores
7ª Aula para Formação de Discipuladores7ª Aula para Formação de Discipuladores
7ª Aula para Formação de Discipuladores
 
On the job
On the jobOn the job
On the job
 
Aula de Apresentação do Seminário: SOBRE A IGREJA...
Aula de Apresentação do Seminário: SOBRE A IGREJA...Aula de Apresentação do Seminário: SOBRE A IGREJA...
Aula de Apresentação do Seminário: SOBRE A IGREJA...
 
брест основные моменты проекта
брест основные моменты проектабрест основные моменты проекта
брест основные моменты проекта
 
Artificial neural networks and its application
Artificial neural networks and its applicationArtificial neural networks and its application
Artificial neural networks and its application
 
Describing someone
Describing someoneDescribing someone
Describing someone
 

Similar to Full Stack Cryptography

Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
 
Linux, sicurezza & social hacking
Linux, sicurezza & social hackingLinux, sicurezza & social hacking
Linux, sicurezza & social hackingFabio Mora
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Marco Ferrigno
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Codemotion
 
Internet-of-things, sicurezza, privacy, trust
Internet-of-things, sicurezza, privacy, trustInternet-of-things, sicurezza, privacy, trust
Internet-of-things, sicurezza, privacy, trustDavide Carboni
 
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisureCCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisurewalk2talk srl
 
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioCrossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioWhymca
 
Crossdev sdk/tools: devil's deception
Crossdev sdk/tools: devil's deceptionCrossdev sdk/tools: devil's deception
Crossdev sdk/tools: devil's deceptionLuciano Colosio
 
Bitcoin e blockchain - concetti base
Bitcoin e blockchain - concetti baseBitcoin e blockchain - concetti base
Bitcoin e blockchain - concetti baseEgidio Casati
 
Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...
Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...
Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...Codemotion
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Flavius-Florin Harabor
 
Blockchain! - Luglio 2018 Convegno SGI a Bevagna
Blockchain! - Luglio 2018  Convegno SGI a BevagnaBlockchain! - Luglio 2018  Convegno SGI a Bevagna
Blockchain! - Luglio 2018 Convegno SGI a BevagnaSandro Fontana
 
Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...
Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...
Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...Codemotion
 

Similar to Full Stack Cryptography (20)

Acciaio ...inux!
Acciaio ...inux!Acciaio ...inux!
Acciaio ...inux!
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
Linux, sicurezza & social hacking
Linux, sicurezza & social hackingLinux, sicurezza & social hacking
Linux, sicurezza & social hacking
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
HTML5, il lato client della forza...
HTML5, il lato client della forza... HTML5, il lato client della forza...
HTML5, il lato client della forza...
 
Bitcoin in codice
Bitcoin in codiceBitcoin in codice
Bitcoin in codice
 
Devianze
DevianzeDevianze
Devianze
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
 
Internet-of-things, sicurezza, privacy, trust
Internet-of-things, sicurezza, privacy, trustInternet-of-things, sicurezza, privacy, trust
Internet-of-things, sicurezza, privacy, trust
 
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisureCCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
 
Secretbox Overview-V1
Secretbox Overview-V1Secretbox Overview-V1
Secretbox Overview-V1
 
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioCrossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano Colosio
 
Crossdev sdk/tools: devil's deception
Crossdev sdk/tools: devil's deceptionCrossdev sdk/tools: devil's deception
Crossdev sdk/tools: devil's deception
 
Bitcoin e blockchain - concetti base
Bitcoin e blockchain - concetti baseBitcoin e blockchain - concetti base
Bitcoin e blockchain - concetti base
 
Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...
Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...
Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzare le proprie Ski...
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?
 
Blockchain! - Luglio 2018 Convegno SGI a Bevagna
Blockchain! - Luglio 2018  Convegno SGI a BevagnaBlockchain! - Luglio 2018  Convegno SGI a Bevagna
Blockchain! - Luglio 2018 Convegno SGI a Bevagna
 
Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...
Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...
Marco Casario - Blockchain, Bitcoin, Ethereum e Javascript Mining: Monetizzar...
 
Azure Hybrid @ Home
Azure Hybrid @ HomeAzure Hybrid @ Home
Azure Hybrid @ Home
 

More from Paolo Montrasio

Sviluppare agenti conversazionali con Rasa
Sviluppare agenti conversazionali con RasaSviluppare agenti conversazionali con Rasa
Sviluppare agenti conversazionali con RasaPaolo Montrasio
 
Il Chatbot come guida di viaggio: Travelchat
Il Chatbot come guida di viaggio: TravelchatIl Chatbot come guida di viaggio: Travelchat
Il Chatbot come guida di viaggio: TravelchatPaolo Montrasio
 
Costruire chatbot conversazionali ed intelligenti con Xenioo
Costruire chatbot conversazionali ed intelligenti con XeniooCostruire chatbot conversazionali ed intelligenti con Xenioo
Costruire chatbot conversazionali ed intelligenti con XeniooPaolo Montrasio
 
Voicebot: i Chatbot crescono e imparano a parlare
Voicebot: i Chatbot crescono e imparano a parlareVoicebot: i Chatbot crescono e imparano a parlare
Voicebot: i Chatbot crescono e imparano a parlarePaolo Montrasio
 
IBM Watson, un caso reale
IBM Watson, un caso realeIBM Watson, un caso reale
IBM Watson, un caso realePaolo Montrasio
 
Gardy, un chatbot multilingua
Gardy, un chatbot multilinguaGardy, un chatbot multilingua
Gardy, un chatbot multilinguaPaolo Montrasio
 
Il più intelligente Chatbot Bancario in Italia!
Il più intelligente Chatbot Bancario in Italia!Il più intelligente Chatbot Bancario in Italia!
Il più intelligente Chatbot Bancario in Italia!Paolo Montrasio
 
Chatbot, a chi proporli e come ... scegli il giusto target
Chatbot, a chi proporli e come ... scegli il giusto targetChatbot, a chi proporli e come ... scegli il giusto target
Chatbot, a chi proporli e come ... scegli il giusto targetPaolo Montrasio
 
Cicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbotCicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbotPaolo Montrasio
 
Esplorando Google Assistant e Dialogflow
Esplorando Google Assistant e DialogflowEsplorando Google Assistant e Dialogflow
Esplorando Google Assistant e DialogflowPaolo Montrasio
 
Hubot + wit.ai, un chatbot aziendale per Slack
Hubot + wit.ai, un chatbot aziendale per SlackHubot + wit.ai, un chatbot aziendale per Slack
Hubot + wit.ai, un chatbot aziendale per SlackPaolo Montrasio
 
L'AI per Sales & Marketing B2B
L'AI per Sales & Marketing B2BL'AI per Sales & Marketing B2B
L'AI per Sales & Marketing B2BPaolo Montrasio
 
Innovazione digitale e i chatbot 2017
Innovazione  digitale e i chatbot  2017Innovazione  digitale e i chatbot  2017
Innovazione digitale e i chatbot 2017Paolo Montrasio
 
Trovare clienti con un chatbot
Trovare clienti con un chatbotTrovare clienti con un chatbot
Trovare clienti con un chatbotPaolo Montrasio
 
Innovare la relazione con i clienti nel retail
Innovare la relazione con i clienti nel retailInnovare la relazione con i clienti nel retail
Innovare la relazione con i clienti nel retailPaolo Montrasio
 
Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...
Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...
Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...Paolo Montrasio
 
Serverless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedServerless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedPaolo Montrasio
 

More from Paolo Montrasio (20)

Sviluppare agenti conversazionali con Rasa
Sviluppare agenti conversazionali con RasaSviluppare agenti conversazionali con Rasa
Sviluppare agenti conversazionali con Rasa
 
Il Chatbot come guida di viaggio: Travelchat
Il Chatbot come guida di viaggio: TravelchatIl Chatbot come guida di viaggio: Travelchat
Il Chatbot come guida di viaggio: Travelchat
 
Costruire chatbot conversazionali ed intelligenti con Xenioo
Costruire chatbot conversazionali ed intelligenti con XeniooCostruire chatbot conversazionali ed intelligenti con Xenioo
Costruire chatbot conversazionali ed intelligenti con Xenioo
 
Diving deep into NLP
Diving deep into NLPDiving deep into NLP
Diving deep into NLP
 
Voicebot: i Chatbot crescono e imparano a parlare
Voicebot: i Chatbot crescono e imparano a parlareVoicebot: i Chatbot crescono e imparano a parlare
Voicebot: i Chatbot crescono e imparano a parlare
 
IBM Watson, un caso reale
IBM Watson, un caso realeIBM Watson, un caso reale
IBM Watson, un caso reale
 
Gardy, un chatbot multilingua
Gardy, un chatbot multilinguaGardy, un chatbot multilingua
Gardy, un chatbot multilingua
 
Il più intelligente Chatbot Bancario in Italia!
Il più intelligente Chatbot Bancario in Italia!Il più intelligente Chatbot Bancario in Italia!
Il più intelligente Chatbot Bancario in Italia!
 
Chatbot, a chi proporli e come ... scegli il giusto target
Chatbot, a chi proporli e come ... scegli il giusto targetChatbot, a chi proporli e come ... scegli il giusto target
Chatbot, a chi proporli e come ... scegli il giusto target
 
Cicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbotCicerus - una piattaforma per lo sviluppo di chatbot
Cicerus - una piattaforma per lo sviluppo di chatbot
 
Esplorando Google Assistant e Dialogflow
Esplorando Google Assistant e DialogflowEsplorando Google Assistant e Dialogflow
Esplorando Google Assistant e Dialogflow
 
Hubot + wit.ai, un chatbot aziendale per Slack
Hubot + wit.ai, un chatbot aziendale per SlackHubot + wit.ai, un chatbot aziendale per Slack
Hubot + wit.ai, un chatbot aziendale per Slack
 
Making Chatbots
Making ChatbotsMaking Chatbots
Making Chatbots
 
L'AI per Sales & Marketing B2B
L'AI per Sales & Marketing B2BL'AI per Sales & Marketing B2B
L'AI per Sales & Marketing B2B
 
Chatbot per i musei
Chatbot per i museiChatbot per i musei
Chatbot per i musei
 
Innovazione digitale e i chatbot 2017
Innovazione  digitale e i chatbot  2017Innovazione  digitale e i chatbot  2017
Innovazione digitale e i chatbot 2017
 
Trovare clienti con un chatbot
Trovare clienti con un chatbotTrovare clienti con un chatbot
Trovare clienti con un chatbot
 
Innovare la relazione con i clienti nel retail
Innovare la relazione con i clienti nel retailInnovare la relazione con i clienti nel retail
Innovare la relazione con i clienti nel retail
 
Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...
Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...
Moose.ai: migliorare la customer experience delle banche con un chatbot B2C &...
 
Serverless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedServerless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speed
 

Full Stack Cryptography

  • 1. “È fatta. Resta da cifrare un campo in una tabella, che sarà mai?” Paolo Montrasio Giorgio Sidari paolo.montrasio@connettiva.eu giorgio@sidari.it
  • 2. Il problema Applicazione web conclusa Bisogna cifrare un campo di testo nel DB Il campo deve essere decifrabile nel client inserendo la chiave Facile? Anche Ulisse deve aver detto così partendo da Troia
  • 3. Alternative Cifratura simmetrica con chiave sul server → inutile Cifratura asimmetrica, solo chiave pubblica sul server → OK!
  • 4. Alternative Cifratura simmetrica con chiave sul server → inutile Cifratura asimmetrica, solo chiave pubblica sul server → OK! Ma… Si cifrano solo blocchi lunghi quanto la chiave Meno il padding
  • 5. I nostri dati sono brevi Sarà una passeggiata!
  • 6. I nostri dati sono brevi Sarà una passeggiata! Come mai le SELECT non funzionano!?
  • 7. $ openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 $ openssl rsa -pubout -in private_key.pem -out public_key.pem $ nvm install 5.7.0 $ nvm use 5.7.0 https://github.com/pmontrasio/full-stack-cryptography
  • 8.
  • 10. Ma possiamo far finta che lo sia Padding deterministico in base ai dati Math.random() crypto.randomBytes() JavaScript si è scordato di un Math.seed() → modulo esterno require(“seedrandom”)
  • 11.
  • 12. La crittografia deterministica indebolisce la sicurezza Usarla con cautela solo se necessario
  • 13. Mandiamo i dati al browser Base64! Sembra fatta
  • 14. Anche le cose più semplici nascondono sorprese Interoperabilità con il backend Base64 Node → Base64 JS, OK Base64 Ruby → Base64 JS, un n di troppo
  • 15. Inserire la chiave privata nel browser, ogni volta: NO! La seppelliamo in LocalStorage: NI La sicurezza della crittografia JS nel frontend è dibattuta
  • 16.
  • 17. È fatta o è un altro inganno?
  • 18. Jsencrypt non decifra senza padding! Cercare un altro modulo → non se ne trovano Aggiungere la propria funzione di decifratura → non una passeggiata Dare la brutta notizia al cliente → qui è dove Ulisse ha perso tutti i compagni supestiti
  • 19. Il codice da modificare è di facile comprensione � Scriviamo la funzione
  • 22. È ora di farla pagare!
  • 23. È ora di farla pagare! …la feature :)
  • 24. Paolo Montrasio Giorgio Sidari paolo.montrasio@connettiva.eu giorgio@sidari.it @pmontrasio @ideaferace https://github.com/pmontrasio/full-stack-cryptography Slide a https://connettiva.eu/full-stack-cryptography