You know, it's a it's a crooked path from today into the future and it's not really clear what that path looks like But of course, we have some hopes and some dreams I think just as all of us did when we started an open source and so today I want to talk a little bit about Thinking about the future both from the internet and the web and free software So in the future It's clear Floss is everywhere Floss is everywhere today and this is really quite remarkable. You know in the early days of Mozilla floss was sort of radical and really sort of Everyone who wasn't involved in it knew that floss was some odd thing that maybe developers did but that really wouldn't have impact And it would always be small and sort of Developery like and in the United States we were called socialist and un-American and such things So floss everywhere today seems maybe obvious when you think about it, but certainly was not at the time And so I think a few things have gone into that one, you know, the right idea at the right time to a deep need for real collaborative work and Development and three the early very early work of license plus community is also been a model and so not only is floss everywhere today, but The open part of it is everywhere from open source and open standards where we started to open data open government Open science citizen science and so some of these core ideas from floss through the work of These groups us actually has become much more mainstream and has moved even out of floss Not always in the free software moniker, but certainly in the open moniker and that's a really exceptional piece to have accomplished in 20 years or so and sometimes there's a You know the cost of success so today me github is obvious It doesn't necessarily carry all the values of the thoughts of the things that go into floss software for some It does for some it doesn't it's just the way of working and so there are many things about floss that are mainstream today which is wild success and also means That there's still more to do because You know while floss is everywhere closed systems are everywhere too and so floss software floss libraries floss developers and communities Have gotten much stronger But in the internet today a really encased and wrapped in and often developed to the general consumer Inside a deeply closed system and so we can see do you think about the online life? Not so much of developing but of actually engaging with activities and the human experience Despite the layers of floss. It's really a small number of closed systems and so On its own sort of without interest without us without the other activists for freedom and openness and choice You can imagine that these closed systems the human experience on the internet for most consumers will continue for quite a while Sooner or later, they may decay or some new technology or new business model might come along But that's not apparent in you know the next few years and so the questions of floss and what we can do Does our work in our projects here affect the internet affect the experience and if so Might we tune our work or our thinking to have more impact? And so of course, that's the intersection that Mozilla lives in Born out of floss communities standing on the shoulders of giants but also very focused on the internet and so the use of Floss software and user control and choice and safe and secure software in our case really aimed at online life Both the structure of the network itself and the human experience and so for this question of you know the future of the internet I want to frame it today in three questions and three responses So the first one How do the values that build floss or build free software and open source communities? How can they get built or expanded and modified and really built into the fabric of the internet more? We see them in the development methodology of much of the software in the internet But we don't see nearly as much in the human experience and so one question is what might that look like? What might we do? What are we doing today? If there are many of us thinking about these questions? How do we join together and become more effective? You know a second question Will the future be webby? You know for those of us certainly have a certain vintage We came online to the web or the worldwide web and the internet underlay it but the graphical user face and the ability to Navigate and to move easily outside a command line was the web and there are certain things about the web that made it powerful and That reflected many of the aspirations of floss software now today Many people don't know much of the web and certainly if you come online For the first time on a phone and in many of the environments in the world You may not actually know about the web actually mostly what many people know about is Facebook So so the distinguishing Differences between Facebook and the internet are unclear But then when you try to get to the web or what do we mean about the web or the link or hypertext? That's another stage all together and so I'm not a believer It's the responsibility of those billions of people to understand what the web is and why it's different I'm a believer that as technologists and Projects people interested in this part of the world. It's really ours to make it clear What is great when it's great about the web what's great about the internet and where freedom lives? Like you can have protocols that have more or less freedom and openness built into them You can have technology That's the same way and you can have apps and human experience that provide a better foundation for more freedoms for more people And so this question of will it be webby is not a question of whether people will talk about the web but is a question of how much freedom is actually built in there and So we use the link or I do you know as as one very clear example of what that means I I See many Technologists cringe when I when I say this but but I view the link as a distributed Simple mass market data structure where any human being can take the knowledge the wealth of knowledge available online at least in a webby format online and we can make our own Narratives through that and we can make a path through different kinds of data different formats from text to video to voice To AR VR in the future without having a to go to someone and ask permission without having to learn the underlying technologies and so The web was linkable in a two-way fashion You know if the information was out there on a server connected to the right protocols You could get to it and from there you can get out of it back into someplace else And so it wasn't systematized into these closed lock systems So the web is linkable the web is interoperable and the web is set up in a way that there's a piece of software Out there that represents you Not the website Not the publisher that's got content not who ever owns the server, but you and that's the browser and That's why we build the browser. I mean we love the browser Mozilla, you know and we love Firefox. We love the browser me too, but but We love it at its heart because it is the tool that can represent each one of us and and this Arcane piece of software can can represent me vis-a-vis a website Anything from as simple as I want all the text bigger on every website I go to to I don't want to see your ads and your trackers can't follow me and So this question of who represents you or who represents me in an online experience is an open question When we get outside of the old worldwide web and the browser and so sometimes people ask Mozilla Well, why are you so interested in the browser and that's the reason Because that's our model to date of how we represent you and how we might build a stronger and more powerful place for you to exercise freedoms in your online experience and Yes, moving outside of the desktop browser into the other areas or the modes that we use is important to us And but the browser continues to be important. I mean it's very cool And it's it's amazingly complex technology and we understand it But the other root of why we continue to be deeply focused on it is it is the model It's no longer the universal client that it used to be but it is the model for how we take freedom and openness And start to put them in the hands of consumers in some much more easy to use fashion So question to still quite open And you know in the 1990s when we went through this The first time there was a set of activity that turned out to be illegal Tying the operating system into the browser locking out competition sets of rules So that was nice and The EU was a leader in this and this was true in the US as well So That's not the case today You know today all of the things that were illegal because they were bad for competition bad for choice allowed We'll say monopoly or near Malat not monopoly controls stifled innovation today. They're all legal But Apple started the system Apple had very small market share but now Google does this Microsoft does it again, you know the edge browser will reset your default browser Almost every time it updates. So it seems so there's there's a range of activities that were clearly wrong in the first go around with the web and today Whether they're wrong or not is one thing, but they're not illegal as they were and so that means there there is a lot of work to do and The interest in the closed systems is much more now in the closed system level. There's growing concern about Especially in Europe, you know Google Apple Facebook George Soros, you know this week made the connection between the size and scope of these closed platforms and the loss of innovation and business Opportunity, so I think awareness is continuing But we're back in a setting where the things that we knew were demonstrably bad for all of us in society Are all quite legal and they're the norm once again So lots of work to keep keep on there And the third question, how do we tackle the new experiences that are clear about the internet today? We have Known for a long time that surveillance is a problem So I don't think of that as a new one It's an issue that continues and maybe gets worse now that we have sort of commercial Advertising based surveillance that we participate in but there's a whole new set of issues that have become very clear in the last few years It turns out Just having all the information of the world at your fingertips Doesn't mean everybody searches knowledge more. It turns out that we're all online Doesn't necessarily bring us closer together that there's a lot of divisiveness, you know it turns out that the differences in communities don't go away and Class and status and gender and ethnic issues show up in in many ways Unmonitored online and so that's a good size set of issues And it's easy to look around and say wow, you know the thing that we really loved the internet the web It's got a lot of problems now and that's certainly true And many of those problems as best I can figure it out come from the fact that the early internet architecture was Designed by people of generally the same perspective Hey, they were all trying to work together. They were trying to make something that was interoperable They were trying to build technology and they were trying to build a community and They were very clear about the social engineering and the nature of community that they were building and they were wildly successful And we have the internet today. It's taken to eating everything But they were not among themselves fighting They were not playing out ethnic racial gender political religious Differences among them in the things that they were doing and so the system that was designed works great And it doesn't yet have mechanisms in it for when all of humanity is involved and all of our Differences show up. There's a fair amount of freedom of activity and not the same kinds of I would say community based Accountability mechanisms and so you see people free feeling quite free, you know to to say and do really horrendous things so How to start with a happy talk? Okay, so three questions and so One of the things that we're trying to do at Mozilla is to try to answer some of these questions not to have The only answers but to be part of the set of people who are actively trying to engage with this amazing thing the web now the internet that Can connect us in so many ways and needs attention so What what how are we thinking about it? Well? one the starting point you know floss Freedom and openness and collaborative development and what we're increasingly learning about communities and building healthy and increasingly diverse communities there's a range of values that Certainly follows down demonstrates how deep and how far and how wide They appeal to people and how you apply them in different ways and every year There's new projects applying these in places and ideas. You never would have thought of so there's something in the set of values that built this community and We don't quite have a way to express those values in data Because floss software especially the really powerful software sits at the heart of a lot of data systems You name it Amazon Google Facebook, right? But but we don't actually address the questions of openness and freedom in data in a cohesive way And that makes sense, you know, it took a while for the free software definition to be developed It took a while for the entire GNU system to be developed, you know Many many years to develop each of the components that ended up in Linux And so it's not surprising that when we get outside of pure software and we get into other areas that we don't have The consensus or the cohesion about what is open data? How do you protect freedom? How do you protect individuals? So that's an area of real focus And at Mozilla in particular we have wrenched ourselves around into dealing with data Because our approach for many years is we don't want any data Then we never have to think about any data and it allows us to have a whole range of Privacy and security practices and to stay out of a lot of problems because we have no data Well turns out a it's very hard to build a decent product and their recent quantum is so much better as we finally understand it but on a deeper level Our mission to try and make the internet open and accessible to all and a global public Resource and a decent place to live requires dealing with data Data is everywhere now and it's powerful. It's explosive and it's powerful So we're looking into it and hoping to find and connect with others in the floss world who are Interested and or already developing certain principles about data Same thing about cloud services, you know since floss is triggered on distribution the requirements of Copy left don't really apply to the large cloud services. And so we don't have a You know, we don't have our values deep in those systems. So what does that mean? This has been a you know a contentious topic certainly philosophical from RMS from way back So maybe we will always have the same view that if you're not distributing a copy of the code that copy left isn't Acceptable and that therefore cloud services go off on their own But I certainly would like as a community to meet to think about it and look at that pretty carefully and see if that's the full sum of our thinking on those things and Finally the experience which is dated that by this I mean the human experience Which is these closed system pieces? What what can we should we be doing? And so You know, there are many of you that are more involved in some of these areas or have been involved Productively longer than Mozilla house and so I and I think the bunch of Mozilla's who are here are pretty interested in Learning and hearing what your experiences are and I think you will see Mozilla Engage more deeply on these sort of topics as we go forward and they are hard questions data and privacy and security are hard to manage But I feel that the mission requires it and it in some ways it feels pure to say We're never going to have data because then we never make a mistake with data But I think it's so little taking the easy way out And I think the state of the world doesn't allow us to take the easy way out So I also am sure we will make some mistakes with data I wish we could be perfect, but we don't or we won't we're only human So you will see us make some mistakes with data and I ask in that case, you know, let us know call us on it But please Try to be gentle as well It is one thing that drives me crazy in Silicon Valley where people will just feel free to haul in and tell Mozilla Just how terrible we are while they work at Google and are doing these like more Invasive things and then wave their hands and say oh, but you're a nonprofit You're supposed to be better like that frees them to go off and be really nasty people So let's not do that to each other if we can Will the future be webby? I sure hope so Because the ability to have something represent me in the world is really key that needs interoperability It needs competition These are a few of the things that Mozilla is doing here These are the technology side like will the future be webby has a technology side It has a community side and it has a system architecture level side That last piece is hard to crack in the mobile space on tell on phones. I mean Because that's a that's an ecosystem. That's you know, 10 years old and pretty entrenched. We're not done trying but in the meantime and so you can see that the deep voice essentially open-source library for voice You know those those may become system tools But we also, you know continue to explore various technologies that otherwise we think would end up living only in the silos of the proprietary Organizations so we continue to work on this and of course to look around always both when we're here and increasingly in general and see who else is working on that and Can we can Mozilla do the things that we see but can we better be better at supporting the community of people doing others? So I hope you see these projects and find them interesting, but I also hope that We see you and what you're doing and get better at supporting and On the third one this one's really tough because those new issues get you right straight into well who decides Is it doxing? You know, is it really violence? Do you get to talk about x is that censorship? Who decides? What about free speech and so those are really hard problems? And we certainly are big believers in individual action and free speech and yet the internet experience as it is today is not Acceptable so we can't do nothing and so where we are so far. You know Mozilla has a manifesto That's what guides us. That's what we The set of principles that Mozilla is about that we hope anyone who cares about those can relate to and so we have begun adding some Aspirations to them. They're not hardcore principles yet because we don't know how to strike the balance between Human community activity that some behavior is not acceptable and what does accountability look like with free speech and Freedom and individuals being responsible for themselves. Those are very hard So we're not saying this is the way life has to be but we want clearly to set out some Aspirations for the world we're building I do not want to build a web or an internet that is good for government and commercial Stalkers and violence and hatred and divisiveness and not good for individual human beings trying to do decent things So we have a few additional aspirations and I'll just let you read them here and then I'm going to close on that And so those are actually in a public Google group, but probably the URL isn't well known So you will see this start to come out in more easy to find places in the next couple weeks And again, we realize you know individual control and freedom and government censorship are real issues So happy to engage on that, but if you can be gentle, I'd appreciate it And and obviously the hope is that we have floss everywhere as we go forward But in more open systems generally. Thank you You


You know, one of the reasons I'm not a political conservative so much, identify much more explicitly with being a patriot and finding fathers than I ran, is that these ideas make them angry, to the point that they don't even want to talk about them. You don't agree, okay, let's talk about it and maybe debate, right? I'll debate anybody on this. They get obsessed with policy stuff, right? The wall and this and that. They never look at the deeper, bigger picture, the roots of what's happening. And it's stuff like masculinity, femininity, divorce rates, virginity, particularly for women, right? These are the main things they should be talking about. This is what makes real change. It's even beyond conservatives though, right? Look at Christians today in America. Michael Foster is a pastor. He goes to the big Christian conferences. They try to tell him, you can't talk about that. They're de-platforming themselves.  Never mind this stuff. I didn't even wear this hat, right? I wish I would have. There's nothing more foundational in our species than masculinity and femininity, than men being men and women being women. These forces in our culture and our species are hundreds of thousands of years old. They're older than the wheel, they're older than fire, they're older than language.


5 reasons why you don't hear from the narcissist. Why don't you hear from the narcissist? Why don't they contact you like they used to? Why don't they seem to need you anymore? In this video, I'm going to give you 5 reasons why you don't hear from the narcissist. 1. New supply. The narcissist may have found a new supply. Someone who doesn't know what they're about. Someone to give them attention and admiration. Most often this isn't anything for them to boast about. The narcissist often doesn't realise it at the time. But they do tend to downgrade. They do tend to end up with people who are less attractive or less successful. People who haven't got a lot going on in their lives. But once the narcissist has been around you for a certain amount of time. Your supply loses its potency. Now they see anyone as being better than you. Because other people don't know what they're really about. They haven't been drained yet by the narcissist. So they have lots of energy and enthusiasm to give them. Lots of fuel. But it's only a matter of time until their supply loses its potency too. Until the narcissist gets bored of them. And that is when they will either hoover old sources of supply. Which may include you. Or they will seek out new sources. 2. Failure. Just because the narcissist isn't contacting you. It doesn't always mean that they're with someone else. After your relationship with them. They may have been boasting about how their lives are so much better without you. How they don't have any problems now. But then they seem to disappear. It's like they don't want you to know what's really going on. They'd rather you just believe than the illusion. The lies that they tell you. Because the truth is too embarrassing for them to admit. Many of them end up in situations that are far worse after they've left you. While they're with you. They act like any other situation would be better. They're so out of touch with reality. And when they leave you. They fall. They experience failure. They can't find any decent supply. They can't support themselves financially. Their lives become a mess. And that's why you may not hear from them. Because they don't want you to know what's really going on in their lives. When a narcissist is successful in something. They will want you to know everything that's going on. They will have so much to boast about. But when they suddenly ghost you. That should tell you that things aren't going as well as they wish they were. That should tell you that they're probably experiencing failure. Free. Rejection. You may not realise it. But in most cases. You rejected the narcissist. You may think that they discarded you first. But you stopped giving them attention. You stopped responding to them in the way that you once did. You used to admire and respect them. But because of all of the abuse and manipulation. You took a step back. You no longer wanted to deal with them. Maybe you didn't talk to them as much. Maybe you weren't as affectionate as you once were. Or maybe you stopped answering their calls. And the narcissist took this as a rejection. They felt like you didn't want to deal with them anymore. And that's why they discarded you. That's why they couldn't even look at you anymore. Because they can't deal with rejection. Most people don't like to be rejected. But for a narcissist. It's ten times worse. And that is why towards the end of the relationship. They did everything they could to try to hurt you. Because in their minds you hurt them first by rejecting them. They were trying to get revenge. They were trying to hurt you in return for a perceived injury. They suffered it at your hands. And once they believe that they've hurt you enough. They disappear. Because they can't be around someone who has rejected them. They can't even look at you without feeling shame. Without feeling like they're not good enough. Fall. Image and reputation. When things started to go wrong in the relationship. Due to the narcissist's lack of empathy. The narcissist started to blame you. They started to make you feel like you were at fault. Because they cannot hold themselves accountable. They cannot accept when they have done something wrong. They have to see themselves as being perfect. Because otherwise they would open the floodgates to all of the things they've done wrong in their past. And narcissists think in black or white. They're either all good or all bad. Perfect or flawed. And for them to feel like they're perfect. They had to blame you for everything. They had to make you feel like it was your fault.   But once they've done this. They end up shooting themselves in the foot. It only makes their lives difficult.  Without looking like they lied about everything they said. To protect their image and reputation. They cannot contact you. They cannot be on good terms with you.  And that's another reason why you wouldn't hear from them. Five. You're no longer susceptible to their manipulation. The reason why the narcissist left you. Is because you figured them out. You no longer wanted to deal with them. After everything they did to you. And they know that contacting you isn't going to solve anything. They know you're not going to admire them. They know you're not going to have any respect for them. After everything they did to you. They know you're not going to believe in their lies. So what's the point in them coming back? They're only going to come back. If they believe they can get something out of you. But they know that you're more aware now. They know that you figured them out. If they were to come back to you now. They would only be put themselves in a position to be rejected by you again. They would only be put themselves in a position to be humiliated. A narcissist cannot deal with rejection. They care a lot about what other people think of them. Even though they may not always act like they do. They care a lot about what you think about them. And that is why you don't hear from them. Thank you for watching. I hope this video resonates with you. Please like, comment, share and subscribe. Click the bell icon to receive notifications of my future videos. Check out the new NARX FIWAR website. At www.NARCSurvivor.co.uk Where you can read my blog posts, book coaching sessions and join a support forum. If you would like to donate, my PayPal link is in the video description. Coaching Inquiries, you can email me at coaching at NARCsurvivor.co.uk Thank you for watching and I'll talk to you soon.


Hi everybody and welcome to this session on attestations, the glue behind secure runtime environments. So today we're gonna talk about what attestations are, why they matter to runtime security and secure software supply chains. We'll discuss how to use attestations as part of your security strategy. We'll also discuss VEX or vulnerability exploiterally exchange and how that fits into the attestation workflows. And then we'll summarize all of these technologies and save some time for Q and A. So first a quick introduction to myself. I'm Jim Begwadia, co-founder and CEO at Nirmata. I'm also the creator and a maintainer of Kivirno. And in the Kubernetes community, I serve as a co-chair in the policy and multi-tenancy working groups. So let's start with the language definition of attestations. Quite simply, attestations are evidence or proof of something. It's a declaration. For example, in the real world, an auditor may attest to some event or some fact, just like a notary, a public notary would help notarize a document and attest to the fact that they have viewed the document and the identity of the person holding the document. But where does this fit in the software supply chain and what we want to do to improve runtime security? So the four components you wanna think about are artifacts, metadata, attestations and policies. First off, any software build will produce artifacts. These artifacts could be binaries that you're gonna execute in your cluster or in your runtime environments. They might be packages that are also deployed. Could be jar of our files, libraries or container images. So anything that your build will produce, which is gonna help your application execute. Metadata are additional artifacts also produced during build time. And metadata, just like in a software world, metadata is data that describes other data. Here, metadata are artifacts that describe or provide more information on existing artifacts or perhaps the build environments. Some examples of metadata could be provenance or data which proves the origin of the artifact or whatever you're deploying. It could be scan results which provide more information like scorecards or vulnerability reports on your artifacts. Could be a software bill of materials which describes exactly what the composition of your artifacts or your runtime images or what you're deploying looks like. The next piece is attestations. And like when we saw the language definition, attestations provide proof about artifacts itself. So in this context, attestations are signed statements created using a trusted entity about either the build environment or artifacts produced during the build. For example, an attestation could tell us in a secure manner that the build was executed in a trusted and in a known environment. The attestations can also indicate to us if artifacts comply with various organizational or regulatory standards. For example, you might not wanna deploy any container image with a high severity vulnerability if that's your baseline policy, or the attestations can help prove that the artifacts you're deploying like a container image comply with those requirements. And finally, policies verify attestations and metadata at various phases of execution. For example, right before deployment using admission controls in your cluster or could be as periodic scans which occur routinely. And it's important that these are done periodically because policies can change and attestations may also change which information that might be dynamic. So some examples of policies could be to verify that your build or your artifacts have the right attestations attached to them. And also to verify that the metadata that the attestation is verifying complies with your policies. Again, if you're checking for one little bit of reports the attestation maybe in the policies will verify that the attestation includes the right metadata produced by the right tools that you expected to and has the right results to allow that container, that image or other artifact to run in your environment. So summarizing this, artifacts are created by bills which could be as part of your CI CD tools. Metadata also produced by your CI CD tools describes the artifacts and the build environment. Attestations provide proof or evidence of these builds and artifacts and are created by a trusted entity, typically a trusted build process or something with a machine identity that can be verified. And then finally policies are used to verify these attestations for a defense in depth or a zero trust strategy across your supply chain. So now that we understand the concept of attestations and where attestations fit in a software supply chain let's dive in deeper and talk about the implementation details. So to do that I'd like to introduce Salsa. So Salsa or the supply chain levels for software artifacts is a set of standards being created by the open SSF supply chain integrity working group to help secure software supply chains. So Salsa is a security framework which provides a checklist of different requirements and controls to prevent the tampering and to check and verify the integrity of packages and infrastructure across the software supply chain. So currently Salsa is in alpha status but there's very active work being done within the community itself to define Salsa requirements as well as a set of generators and provenance generators and verifiers to output securing software supply chain. So Salsa defines four different levels of compliance and these levels check different requirements across source code, build environments, provenance data produced during the build environments and various categories including software code reviews and other aspects of your overall software delivery process. So level one is fairly easy to attend. It requires proper documentation or some verification of the build process itself and unsigned provenance. So fairly straightforward and simple to attend. Level two gets a little bit more difficult. It requires tamper resistance in the build environment. So typically if you're running a hosted build environment or service, level two is possible to attain by given the security environment of the host of the managed service you're using. If you have your internal build services then level two requires proof that your builds are tamper resistant and you also need to produce signed provenance as part of level two Salsa compliance. So this signed provenance is where attestations start coming into play. Level three requires further checks where the provenance now needs to be non-falsified viable which means that it cannot be tampered with, it cannot be somebody who has access to the build environment cannot falsify or change that provenance data and it requires extra security controls in your host systems itself. And level four goes even further requiring two-person code reviews and completely sealed or hermetic build environments which cannot be influenced by external factors or external systems itself. So within Salsa the definition of a software attestation is simply an authenticated statement or metadata about a software artifact or a collection of artifacts. Salsa uses an format called from Intoto. Intoto is another open source project within the Linux foundation related to software supply chain security. And Intoto has a specification for creating signed statements which Salsa also leverages for attestations. So the attestation model looks something like this. So starting from the right, you have bundles and bundles can contain multiple attestations. Each attestation consists of an envelope, a message and a signature. And the message component of the attestation is where the Intoto statement format comes into play. A statement contains a subject and a predicate. And a predicate can be any custom data or there are standards being developed for predicates for things like scan reports or predicates for different pieces of common information. Predicates within your statement itself, it will link back to the artifact which is being verified. And your predicate can provide further links to other things which can be looked up by policy engines or during policy checks. So putting all of this together, you can have multiple attestations produced. You can bundle these together and then you can use the Intoto format to secure and sign these attestations and attach them to your OCI registries along with your images itself. So here's an example of what an attestation might look like. So here you have an artifact which is identified by its hash, by a SHA ID. And what this is saying is that this particular artifact was built by a GitHub action which there is a link to that GitHub action and it's signed by GitHub itself which is acting in this case as a managed build service with an identity provided through an OIDC token. So all of this goes into an envelope which can also be signed to complete the signed attestation and deliver that securely. According to the in the Salsa attestation model, the tool stack looks like this. The envelope is signed using DSSE or dead simple signing envelope. The statements are Intoto attestations in a format which is being developed within the Intoto project. The predicates are JSON and this could be either custom JSON statements, could be things like scan reports or other standards being developed. You can have bundles of attestations and these multiple attestations are combined using a specification called JSON lines. And then the storage lookup is not defined yet in the Salsa spec, but typically these attestations are attached to your image using within an OCI registry itself either as a layer in an image or with other standards being developed within the OCI registry specification to be able to securely attach metadata to images itself. So here's what this looks like in practice. If you have an Intoto attestation, so you're on the left, it has the payload type, the payload and signatures. The payload type itself is well-defined, but the payload is where the statement begins. And as shown in the next box on the right, each statement starts with the declaration of the Intoto statement, the version of the specification it has. And then the statement has a subject, predicate types and predicates. So the predicate is the actual data that will be checked using policies, but all of this put together gives us a secure implementation of taking metadata produced during build time and in build environments and at build time and then signing them using a trusted entity like a GitHub action or some other build builder with an identity that can be trusted and creating this Intoto statement, which can then be attached to an OCI image. So in this next section, let's look at some live demos of how all of this comes together, using SIXTOR to create as well as sign the attestations and then Qiverno policies to verify the attestations. So first off, let's understand a little bit more what these tools do and how they work. So starting with SIXTOR. So SIXTOR contains three major tools, Cosign, Fulcio and Raycore. Cosign is used for signing pretty much anything. In our example, we're gonna use this to sign attestations. So attestations being again, Intoto statements which will use Cosign to sign as well as then push into an OCI registry. Fulcio, which is the other component in SIXTOR, acts as a web-based OIDC authority, which can generate temporary certificates and then which are used for signing. And then those certificates are actually just thrown away, but only after the signing event is recorded in Raycore, the third component, which is a transparency log. SIXTOR also has a policy controller and another component for Git signing, but we're not gonna use these components as part of this demo. So Kivarno is the policy engine that we're gonna use to verify these signed attestations produced by the SIXTOR components. Kivarno is a CNCF project. It's in the incubation phase and it acts as a Kubernetes native policy engine. What that means is policies in Kivarno are Kubernetes resources. They do not use any external policy language, but they are declaratively AMOs, much like Kubernetes resources themselves. The policy reports and results are also Kubernetes resources available inside the cluster, which can be managed using standard Kubernetes tools. Kivarno integrates directly with the control plane. It acts as an admission server, as well as it can query the API server for additional information to enrich policies. It also has the ability to cache things like config maps. So really, understanding how Kubernetes works, even patterns like owner references or how pods and pod controller works, Kivarno can take advantage of these type of things to make it easier to write and manage policies for Kubernetes itself. With that, let's dive in into the demo and I'll switch into my console. And what we're gonna do is first we're gonna look at how we can create attestations as part and attach them into your OCI image using, you know, six stores cosine. And once these attestations are published, we'll look at how to verify them using Kivarno. All right, so I'm gonna switch into my console and what we'll look at here, let me clear the screen. And I have a cluster with Kivarno installed. So if I do get namespace, I see Kivarno is already in here. This is my local mini cube. So let's say if I do get deploy in the Kivarno namespace. So actually let's just check the logs for Kivarno. What this will do, I don't need the W here. So I see Kivarno is up and running and the logs, everything looks okay. If I do get cluster policy, at this point, I don't have any cluster policies. C-Poll is a short for cluster policy. So I don't have any installed so it returns no resources found. All right, so before we do anything else with Kivarno, the first thing we wanna do is actually sign of an image. So if I do Docker images, I have a Tomcat demo image that I created. It's a Java Tomcat image. And I've just recently built this image, as you can see. And what we're gonna do is I've already published this event into my registry, but what I want to do now is also to be able to check for or attach an attestation into this image. So if I go into my repo and if I look at versions, I see that V1 has been published. And what we'll do is we'll create an attestation for that V1 image. So in this repo itself, I also have a scan.json, which I produced using Trivi. So the command I ran for that was just simply to produce that Trivi, but I produced a scan using Trivi, but I did that in JSON format. So if you look at the file over here, just in memory, this is what, or in my editor, this is what it looks like. And through Trivi, I was able to produce the scan report. And as you can see, it has lots of information on different vulnerabilities, et cetera, which we want to now create an attestation using. So to do that, I'm gonna use cosine and we'll use the cosine command. So cosine can sign container images itself, but it can also sign attestations. So instead of the cosine sign command, which I would use to sign in container image, what I'm gonna use is cosine attest. And to that attest, I'm gonna pass in the image that I want to create the attestation for. I'm gonna use a public key to sign that attestation and I had previously generated public private key pair using cosine itself. And the predicate I'm gonna provide is the scan.json file we looked at. And with the type, so the statement, the predicate type I want to use is, and this could be any string, but I chose to just say triviaquasac.com scan v2. And what I'm gonna do is if there's an existing predicate with the same type in our existing attestation, we will replace it. So with that, when I'm signing it, it's gonna ask me for my private key. It's gonna use that payload and cosine should then have attached that into my OCI registry. So if we go back here and we look at v1 and I refresh, what I'm expecting to see now is an attestation was just created and pushed into my OCI registry, which is associated with the hash, the digest of that image itself. So at this point, we have an attestation for the image. And what I wanna do now is verify that attestation using a policy, right? So I'm gonna use this Paul Kivano policy, which I have, and this Kivano policy is using a public key to check whenever there's an image which matches this pattern. So if it matches the name demo Java Tomcat, it's coming from this GitHub container registry. If it matches that pattern, it's gonna check that it has an attestation signed using this public key. And then also it's gonna match within that attestation that the predicate type matches what we expect, which is triviaquasect.com scan v2. And also that attestation, it's gonna parse to JSON, make sure that the scanner URI matches. So if we go back to the scan dot JSON, we see over here, there's a scanner, there's a URI, which tells us which version of trivia produced that. And it's gonna also further check, this is using a James Path expression, but then my Kivano policy to parse the results and check for vulnerabilities and to make sure that there's no vulnerabilities with a score greater than eight. So if we run this command, and the nice thing about this format is it's very easy to test this also on the command line. So if I kind of just do this, run this command and check for the exact same expression that I had in my Kivano policy, I can check over here and let's change this to eight. What I'm expecting is it's showing me that there's no vulnerabilities, which are higher than eight. If we switch to seven or something else, let's say if we switch to six, I see that there's two vulnerabilities with medium scores, which are reported as part of my image itself. So let's apply that policy. So I'll do kubectl apply, and we wanna do check, I think it's local attestations.yaml. Okay, so now if I do kubectl get cpol again for cluster policy, I see I have one at a cluster policy. And now if we do, if we try to run our Tomcat image, we will do v1 is the one we wanted to match. And I'm just gonna drive on it. So we'll see if that is accepted or not. So at this point, that image got accepted because it has the matching attestation. And just to prove that this, if the attestation doesn't exist, what we can go is we can go and delete that attestation from the registry, right? So I'm just gonna go ahead and delete this and let's see what happens if the attestation doesn't exist. So I still have my v1 image, which I can pull and check, but if the attestation doesn't exist, I would expect the policy in this case to fail and say, hey, there's a problem here. You can't run this image. As it says, you're no matching attestations, right? So that works. And it's fairly easy as you saw to be able to sign it with Cosine just using public-private keys and to verify it. However, if we were to try and achieve, again, a higher level of salsa compliance with this, like as we were discussing with salsa level three, the requirement there is that your attestation cannot be tampered with or cannot be falsified, right? So in this case, the problem with just using a public key and not checking any provenance data is that anybody who gets a hold of this public key could potentially try and falsify this data. And keys, of course, are difficult to manage. They need to be shared and secured themselves, which creates another set of problems. So this certainly is far from ideal. It's a good starting point, but what we want to do is we want to create and sign these attestations in a manner which is non-falsifiable and which cannot be easily tampered with, either inadvertently or even by, sometimes by whether it may not have to be a malicious actor, could be a trusted user who's just trying to figure out a way to work around some policies or compliance checks. So how can we do that, right? So instead of signing with the public key, what we can now do is we can start, we can use the keyless approach or what cosine and six store calls the keyless approach to signing. In this case, we are going to use full CO to generate a temporary ID or a temporary certificate of which will then be used to sign. And then we're going to use the identifier embedded and some data embedded in that certificate to verify. So let's take a look actually at a policy first, and then we'll take a look at how to build this with using GitHub actions as our trusted builders and in our build environment. So in this case, if you're using keyless instead of a public key as a tester, in my Kivarno policy, I have a keyless attester. And here, what we're going to do is we're going to, for my keyless attester, I'm going to make sure that it's the subject of the certificate is a workflow that I know. And the issuer is actually GitHub because this is that the certificate is received using GitHub's OIDC. In addition to that, there's several other things that we want to check in the certificate. We want to make sure that the trigger for creating was actually a GitHub push. We can also check the workflow Shah ID. So in this case, I'm going to check not just the name of the workflow, which is in the subject, but the SHA ID. Now, one thing with GitHub itself is you can have reusable workflows. So your workflow may be in a different repository from where it's being executed. So it's very important to actually verify the workflow SHA ID for off the one, the reusable workflow that you're executing and not just the where the workflow, the repo in which the workflow was executed. So here you can also check the actual name of the reusable workflow and the repo that it came from which all of this can be now authenticated or part of the authentication step to make sure that the right trusted builder in the right environment has created the attestation we want. So to do all of this, we can create a GitHub workflow and this sample GitHub workflow that I have has four steps. It builds the image, it scans the image. So then generates an S-bomb and also then creates the attestations using cosine and attaches them to the OCI registry. So building the image is a fairly standard and straightforward step. So here you would use your Docker builder or any other image builder you wish. Scanning the image in this case, I'm using Trivi. And as you can see here, we're using a Trivi GitHub action and it's producing the image scan which we're saving as a file called scan.json. The next step after that would be to create the S-bomb. And for that I'm using, in this case, GRIP, which is, or we're actually using SIFT from Encore to create the S-bomb. GRIP is a vulnerability scanner from Encore but we'll use because we're using a different scanner, here we're using SIFT for the S-bomb itself and we're saving that in Cyclone DX format and also which can also then be created or used to create an attestation. And then in the final step, what we're gonna do is we're gonna take all of these inputs, the provenance data that was created as part of the container build itself. We're gonna take the S-bomb and the scan report and we're gonna assign them using cosine and publish all of this into our OCI registry where we have attached our image. So if you kind of look at all of this and in GitHub workflow itself, if we see the registry here and a guy go to the build that I ran, so the build takes a few minutes to run, so I'm not gonna do that or rerun it again. But if I check all of these steps, what happened is first to build the image which also creates the provenance file and this to do that build, create the provenance file, what we're doing is we're using a salsa framework GitHub action. This is a sample action. And once that provenance file is created, we can attach it to the image as you can see over here. And then also from the scan as well as the creation of the S-bomb, similarly we're attaching these files. And then finally in the last step, we're creating attestations using cosine like we saw. So that's how this pipeline would execute. And the nice thing is when the pipeline executes, one of the important steps over here is to get an identifier for the GitHub builder itself. So all of this, the way it's happening is because we're using OIDC tokens, GitHub, the builder is getting a trusted ID and that token is what's integrated with now the six store tools to be able to generate a temporary certificate which embeds the information that we want for the builder as well as some of these other pieces of metadata which tells us which we can then verify when we're trying to prove that these attestations were actually created in a trusted environment and were not tampered with or non-falsified as per the salsa requirements. So given that, let's take a look at, let's apply a different policy and see what happens, right? So I'm gonna delete this policy and we'll install the other policy which can verify the image which was produced as part of that pipeline itself. So I'll apply, in this case, we want just attestations and this is the key list verifier as we saw. And now if I do kubectl run and if I do, just as a test, if I do v1, this should not pass because it was signed using the public key, but if we go ahead and then also check using, so this as expected, it says no matching attestations because it couldn't find, for this image, any attestations signed using the GitHub, the key list identifier that we wanted. So now if we run this for the actual version produced by the pipeline, what we expect to see is that this policy will allow that image to run because it has all of the right information in it. In this last section, I'm gonna talk about VEX or Vulnerability Exploitability Exchange. So we all know that vulnerabilities are hard to manage at scale, even or even for small projects, right? Scanners typically produce too much noise and any static analysis tool can't really determine if a vulnerability actually applies to a component or an image or if some features of that what's being reported are being used and not used. And of course, upgrading to the latest version is costly, it's time consuming, and may not even always be possible. So VEX attempts to solve these problems. What VEX is, it's a draft spec as part of the OSE CSAP for the Common Security Advisory Framework 2.0 and it basically allows a software supplier or some other party knowledgeable in that software to assert the status of vulnerabilities in that particular product. So VEX documents are meant to be machine readable, they're dynamic and expected to change as information becomes available about vulnerabilities and as more information may be attached to a CVE or to a vulnerability report. VEX documents work really well with S-bombs or software builder materials, as well as CVEs which are produced or reported in scan reports. So a typical VEX document contains product information, it will contain a CVE or an ID, it will contain status which the party providing the report can supply, this could be not affected, affected, fixed or under investigation. And based on the status, there's details on the threat or the mitigation and if the vulnerability isn't not affected, for example, there can be details to provide why that vulnerability does not apply in that particular situation or to that component. And if there's mitigation steps like certain configuration, those can be provided as well. And then finally, there's a note section which is this free form text for additional details. So what this allows us to do is now putting together VEX as well as attestations, we can imagine a workflow where whenever there's a new vulnerability reported, the product team can either analyze the vulnerability and say, yes, this is relevant and provide a fix which could contain updates or other information or they can publish a VEX document as an attestation which can be verified by the receiver and to make sure that the attestation is produced by a trusted entity and that particular vulnerability can then be allowed. So all of this can with attestations and what we were looking at before in the demo can now be then be automated and can be checked as part of a secure software supply chain. So this really can be a potential game changer for managing vulnerabilities within enterprises and also across enterprises, which is why a lot of folks are very excited about VEX and what that means to securing software supply chain. All right, so to summarize what we've gone through, certainly signing images, verifying images as you're deploying them into your clusters is a fantastic start for security but attestations provide a lot of additional data which is required for a higher level of compliance like salsa level three. What we looked at is using cosine from six store to sign and attach attestations to OCI images and then Kivarno to verify these attestations through policies which can be run as admission control checks or even as background scans. And finally, we briefly talked about VEX which solves several major issues with the whole vulnerability management workflows we're used to today and it fits very well into attestations and being able to deliver VEX documents as attestations as part of OCI images. Thank you.