SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
HOW TO ADD END TO END
ENCRYPTION TO YOUR REACT APP
// @IronCoreLabs @cipher_sift
Show of hands…
// @IronCoreLabs @cipher_sift
ENCRYPTION
// @IronCoreLabs @cipher_sift
HTTPS
// @IronCoreLabs @cipher_sift
DATA STORE ENCRYPTION
// @IronCoreLabs @cipher_sift
Loss of Data
Control
Encryption in Transit + Encryption at Rest
≠ End to End Encryption
// @IronCoreLabs @cipher_sift
DON’T GET
ZUCKED
// @IronCoreLabs @cipher_sift
END-TO-END ENCRYPTION
If your application is not using

end-to-end encryption 

it is not private or secure.
Concept
Code
Groups
Concept
Code
Groups
// @IronCoreLabs @cipher_sift
Data
INTEGRATE AT THE DATA SEAM
// @IronCoreLabs @cipher_sift
REDUX
// @IronCoreLabs @cipher_sift
REDUX
Middleware
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: personalHealthInfoID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospitalID) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospitalID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospitalID) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospitalID }]
}
})
.then((encryptedBloodTest) => {
next({...action,
payload: { ...action.payload,
body: encryptedBloodTest.document,
id: encryptedBloodTest.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospitalID) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospitalID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
…action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
1
2
Middleware
Encryption
Decryption
3
// @IronCoreLabs @cipher_sift
…BONUS
// @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptNewOrder(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: personalHealthInfoID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
// @IronCoreLabs @cipher_sift
Group
Access
Encrypt
// @IronCoreLabs @cipher_sift
Personal
Health
Info
Group
// @IronCoreLabs @cipher_sift
Group
Hospital
Personal
Health
Info
// @IronCoreLabs @cipher_sift
Group
Hospital
Personal
Health
Info
Dr.,
Nurse,
Lab,
Insurance Company,
Blood Type Search Index (1x)
{
// @IronCoreLabs @cipher_sift
Group
Hospital
Dr.,
Nurse,
Lab,
Insurance Company,
Blood Type Search Index (1x)
{
Personal
Health
Info
// @IronCoreLabs @cipher_sift
Orthogonal
Access Control
// @IronCoreLabs @cipher_sift
Data control:
Data control is the ability for a data owner
to determine who can use their data, see how
it's used and by whom, and to change their
mind and revoke their access at any time,
regardless of where the data is stored.
If your application is not using

end-to-end encryption 

it is not private or secure.

Implement data control

for who, how, and revocation.
// @IronCoreLabs @cipher_sift
Questions?
IronCoreLabs
@ironcorelabs
madison-kerndt
@cipher_sift
ironcorelabs.com madison@ironcorelabs.com
// @IronCoreLabs @cipher_sift
Thank you!
IronCoreLabs
@ironcorelabs
madison-kerndt
@cipher_sift
ironcorelabs.com madison@ironcorelabs.com

Contenu connexe

Tendances

Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)
Takrim Ul Islam Laskar
 

Tendances (20)

MongoDB Workshop
MongoDB WorkshopMongoDB Workshop
MongoDB Workshop
 
Azure Data Factory
Azure Data FactoryAzure Data Factory
Azure Data Factory
 
Infrastructure as Code with Ansible
Infrastructure as Code with AnsibleInfrastructure as Code with Ansible
Infrastructure as Code with Ansible
 
SOLID principles with Typescript examples
SOLID principles with Typescript examplesSOLID principles with Typescript examples
SOLID principles with Typescript examples
 
Introduction to data migration
Introduction to data migrationIntroduction to data migration
Introduction to data migration
 
Діма Зубець ” The Zachman Framework for Enterprise Architecture”
Діма Зубець ” The Zachman Framework for Enterprise Architecture”Діма Зубець ” The Zachman Framework for Enterprise Architecture”
Діма Зубець ” The Zachman Framework for Enterprise Architecture”
 
Get more from SAP with OpenText
Get more from SAP with OpenTextGet more from SAP with OpenText
Get more from SAP with OpenText
 
Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)
Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)
Building Dynamic Pipelines in Azure Data Factory (SQLSaturday Oslo)
 
Data Lakehouse, Data Mesh, and Data Fabric (r2)
Data Lakehouse, Data Mesh, and Data Fabric (r2)Data Lakehouse, Data Mesh, and Data Fabric (r2)
Data Lakehouse, Data Mesh, and Data Fabric (r2)
 
Salesforce Integration using REST SOAP and HTTP callouts
Salesforce Integration using REST SOAP and HTTP calloutsSalesforce Integration using REST SOAP and HTTP callouts
Salesforce Integration using REST SOAP and HTTP callouts
 
Azure Data Factory | Moving On-Premise Data to Azure Cloud | Microsoft Azure ...
Azure Data Factory | Moving On-Premise Data to Azure Cloud | Microsoft Azure ...Azure Data Factory | Moving On-Premise Data to Azure Cloud | Microsoft Azure ...
Azure Data Factory | Moving On-Premise Data to Azure Cloud | Microsoft Azure ...
 
Kafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformKafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platform
 
Clean Infrastructure as Code
Clean Infrastructure as Code Clean Infrastructure as Code
Clean Infrastructure as Code
 
Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)
 
Webinar: Transforming Warehouse Operations with SAP EWM
Webinar: Transforming Warehouse Operations with SAP EWMWebinar: Transforming Warehouse Operations with SAP EWM
Webinar: Transforming Warehouse Operations with SAP EWM
 
Session 14 - Hive
Session 14 - HiveSession 14 - Hive
Session 14 - Hive
 
Shaping serverless architecture with domain driven design patterns
Shaping serverless architecture with domain driven design patternsShaping serverless architecture with domain driven design patterns
Shaping serverless architecture with domain driven design patterns
 
Securing enterprise-grade serverless applications - SDD401 - AWS re:Inforce 2...
Securing enterprise-grade serverless applications - SDD401 - AWS re:Inforce 2...Securing enterprise-grade serverless applications - SDD401 - AWS re:Inforce 2...
Securing enterprise-grade serverless applications - SDD401 - AWS re:Inforce 2...
 
Clean code
Clean codeClean code
Clean code
 
SAP on Azure Technical Pitch Deck
SAP on Azure Technical Pitch DeckSAP on Azure Technical Pitch Deck
SAP on Azure Technical Pitch Deck
 

Similaire à How to Add End-to-End Encryption to Your React App

Terrastore - A document database for developers
Terrastore - A document database for developersTerrastore - A document database for developers
Terrastore - A document database for developers
Sergio Bossa
 
Codestrong 2012 breakout session hacking titanium
Codestrong 2012 breakout session   hacking titaniumCodestrong 2012 breakout session   hacking titanium
Codestrong 2012 breakout session hacking titanium
Axway Appcelerator
 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on Android
Sven Haiges
 

Similaire à How to Add End-to-End Encryption to Your React App (20)

Automated malware analysis
Automated malware analysisAutomated malware analysis
Automated malware analysis
 
Intro to Parse
Intro to ParseIntro to Parse
Intro to Parse
 
IstSec'14 - İbrahim BALİÇ - Automated Malware Analysis
IstSec'14 - İbrahim BALİÇ -  Automated Malware AnalysisIstSec'14 - İbrahim BALİÇ -  Automated Malware Analysis
IstSec'14 - İbrahim BALİÇ - Automated Malware Analysis
 
Nantes Jug - Java 7
Nantes Jug - Java 7Nantes Jug - Java 7
Nantes Jug - Java 7
 
JS Fest 2019 Node.js Antipatterns
JS Fest 2019 Node.js AntipatternsJS Fest 2019 Node.js Antipatterns
JS Fest 2019 Node.js Antipatterns
 
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
 
Terrastore - A document database for developers
Terrastore - A document database for developersTerrastore - A document database for developers
Terrastore - A document database for developers
 
node.js and the AR.Drone: building a real-time dashboard using socket.io
node.js and the AR.Drone: building a real-time dashboard using socket.ionode.js and the AR.Drone: building a real-time dashboard using socket.io
node.js and the AR.Drone: building a real-time dashboard using socket.io
 
Developing web-apps like it's 2013
Developing web-apps like it's 2013Developing web-apps like it's 2013
Developing web-apps like it's 2013
 
async/await in Swift
async/await in Swiftasync/await in Swift
async/await in Swift
 
Codestrong 2012 breakout session hacking titanium
Codestrong 2012 breakout session   hacking titaniumCodestrong 2012 breakout session   hacking titanium
Codestrong 2012 breakout session hacking titanium
 
Lviv MDDay 2014. Ігор Коробка “забезпечення базової безпеки в андроїд аплікац...
Lviv MDDay 2014. Ігор Коробка “забезпечення базової безпеки в андроїд аплікац...Lviv MDDay 2014. Ігор Коробка “забезпечення базової безпеки в андроїд аплікац...
Lviv MDDay 2014. Ігор Коробка “забезпечення базової безпеки в андроїд аплікац...
 
Reduxing like a pro
Reduxing like a proReduxing like a pro
Reduxing like a pro
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
Android Automated Testing
Android Automated TestingAndroid Automated Testing
Android Automated Testing
 
Secure Coding For Java - Une introduction
Secure Coding For Java - Une introductionSecure Coding For Java - Une introduction
Secure Coding For Java - Une introduction
 
Server side data sync for mobile apps with silex
Server side data sync for mobile apps with silexServer side data sync for mobile apps with silex
Server side data sync for mobile apps with silex
 
Coding Ajax
Coding AjaxCoding Ajax
Coding Ajax
 
power-assert, mechanism and philosophy
power-assert, mechanism and philosophypower-assert, mechanism and philosophy
power-assert, mechanism and philosophy
 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on Android
 

Plus de IronCore Labs

Plus de IronCore Labs (7)

Rethinking the Enterprise Perimeter | SnowFROC Presentation
Rethinking the Enterprise Perimeter | SnowFROC PresentationRethinking the Enterprise Perimeter | SnowFROC Presentation
Rethinking the Enterprise Perimeter | SnowFROC Presentation
 
How to Eat the Privacy and Security Elephant One Bite at a Time
How to Eat the Privacy and Security Elephant One Bite at a TimeHow to Eat the Privacy and Security Elephant One Bite at a Time
How to Eat the Privacy and Security Elephant One Bite at a Time
 
CCPA: What You Need to Know
CCPA: What You Need to KnowCCPA: What You Need to Know
CCPA: What You Need to Know
 
How to Add Data Privacy to Your Angular Application
How to Add Data Privacy to Your Angular ApplicationHow to Add Data Privacy to Your Angular Application
How to Add Data Privacy to Your Angular Application
 
Pairing Based Transform Cryptography (Proxy Re-Encryption - PRE)
Pairing Based Transform Cryptography (Proxy Re-Encryption - PRE)Pairing Based Transform Cryptography (Proxy Re-Encryption - PRE)
Pairing Based Transform Cryptography (Proxy Re-Encryption - PRE)
 
The Internet is a dog-eat-dog world and your app is clad in Milk Bone underwear
The Internet is a dog-eat-dog world and your app is clad in Milk Bone underwearThe Internet is a dog-eat-dog world and your app is clad in Milk Bone underwear
The Internet is a dog-eat-dog world and your app is clad in Milk Bone underwear
 
2018 acm-scc-presentation
2018 acm-scc-presentation2018 acm-scc-presentation
2018 acm-scc-presentation
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Dernier (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
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...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
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
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
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, ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

How to Add End-to-End Encryption to Your React App