Transcript
            
            
              This transcript was autogenerated. To make changes, submit a PR.
            
            
            
            
              Hello, everyone.
            
            
            
              I am Gaurav Mittal.
            
            
            
              I am currently working with Thermo Fisher Scientific as a data science manager.
            
            
            
              Today, I'm going to present a talk on email attachment security.
            
            
            
              I'll see you next time.
            
            
            
              Thank you for joining my call.
            
            
            
              I would like to highlight a business scenario today.
            
            
            
              like most of the organizations, they are tend to send emails to
            
            
            
              their customers, having attachments.
            
            
            
              Now consider a scenario like where, it's an insurance organization.
            
            
            
              They are sending you a renter insurance document.
            
            
            
              Or when it comes to medical, industry, they are sending you
            
            
            
              medical receipts or some, some of your PII data as an attachment.
            
            
            
              Even today's world, some countries, they are sending e visa in your
            
            
            
              email as an attachment, which contains your passport information.
            
            
            
              All this information, they are very sensitive.
            
            
            
              It's your PII data, which, is prone to, phishing email fraud attack.
            
            
            
              And, how, what kind of risk, we have so few of the risk,
            
            
            
              as I have highlighted here.
            
            
            
              Like the most common, risk is like man in the middle attacks.
            
            
            
              What happens, the email server, what is sending the email,
            
            
            
              that is not very secure.
            
            
            
              And, in between there can be, it can be hacked.
            
            
            
              And your information, which is very sensitive, it can
            
            
            
              be, hacked by the hackers.
            
            
            
              Or, maybe there is not inadequate, there is not, encryption.
            
            
            
              proper encryption being utilized.
            
            
            
              there are no antivirus softwares installed.
            
            
            
              the emails when they are in transaction, it may be possible the authors,
            
            
            
              they can get unauthorized access.
            
            
            
              To the transmission they can go through The attachments and your information is
            
            
            
              prompt fraud now What is the solution for it how we can achieve it so we can
            
            
            
              overcome the frauds by implementing data security in data security world There
            
            
            
              are a few common terms like authorization Authentication is like, like only
            
            
            
              the users which is having appropriate access You They can log in and they can
            
            
            
              view, those, particular information.
            
            
            
              Authorization is like you are curbing the role access.
            
            
            
              So like only if you have some specific role, you can, avail
            
            
            
              this much of information.
            
            
            
              It depends on your role, like you can view the information content and
            
            
            
              the most commonly used is encryption.
            
            
            
              So in encryption, we, what we do, either we use the data masking or we,
            
            
            
              like encrypt the data using, key in AWS, there's a service like AWS KMS.
            
            
            
              So what happens like the plaintext it is being encrypted using a key and the
            
            
            
              customer at the receiving side is being provided a decrypt key to so that only
            
            
            
              the like reliable customer whom we want to send the information is having the
            
            
            
              key to decrypt and view the contents.
            
            
            
              So that's how we can secure it.
            
            
            
              Now the question is, okay, we have learned about the frauds.
            
            
            
              We have learned about data security, but how we can secure the email attachments.
            
            
            
              So in the email attachments, like the most common way is okay, you educate the users,
            
            
            
              you show the awareness, the organizations, they are installing antivirus softwares.
            
            
            
              But from our end, like when we are sending the emails to our customers, what we can
            
            
            
              do, we can use, the encryption at our end, which the most common technology is
            
            
            
              like data masking or password protection.
            
            
            
              In that case, like when the users, they are receiving the emails,
            
            
            
              they have to, type a password, then only they can view the content.
            
            
            
              Otherwise, even if the emails they are being forwarded to a wrong
            
            
            
              email, wrong person, he like that fraud guy cannot open the email.
            
            
            
              So your sensitive information is still secure.
            
            
            
              The other way what we can do is access control.
            
            
            
              So in the access control, we can actually control the time period
            
            
            
              for which this information, the attachment, what we are sending is
            
            
            
              accessible beyond that time period.
            
            
            
              Actually, this attachment just shows, okay, link is, does not exist.
            
            
            
              The validity is over coming to the implementation side.
            
            
            
              Okay.
            
            
            
              How we can actually implement it.
            
            
            
              The very simple solution, what I want to depict today is using PyMiniGip library.
            
            
            
              It's an open source library provided by, Python and the
            
            
            
              installation is also quite simple.
            
            
            
              Now, what happens PyMiniGip library, what it does, you have a file.
            
            
            
              When you use PyMiniGip library, it actually creates a folder which
            
            
            
              is a zipped folder and that zipped folder is when you try to unzip
            
            
            
              it, it will ask you a password.
            
            
            
              Now only the reliable person who is having the password can open it.
            
            
            
              So we are going to implement first layer of security using PyMiniGip library.
            
            
            
              So there is a method like compress, there are three arguments as I have shown below.
            
            
            
              Like you need to provide your source file destination then what is the
            
            
            
              destination file where you want to?
            
            
            
              Keep this zip file folder.
            
            
            
              What is the password you want to provide?
            
            
            
              So Password is something like you can keep Information which only dead person
            
            
            
              know like his date of birth or like last four digits of his cell number or
            
            
            
              something like that if you are going to apply this then this information only
            
            
            
              the person know and they can They can easily open the file Secondly, they are
            
            
            
              not going to reach back to you again and again asking, Hey, can you reset
            
            
            
              my password or something like that?
            
            
            
              It's an easy way to implement it.
            
            
            
              And the last argument is a level to what level you want to compress the file.
            
            
            
              So there is a zero to 10, 10 being the highest.
            
            
            
              Okay.
            
            
            
              we have learned about PyMiniJib library.
            
            
            
              Okay.
            
            
            
              This library can help in jibbing the, like in, creating a password for it.
            
            
            
              But if we are talking about AWS infrastructure, how we can do it.
            
            
            
              So in AWS Lambda, where you generally write the code, there
            
            
            
              is a way you can create a layer for this particular library.
            
            
            
              The installation is quite simple.
            
            
            
              this library you can install using pip command, it's a single line command.
            
            
            
              And when you install it in your local, You can attach it as a layer as I have shown
            
            
            
              in on the right hand side bottom part.
            
            
            
              So once you, in your Lambda, if you have to click on, like uploading a layer, which
            
            
            
              is, which will be a zip file archive.
            
            
            
              And when you upload it, you will be able to use the Pyminijip
            
            
            
              library in your source code.
            
            
            
              So we have talked about encryption, which is through Pyminijip library and in AWS
            
            
            
              Lambda function, we will create a layer.
            
            
            
              But how to make sure about access control.
            
            
            
              in S3 we have a concept S3 PD signed, URL.
            
            
            
              This pre-signed URL is basically, like if there are S3 objects, we
            
            
            
              want to provide access to some third person without changing the IM policy
            
            
            
              or providing any AWS credentials.
            
            
            
              There is a bypass route.
            
            
            
              You just provide that person a temporary access by generating
            
            
            
              a pre signed URL and you.
            
            
            
              And on this URL you can actually control.
            
            
            
              The validity for how long you are that person can access this particular object.
            
            
            
              to control the access, there are actually, three ways.
            
            
            
              like for example, if you are generating the signed URL through
            
            
            
              IAM instance profile, the URL will be valid for only six hours.
            
            
            
              If you are using AWS SDA service, which is security token service.
            
            
            
              The URL can be valid till 36 hours and the last the longest is like
            
            
            
              through IAM user The URL will be valid for seven working days.
            
            
            
              Like we can achieve several benefits out of it as I mentioned
            
            
            
              here Like it's completely secure.
            
            
            
              We are not sharing any AWS credentials.
            
            
            
              It's just a single URL And you decide whom you want to grant the access.
            
            
            
              Okay, you are sending it in your email.
            
            
            
              And the third user, they can, through this URL, you are granting the access.
            
            
            
              Okay, you can upload or you can download the file.
            
            
            
              This is how, pre signed URL email looks like.
            
            
            
              If you look this particular email, there is actually no attachment.
            
            
            
              Okay.
            
            
            
              And secondly, when, when you click on this particular, email
            
            
            
              link, it'll ask you a password.
            
            
            
              So that password only the person whom you, we are sending the
            
            
            
              email, only that person knows.
            
            
            
              And the last part is we are also actually controlling the access till
            
            
            
              how long this URL should be valid based on the way you are creating it, it can,
            
            
            
              it, the URL ranges from six hours to.
            
            
            
              Like seven working days
            
            
            
              though.
            
            
            
              So we have, protected the file using PI mini JIP, and we have, performed
            
            
            
              access control also to send the service to send the, like a file
            
            
            
              now this password protected file, we can use AWS SCS service, which is
            
            
            
              send email service and, send email service, it has some, like features.
            
            
            
              So you need to create a verified identity whom you are going to send
            
            
            
              email and to whom you want to send.
            
            
            
              Actually, those can be verified on unverified identities.
            
            
            
              So all the email addresses, then they need not to be verified, but there is
            
            
            
              one constraint in SES service, which is like only 40 emails per second.
            
            
            
              They can be sent.
            
            
            
              I would like to show you the final code in the final code.
            
            
            
              If you look, the first line I am using the PyMiniGip library, which is just going
            
            
            
              to compress a CSV file and I am providing password, compressed level, everything.
            
            
            
              Once this file is being compressed using PyMiniGip, I am going to
            
            
            
              generate a signed URL for it.
            
            
            
              And I am, using it through Im users.
            
            
            
              So I was having the option to put it for seven working days,
            
            
            
              which is what I've used here.
            
            
            
              And SES service, as I mentioned, it has a limit of 40, emails per second.
            
            
            
              So I, I thought okay, why not to, put one, second delay, in
            
            
            
              between each and every email.
            
            
            
              But it purely depends on your implementation, how you want to do it.
            
            
            
              But time.
            
            
            
              sleep we can use, in between sending the emails to make sure we are not, leaching
            
            
            
              the throttling limit of, SCS service.
            
            
            
              The final architecture will look like this here.
            
            
            
              it's completely built in AWS.
            
            
            
              There is a CSV file.
            
            
            
              Okay.
            
            
            
              Using PyMiniJib library, you have, encrypted it, a password.
            
            
            
              Okay.
            
            
            
              like a zip folder is there when you click on it, it will ask you a password.
            
            
            
              there is a pre signed URL.
            
            
            
              This pre signed URL is valid for a certain time limit.
            
            
            
              And through SCS service, I am going to send it to verified
            
            
            
              or unverified accounts.
            
            
            
              Now, the whole advantage of it is even, even today, if this, emails.
            
            
            
              They are being sent to wrong person.
            
            
            
              They won't be knowing like, what is the password for it?
            
            
            
              Only the reliable person, they know it.
            
            
            
              And secondly, we are also putting a time limit.
            
            
            
              Okay.
            
            
            
              That for this particular time, only this emails, they are valid.
            
            
            
              And the third, the most, important feature here is if I go back, see, if you look
            
            
            
              in the emails, there is no attachment.
            
            
            
              Okay.
            
            
            
              So from the Lambda function, when we have to send emails, The
            
            
            
              attachments, they take some time to attach, but here you are just, it's
            
            
            
              just a URL, what we are sending.
            
            
            
              So that transfer time has, significantly reduced and
            
            
            
              Lambda is pay as you go service.
            
            
            
              So we are actually saving some amount through our implementation also.
            
            
            
              So no attachments are there.
            
            
            
              this is all about me and, like I have written an article
            
            
            
              also on this particular topic.
            
            
            
              feel free to go through it.
            
            
            
              And, this is my Twitter, gautamM85 in case of any questions, anything,
            
            
            
              please feel free to reach out to me.
            
            
            
              Thank you.