 Hello, everyone. This is Shratha. I'm going to talk about a NAACS project. It's working and a little demo at the end. The crucial problem that the NAACS does with is the trust on the isolation in the remote cloud environments. In the cloud environments, host and owners of different clays can pick into the sensitive data without you knowing. For this issue, there are different trusted execution environments or TEs. A TE is basically a secure area in the host to run the sensitive workloads. Only the CPU has access to this TE. So if any other layer tries to access it, then they are denied the access. All this is good. So why do we need NAACS? TEs are awesome, but they have few limitations. There are different platforms for TEs and for each platform, we have to develop the application differently. For writing those applications, you need to use different SDKs and restrict the language use. The third important part is the attestation. There are different attestation models used for different platforms. Lastly, there are different cloud vendors currently in the market. Handling these third party products and their vulnerabilities is very risky. So NAACS is focused on getting rid of all this limitation that are posed by TEs. Let's take a quick overview of the NAACS. It uses TEs for confidential workloads. It makes the development and the deployment easy using RASM. It has strong security principles for reducing the trust relationships. It's cloud-native and it has been made open source. So it basically, the NAACS removes all limitations by creating the platform agnostic, easy to develop and secure system to deploy the sensitive work loads to the remote host. Let's understand how the NAACS is reducing the limitations in more detail manner. This is a normal structure of the systems on the cloud. NAACS focuses on reducing the trust relationships. So we just need to trust the CPU and the firmware and wipe out the need to trust any of the other layers above it. The most important thing here is the NAACS is a deployment framework. It can let you choose whatever language you want to develop an application in. You just have to compile it to the WebAssembly and need to choose the host and then you are ready to deploy it to the NAACS scale. Let's go to the demo part now. The demo is based on the scenario where we want to carry out a confidential transaction in a trusted execution environment using zero-knowledge proof and with the help of NAACS. Let's first understand what ZKP is. ZKP is used when you want to carry out a confidential transaction or we want to do a statement or a secret without showing any extra details apart to the other party. It's highly used in the cryptographic and authentication system. Let's take an example. Here are Bob and Alice. They will help us understand ZKP. So Bob and Alice decide to go to Dengen Lake individually. After the raid, they want to see if their number of coins is the same or not without revealing any other information about their gains. Considering they can have coins between 10 to 25 range, Bob pulls four lockable boxes with the labels. Bob keeps the only one key to the box whose label number is the same as the number of coins. That is box with label 10 and throws other keys away. Alice has different paper markers, green marker for the box which has same label number as her number of coins and red marker for all the others. Since Alice has 25 coins, she puts the green sticker inside it and puts the red sticker for all the others. At the end of this procedure, Bob opens the box number 10 with his key and he finds that he has red marker, meaning that his number of coins is not equal to hers. He doesn't know how many coins she has and then no other information is delivered. This is what the ZKP eats. They are done with the theory part now. Let's go ahead with the implementation. You are implementing a non-interactive type of ZKP, that is bullet proof. Simplest between the prover will create the proof, send it over to the verifier and then the verifier will validate that proof and save the proof as valid or not. Let's check out the demo now. In the code, I have added a range proof which will use a bit factor M and we will check if the secret is in the range from 0 to 2 raised to power M and the commitments will be there, which will create the agreements and are passed to the verifier to carry out the verification process. Here we are taking the two inputs, secret and the bit vector. First of all, we will be compiling it to the WebAssembly and then run it in an arc state. In the first example, I will be taking the secret as 7 and the bit vector as 8. Since 7 is in the 0 to 256 range proof as verifier, on the other hand, I will be taking the secret as 286 and the bit vector is 8. In this case, proof will not be verified since it is not in the range. This is how the applications can be easily deployed on top of an arc and will provide an additional layer of security for our sensitive code and data as well as making this development process much easier. So we have got to know how ZKPs work and how to run them on top of an arc. Thank you.