Hello and welcome back to the craft box. My name is Brent and today we are on episode 295 of the death walkthrough last time If you haven't checked it out already. We defeated the copycat We got a cool badge and that was fun today. We are hitting into the candy password No entry that sounds like a place that does not ask for passwords. Perhaps you should go there. Yeah Um, right that is our friend more worth I can a hundred percent guarantee. That's what those explosions are all the time Makes sense. I bet he's in here. Um, yeah gluten shop. That's where we're actually starting We're not going to the candy bar.  Did I or did I remix it with the musicology? remixed remix shop. I will remix your face Not making this a funny happy smile Right to these are both death. This is great I'm gonna be back there just mobs watch my golem which were for a million times and a shopkeeper Which I'm assuming probably not gonna be too big of a deal. So yeah I'll be back in just a little bit. Right. I am back. Hopefully this is killing.  It's so so unfortunate. We're gonna try again.    You know the same round is like prison You know, it's cool.  What is this? But hey, we got him with the scarecrows. So it's fine Thank you. Thank you now. Let us make with the haste and escape Yes, make with the haste and escape sounds good sounds very very good Then the turn Melworth hello many dunkers again visit my aren't you getting around all lickety-splickety like Oh, that was a simple musical logical misunderstanding I hear so you have met the copycat sounds like she did not attack the old one either So if we eliminate her wouldn't quick drama that leaves only judge Vege as our suspect He does hate the sweets and manipulates dirt So maybe we still have the witches to consider for the sour gummies. You think they are here in a candy bar Glorious, there are no gummies here. This is all factory work.  Oh, we're just gone and apparently we don't even need to ask for the password What were you expecting some sort of secret meeting? Why just because we are selective in our clientele You're being most paranoid. I think curses That was Brutals pesky things dangerous too. So stay out of the back room. Do not go in there That means we're going right in there look at this copied Tevin from pirate amazing love to see it. Good job Kings. I'll again Let's leave this is no way to work. You are gnomes craftsman You should be molding your own treats stretching your own teffy, but you languish at conveyor beds Forsting cupcakes fretting over quotas and tiring for the happiness initiative. Tell me. Are you happy?  What do you all say to that? Wunderbar curses upon Nana and curses upon the customers like that one there make them the example drive them from caramel curse them Yikes, right. Let's defeat this man's real quick He's an elite so we're gonna do him because that is the rule now We we fight elites because there's not many bosses, but there are elites. That's for sure So we're gonna count elites just like bosses Right blade. They're not too bad. Where can I click properly? Maybe no, okay? Then we do boost on him as long as he doesn't shield, but she could probably do Knowing him his balance could pop out that spirit shield boom be ups. Hello death shield nice to see you Luckily, it's only minus 50 unless it's like bolstered, but I doubt they have that if they had that that would be pretty crazy Pretty crazy imagine that Wow I wouldn't know what to say to that. That's just a Scary to think about we just hope that they don't do that. Hopefully not Right we can probably hit we hit I mean We're gonna do it we have a boost so maybe we can kill maybe we can kill we'll see We may have to follow up with the ship of fools or something It'll be interesting to see but I think we boost on all of them because they are all none He's myth so we don't boost on him, but we boost on the first two, which is cool Boost on the first to the last one should probably die. He does have a shield now, which is unfortunate at least it's not a Thing it's what minus 35 25 35. I was right. Wow. I should really just know in fact I do just know I'm just so smart so smarticles the just smarticle list of particles Ever um, but hopefully this kills we will say please please please kill kill Yeah, nice GG Even more he does not have a lot of block that means does not have block at all block non-existent. That's that's my bit Did he die?  Okie-dokie. Let's talk to Greta and see what she says about this situation that we have just done Bet she's not gonna be happy, but that's slight spoilers for five seconds away.  Where have you been? I was getting worried you did what? Why would you fight a witch named Gerhardt? I mean, I guess he was always a bit extreme not like not like the rest of us Yes, I am a witch. Witches have been with you all along and for not what you think even our name you have wrong Greta's a witch. Wow. I didn't see this one coming In fact, when you play through a second time, it all makes sense It all makes sense what she was saying all along We're part of the group which which stands for workers interested in tackling corporate hegemony We don't curse caramel we empower it basically the Union I told you Nana is the villain behind everything She made our simple lifestyle into a spiral sized monsters that eats us like caramel delights The witches gather evidence of this of what Nana is doing to caramel's people.  We want to solve the problems Nana caused that means fixing this our gummies the happiness initiative and Securities so talk to the security chief convince him to release Gerhardt Hmm, I don't know if that's possible Don't know if he's gonna be too happy with me just popping in saying hey actually, you know that guy you just arrested Yeah, we need to not arrest him. It was a mistake. He's not actually a witch or something along those lines Yikes, don't think this is gonna go down too well at all No, no, I don't think I'll be letting the witch with the curse voice go. Thanks for asking though Told ya. Yes. Yes. I've heard the propaganda the witches aren't making people sad. They're making us understand We're already sad Nana told us that's just course talk. Nobody is sad in caramel But I get it sometimes I myself hate the smell of cupcakes and I wonder no no That's course talk must resist the witch must resist the witch you should leave lest he be witch you too Hmm that did not work greater any other plans We can't simply just you know talk to the sheriff and let the witch go Because apparently that's not how it works here. Just not possible. I guess but I guess that's caramel for you Just not possible. He did not listen Nana's propaganda is stronger since a stink of treacle Okay, new plan. We will need two things a key and mal worth We obviously have to find a cell key to let Gerhardt out of his cage The watch a mcgallum security units should have an attachment for that We will also have to cause a distraction to get the security chief out of the station So we can sneak in without fighting him. That is where mal worth's musicology comes in ask him to cause a scene and battle virtual mcgallums for their key attachment Right, let's talk to a mal worth this quest is called the gluten escape pretty cool question Pretty pretty cool quick question, you know I would love to host an impromptu concert outside the security station I even have a new Trump boom I have been just dying to try from boom But Greta she does not kekel like the beach. Oh well. It is nice to know. They are not responsible for all the sour Spooned from what I have heard about Nana since I returned I have every reason to believe your gloom-faced friend is right. I recommend you assist her Good job mal worth you you do that, right? Let's um defeat these guys and I'll be back in just a little bit with a key Right, maybe this time we can defeat these guys and get a key I have already had one battle and they did not drop a key. This is so sad But maybe this time they'll be like hey you want a key. I got a key. Give it to me. Maybe Who knows hopefully hopefully one of these two will be like yes, you can have my key please Yeah, we got the key nice Nice nice nice right. Let's talk to Greta. Lovely. Lovely. Lovely. Oh Candy scrapper. We got a badge. What is it? It's candy striker nice You took care of everything wunderbar. Let us go save Gerhardt The plan is simple go into the station and shut up the security chief I will tell mal worth to do his thing and when the security chief runs outside to investigate You open the jail cell and free Gerhardt. Good. Good. Go Right good. Good. Go. Let's just go level up.  I'll be right back Yikes, he is not happy. He is very mad You know, I am getting the mixed signals from you. You put me here.  You best pick your side and stick to it in my defense The instrument had a lot less trauma and a lot more boom than I was expecting next time I will be sure to use less fizzle pebbles Trum and boom, that's right boy. Oh because next time you Where's me prisoner for the love it did you steal a key from the golems and free the witch? Yep, I sure did yes, of course all the course talk is bunk I know that you think I'm blind. I take some small offense with it I see how the gummy worms turning but Nana's everywhere on every world That's what the happiness initiative is Expansion at any cost Nana's too big. We can't change it. We can't quit it if we try wait What's that fanfare? No, no, they can't be here. Oh There's a fanfare that sounds very bad Things are about to start heating up I can tell you that halfway through the world and things just rock it to 100 really quickly and This is one of the instances of rocketing to 100 really quickly with Nana and some golems Not golems goblers attention, please Nana's old-fashioned corporate headquarters has become aware the city is not meeting hourly projections Specifically dear this last hour you are very below quota if making cupcakes is too hard for you They can always move the factory. Wait wait Nana. That isn't necessary There was a temporary disruption, but we found the cause these two the wizard and the mall Oh, I do believe we are being skip-goated wizard No one wants to blame Problems why don't all see if you come to Nana's regional office and they can source this silly mess out Right, it sounds like we might sort out the silly miss Next time I'm so thank you for watching remember to leave a like and subscribe if you subscribe press the little bell So you know exactly when I post another video and remember to craft outside the box


You shouldn't believe me a single word, you shouldn't believe me a single word, you shouldn't believe me a single word. There's no way out. KS, caused by nitrites. AIDS started partly when they said that it's possible to measure the strength of the immune system, analyzing or counting T4 cells, the so-to-set helper cells. But that's not possible. The idea of retroviruses in cancer is long over. We know what is reverse transcription. That's the repair of a mechanism of the ends of the chromosomes. You don't find a single biopsy-confirmed PCP in hemophiliacs because it's sub-trim, it's pure chemotherapy, it acts on a genetic level. This is why those kind of antibiotic car are so effective because they are destroying the genetic material of the bacteria. The damages are accumulating and there is no repair. But the damages are accumulating inside our cells as well. KMIL is a PCR technique, which is a multiplication technique, not a quantification technique, by the way.  We don't need viruses to explain hepatitis inflammation. It was very easy for the ones who set up antibody tests to produce similar proteins like the body would produce under persistent stress. It has been known already in the mid-70s by Antoni Fauci, by the way. They knew when stress hormones are released, the immune functions are immediately suppressed because when we are under stress and we have to run away because the line is behind us, we need no immune functions and waste energy for the replication of immune cells. But the dangerous thing is when we have persistent stress, heavy stress, not like outside the streets, but heavy stress, be it nutritional, be it toxic, be it traumatic, psychological or infectious stress, if this stress is persistent, your body produces a lot of stress hormones, adrenaline, no adrenaline, and they would activate, they stimulate growth, but this is very dangerous when this persists, so the body wisely makes a reaction against these activation processes and that's cortisol. And cortisol suppresses every replication of proteins and therefore as well the replication of cells. So if you are in a state of persistent stress, you are at the same time in a state of persistent hyper-cortisolism, a huge amount of cortisolism, and then you become thinner and thinner and your regeneration won't work and you become more and more positive, means more and more antibodies. You shouldn't believe me, single word.


So, the final talk of this session on hardware implementation is from Lauren De Maier, Ami Moradi and Felix Weegner, and Felix has given their talk. It's called Spin Me Right Round, Rotational Symmetry for FPGA-Specific AES. Yeah, thank you for the kind introduction. So FPGA-Specific, what does that mean? Let's start with mapping a Boolean function to an ASIC. What you would usually consider is how does it look like in the terms of gates, the gates have a specific function and they have very few inputs. Now, for FPGA devices, it's a completely different story. What you have here is lookup tables, specifically in the Xilin 6 and 7 series we looked at, you have loot 6 tables. That means an arbitrary Boolean function that depends on 6 input bits and one output bit can just be represented in one loot. So if you try to do area optimization on that, of course you have to think about very different things. Yeah, you have to break down your function in that component and it's very much important on how many input bits something depends. It does not matter that much what the algebraic degree is, for example, or the multiplicative complexity of something.  You should most definitely always use the 6 input bits if you can to hide a complex function in a lookup table. Now going to more complex blocks and FPGA is further structured into slices. And the slice contains 4 loot 6 elements and some additional multiplexers. Also some registers, though I chose not to illustrate them here because I want to get one very crucial point across on this slide. And this is that you can think about one slice as a bigger lookup table that depends on 8 bits. So basically just keep in mind for the rest of the talk, with only one slice, you can realize an arbitrary Boolean function that depends on 8 input bits and has one output bit. So enough of the basics, now let's apply that. We are looking at the AESS box. So to recall, but you already saw it in a previous talk, we're thinking about the inversion in a finite field here. And we can also represent it as a power map with the exponent 254. Now, and next, there's also an affine function. But please just disregard that for now because we can just easily integrate that somewhere in our hardware structure. I will also show you where exactly we do that. So let's just think about the power map itself as the AESS box. Now we want to realize that in an FPGA device. How are we going to do that? Now the naive idea would be to just take each of the 8 output components because you map 8 bits to 8 bits in a separate slice. Of course, that is rather naive. You can directly implement that in a few minutes. Maybe there's a more elaborate approach. So if you look at the algebraic degree, it's very, very high. So it's not really clear how to do that. If you look at approaches we already know, for example, the can write S box to just represent it in a tower field based on normal basis. It doesn't really suit the structure of an FPGA for a reason I told you on the first slide, because then you just waste input bits. In a load 6, you should have a function depending on 6 bits. But in a tower field, you have a function depending on 4 bits or on 2 bits depending on how deep you go in the tower field. So none of that really works. And so far, most implementations just use the naive implementation of it. Now our contribution here in this talk is how to reduce that by 50% from 8 slices to only 4 slices. Now how are we going to do that? We need some help from the theory perspective. So one notation first. So first of all, we consider the inversion represented as a power map. We will have a conversion function to the normal base. The normal base is just a different base similar to the polynomial base having different kind of properties. And we need the rotation of bits. So you can think of the simple rotation in a register, just a usual rotate. And yeah, with those terms, we can borrow a theorem from Reimann et al. stating that if you have a power map and you represent it in the normal base, you call this new function s. And this function has a certain property. And this property is called rotational symmetry. It means if you rotate the input bits through, the output bits are also rotated through. And I will now show you how to use that for hardware implementation. So let's first illustrate that a bit further. Let's consider this s star is just realizing one component of the s box we target. We have all the input bits. And now we rotate the input bits through. By one position, we get the next output bit. By another position and the next output bit. We can do that all the way to get all the output bits. Now, we gained quite a lot from this because we only realized the LSB of this s box in a circuit and not all eight coordinates separately. So now let's look at the real circuit, how to realize that in hardware. So our ASS box proposal takes a byte. And first, it converts that from the standard polynomial base to the normal base. Then it is in one rotational register. And the function s star is evaluated on it in each cycle. And the result is always shifted into a second register where this is buffered until it is complete. And then it is converted back from the normal base to the polynomial base. And if by now you're still worried about where the affine function is, the affine function can be hidden here in the N2P conversion. This is a linear function by itself. So you can easily integrate the affine part of the ASS box into that. And we actually found a normal base to realize this whole construction in only eight cycles and in only four slices. So this is only an s box. So what we now want to do is, of course, have the full ASS and show that this is actually worthwhile to use it. What we do is we look at the former record by Zastrich Hedal. They managed to implement ASS on a Xilinx Spartan 6 in only 21 slices. So they used some interesting points. For example, to represent the key and the state, they used distributed RAM. They used a very unconventional way to compute mixed columns so they can reduce the memory footprint. And this is all really good. And there is a huge reduction in the number of slices. The only problem is they use the naive s box, which is good for us in that sense because we can just replace it with our s box. And the reduction I just showed just translates to the whole design. So due to the reduced s box, we get a total design here. That is minimal in the number of slices with only 17 slices. OK, so next I want to present another design because maybe it is also worthwhile to not just start with an FPGA design, but maybe start with the smallest ASIC design, port it to FPGAs, and then apply our rotational symmetry. So as you may remember from last year's chess, this is the bit sliding design presented there. And what we're now going to do is look at the components and I will tell you how to optimize them for FPGA implementations. The first thing you should have a look at is the s box. So it uses only a one bit data path. So we use an 8 bit data path. So we have to slightly adapt that. OK, so in our fully bit serial s box, it's only slightly different. So the main difference is that the x is shifted in bit serially and is first buffered in a register. And after all the bits are there, the transformation to the normal base happens, writes it back into the register, and then it starts, as you already know, that the s star is valuated cycle-wise on it. It's written to the other register and converted back. So unsurprisingly, this has, of course, a higher latency. So we need 16 cycles here because we need 8 bit, 8 cycles to shift the operand in. But again, here we found a normal base that is very suitable for area minimizations. And with that, we can actually realize it in four slices. Now, the other part of the design is both the state and the mixed columns. Most interesting is the state, which is here separated in 8 bit chunks using scan flip flops. And we do not have those things on FPGA devices. So we have to somehow solve that differently. And what we chose to do is instead represent the state in 32 bit registers. But not naively, but we used a lookup table as a 32 bit shift register. This, of course, allows us to realize that in a really, really minimal space of only one slice. But the latency is, of course, increased because now the shift rows has to actually shift through the entire 32 bits. The other thing is the mixed columns operation, which due to some optimizations we did, also fits very neatly in only six lookup tables and four flip flops. Now, if you take everything I just said together and you receive an optimized design, which is also area optimal, but here not in the terms of slices, but in the terms of lookup tables. So this is the first comparison in this talk. The first row shows the former record by Sastry Hedal. And then you can see on the second row our design optimized for the number of slices. 17 slices. And on row three, our design was the minimal number of lookup tables. In terms of clock cycles, of course, the latency is increased. But this is not exactly about an area latency trade-off. It is just about providing a new area record for FPGA devices. Now let's go further and talk about side channel protection, because it's nice to have a small unprotected design, but it would be even nicer to have a protected, really small design. So we actually are going to continue the last design I presented, the bit sliding design. And we need some more mathematics here. So first of all, you still remember that we considered a power function. And we're going to decompose this power function now into two separate power functions. The exponents are 26 and 49. This was first suggested by Moradi. And we are now, because we still have power functions, this is not just some arbitrary decomposition into bijective functions, but it's very important to still harness the power map properties. So we can still apply the theorem by Reimann et al, you saw before, and just apply it individually to both parts of this decomposition. And this allows us to now mask functions of lower degree, because masking the inversion in one step with algebraic degree 7 is very, very difficult. You would need a lot of output shares. But now just masking two cubic functions requires fewer output shares. So if we are going for first order security here and you know the consolidated masking scheme, then you know that we need two input shares. And the minimal number of output shares we can achieve is 8, but it is not really guaranteed. And there's also not really a constructive way to find it. There are some suggestions, but what we did is we developed a completely new heuristic to do that. And very important in our heuristic is that we actually separate the function. So instead of sharing one cubic function in one go, we split it into parts, and for each part, it is guaranteed that the minimal bound holds, so that each of those parts can be shared with actually the minimum number of 8 output shares. If you want to know how it works, please look in the paper, because I don't think I will find the time here to explain it. But what we're going to do is we're going to look at the end result this heuristic produces. Now this is a circuit for the function block f star g star. So what you can see here is that each of the functions, g and f, is split into three blocks. And you can see basically in each block the consolidated masking scheme to evaluate it. So you take in a shared representation, you also take in three bits of randomness each, making it 18 bits of randomness total. And then to prevent glitches, you store the 8 bits output each in a register, and then you compress it back to two shares. And yeah, this has quite nice area properties. One thing I really want you to notice here is the number of input bits. So you can see that 16 input bits, because two shares of 8 bits are provided in the start. But we only need 14 in each component. And this is a really crucial part of heuristic that really gives us a lot of reduction in area. So we basically find a split here such that each of the components it is split into does not depend on all variables. So of course, this is a huge area reduction if you think in terms of lookup tables where area means on how many variables does something depend. And with that, we can realize the function in 144 lookup tables. And now we're actually going to integrate that in the full S box. So you already saw the bit serial design earlier. So you already know we shift in bits first, we convert it with a P2N function, and then we have the correct representation in the upper register. The only difference now is that we're not going to do that only once, the evaluation of F star on it, but we're going to evaluate F star in eight cycles on it, put the result in the lower register, write it back in parallel, and then in the next eight cycles, we will evaluate the function G on it to have actually the final result stored in the register two, and then we convert it back and we have the actual end result. So in total, this S box has an area of 182 looks and a latency of 26 cycles. From a security perspective, I want you to know that it's really important here to protect against transitional leakage because the input of the F star G star block gets the same input variables just rotated. So it's very important to get a clearing register beforehand that clears on a negative clock edge to prevent any kind of leakage due to transitions between two clock cycles. Okay, if we put that then in the full bit sliding design with two shares, we of course want to evaluate that, and we did moments correlating DPA. I referred to the talk yesterday given by Thomas if you want to know why we did a moments correlating DPA instead of a T test, and we implemented it on a Sakura G board, and you can see at first the evaluation that our implementation is correct. So if we don't use randomness, it should leak with only a few traces. And if we then show you the whole evaluation, you see that there's no exploitable leakage in the first order with 10 million traces. But of course, in the second order, as this is only a first order secure design, you can see leakage. We briefly compare that to other state-of-the-art first order secure implementations, but I have to say that of course they did not target any FPGA specific improvements. They are only mapped to FPGAs starting from an ASIC design. So we can see that we have the smallest area regardless of the area metric you want to consider. So in terms of lookup tables, flip-flops or slices, we use a competitive amount of random bits per S-box evaluation. The only thing that is of course far higher here is the number of cycles it needs to be evaluated. Yeah, but again, we focused on area in this paper. So to summarize that briefly, I provided three designs. Two of them are area records of unprotected designs specific to FPGA. Another one is the smallest first order secure AES design in FPGA devices. There are more contributions we made, for example latency optimizations of the original paper by Zastrich et al. And we also provided a new heuristic how to find a consolidated masking scheme or sharing with D plus one shares and you can find them in the paper. Thank you very much. Thank you for the talk. We have time for plenty of questions. Exceptive, take mine. So I have a question. Like you are using normal basis. So did you consider like fault tolerance because it probably comes with some inherent fault tolerance? So did you consider like protections against fault attacks? Not yet, but that seems to be an interesting idea for follow-up work. Thank you. So for that decomposition, are you aware of any decomposition works with only quadratic permutations rather than cubic permutations? Do you mean for power functions? Yes, yes. Is it possible like to do only? It's provably not possible. So it's impossible? Yes. Okay, thank you. So just to clarify, that statement only holds for power maps. In general, it might be possible to find bijections that are quadratic, but again, they will not be power maps. Other questions? I have a final question then. Are you planning to also do higher order protection what's the future work for this? I mean the general scheme we provide is applicable to D-shares, so you can easily use our heuristic also for higher order countermeasures. More specifically about this design, you could also try to fix the higher order just with some noise generations and there are no methods for that. All right, and let's thank all three speakers of the session again and enjoy the coffee break. Thank you.


Abstract immunotherapy is an attractive treatment strategy for cancer, but it needs to be improved. A new nanopotentiator has been developed that can combine chemodynamic therapy, CDT, and sonodynamic therapy, SDT. It works by blocking adenosine metabolism, generating reactive oxygen species, ROS, and triggering immunogenic cell death, ICD, and sting-mediated signaling pathways. This combination of treatments leads to more effective immunotherapy, resulting in better tumor control. This article was authored by Mei Xiaoshan, Fuxua Wang, Yao Lu, and others.


jury rigged up here so anyways I'm Dan Burroughs just a little bit about myself I'm a professor at the University of Central Florida in the engineering technology department specifically I work in the information systems technology program which is a it's a very applied approach to engineering and specifically information technology systems we're currently at the University of Central Florida developing a undergraduate security program that I'm also I'm the one that's mainly involved in developing that and that's actually what my second talk a little bit later is on today but this is the more maybe more interesting more technical one my past research includes the correlation of distributed distributed network sensors if you have a if you on a net we have a large-scale network you have intrusion detection systems you have firewalls you have other things that are recording information saying what's going on on the network trying to correlate that information together to bring it all together and trying to see the big picture of what's going on rather than getting these little kind of half views of what's really occurring out on the network and also I'm working on some projects and involve combined data sharing networks for law enforcement in the state of Florida you know this little blurb at about the University Central Florida it's down in Orlando Florida it's about we've got about 42,000 students there about 5500 of which are in engineering we're located about 13 miles east of Orlando Florida as I said the information system technology program this is a really innocent applied engineering degree it's very hands-on very real-world very current tools not so much the traditional theoretical approach to engineering heavy concentration of hands-on learning in the program a little bit about the a little bit about the background of what led me to this current idea is there is a previous research that I worked on I give a couple presentations back at DEF CON 9 and 10 and this was on using Bayesian multiple hypothesis to try and analyze reports from these distributed intrusion detection systems and other types of network sensors with the idea of trying to determine if what you were seeing were correlated events if this was a an initial attack and a follow-up or if the two events you were seeing in two different places might be two systems communicating who shouldn't be communicating together and to try and use multiple sensors to distribute over large distributed networks to try and do this the basic idea behind what I was doing with that was taking target tracking methods that came out of actually out of radar target tracking systems trying to track real objects in the sky with various radar systems and taking that same approach and treating our all of our sensors that we have on our network whether it's an IDS a firewall a router even a human sat there making observations about what's going on and trying to automate the correlation of that together and this was intended to totally throw the human analyst out of the loop but just to kind of act as a sort of a first level filtering system to throw away a lot of the not a lot of the information that you don't need in order to come to a conclusion about what's going on with the idea that we were going to kind of move this more towards a point of view instead of looking at this one section of the network or this one part of what was going on that's visible to this one sensor like you know you've got your firewall sat at the so you got a sat at the border of your network it sees everything that's coming in and out of the border but it doesn't see stuff that's entirely internal to the network you might have an intrusion detection system sat on one segment of the network that sees what's going on there but it doesn't see what's going on on another segment of the network and to take all these little pictures of pieces of information and to put them together to get a more complete view of what someone was doing while they were attacking the the network and did this through using radar tracking algorithm specifically Bayesian multiple hypothesis tracking and making an analogy to the world of computer security where our firewalls are ideas are humans looking at what's going on the network anything that records information is a sensor that's like a radar system the actions that the person out there trying to break into the network are doing that's the target and that's the trace they leave behind we're trying to put these traces to together and we're working in a situation where we've got to do this in real time we've got incomplete data we've got inaccurate data potentially about what's going on depending on how your sensors are operating just just a little bit more about the system the the idea how this works this idea of this multiple hypothesis tracking is as events occur on the network as an event is when a sensor recognizes that something's occurring when something actually pops up on the sensor when it gives a report when you've got an IDS it tells you hey I think I see something when you've got a firewall that decides it's not going to allow this packet or it sees something unusual when you've got your sysadmin on your network saying hey you know something weird's going on here as these events arrive they're analyzed and say for example we're sat there and one of our system sees a port scan happening out there we build a hypothesis about what we think's going on in this case if we've got a single scan coming in from the outside world hey you know that's all the information we have that's the only hypothesis we can come to is that's what's going on we're seeing a port scan right now really I guess actually technically you can make two hypotheses at this point you can say hey there's a port scan going on or alternatively my IDS isn't working properly and this is a false positive then as other events occur say you see a buffer overflow attacked against a machine following that well what could be going on now we could make the assumption that the port scan is being followed up by a buffer overflow someone scanned a machine for a vulnerability then they attacked that particular vulnerability on it or potentially these could be two unrelated events that the port scan could be part of one attack the buffer overflow could be part of a different attack on the system and what we were trying to do with this system was trying to automate the process of figuring these out now this is a this is a simple example this is a pretty trivial case I mean in this particular case if the port scan is a scan against you know I don't know against port 80 and the buffer overflow is a buffer overflow against an IIS server chances are those two things are related if they're not if the port scan doesn't match up with what the buffer overflow was chances are they're not related but you can extrapolate from this idea into much more complicated systems and much more complicated series of events of trying to piece together the pieces and figure out whether or not all of these events and all of these things that we see occurring across the network are related together are they not related together are they likely to be something real are they likely to be a false positive caused by a imperfect sensor or imperfect ideas or firewall or or human in the loop actually one of when I was working on this one of the most interesting sources of data that I had to work with came from the capture the flag games here at DEF CON luckily the shmoo group captures all of that data that goes on during the capture the flag game to capture all that network traffic and that provided a great playground to to work in to try and see if that information could be correlated together and this little graph I got up here I mean this is kind of just pulled right out of context these are some slides I grabbed just to give a bit of background about the previous research in this basically what this was showing is as you let the number of hypotheses that you consider increase in that previous example I said excuse me I said that we had the two hypotheses either these two events are unrelated or these two events are part of a chain of a single attack well we let those we we say these are our two hypotheses and then we look at the evidence that's going on and we evaluate them and we find out which hypotheses we think is currently the best one we have available then we wait for more information to come in we'll have a certain confidence level and how confident do we believe that in this hypothesis as more information comes in we'll build more hypotheses and will we reevaluate the likelihood of our existing hypotheses eventually in the at least in theory this will eventually converge to a point where one hypothesis is clearly the winning hypothesis now the problem with I said that's in theory the problem with that is you have to consider every possible hypotheses in order to do that and the number of hypotheses grows at a super exponential rate so it's practically impossible to do that there's a lot of work on the pruning of of them deciding which ones you want to keep which ones you want to throw away and what this graph is just showing here was along the bottom is a number of hypotheses that were allowed to remain in the system going from well at the bottom one all the way up to a thousand and the accuracy of how well it correlated the different attacks together and it never quite got up to a hundred percent but it got up into about ninety three ninety four percent accuracy on the capture the flag data being able to piece together what were related attacks and now of course this was actually correlated against the baseline was done by hand taking we I am a few others that help me took the data over the the capture the flag game over about a I think it was about an eight hour period and by hand figured out what was related information what were related attacks and then built the system that could do to automate that process so this thing it worked this is a pretty decent idea it worked it didn't necessarily work as well as we had hoped initially if you've got everything on a same network or related network where you're likely to see lots of related events it works well if you've got this distributed over large networks where you're likely to see many more unrelated events than related events it goes the accuracy goes down a bit or at least the amount of work you have to do to get good accuracy goes way up it is more accurate this more accurate so that's what it done in the past and this got me thinking about so this was a system that it developed to try and detect related information on a network and then of course you know once you can do that you always think about the next step and once the next step once you can detect something you figure out how to hide it even better right you know it's always kind of that one upmanship game they were playing so you got me thinking how do we defeat a system that works like that how could you avoid detection on a network that was well observed well monitored and where the information was well correlated where you couldn't rely on the guy sat over on this part of the network not knowing what the guy sat over on this other part of the network was doing or seeing or knew about what was going on if you assume that there was complete coverage of the network how could you hide what was going on there and I'm not this is I'm not talking about so much the detection of a specific attack like someone does a buffer overflow against a web server they do you know whatever other type of initial attack to gain access to the system but assuming they're already on there they've got onto the system and they want to keep communicating back and forth you they've got their remote machine they're sat at they've got access to machine on the network they want to communicate back and forth but they don't want to be detected while doing it how could you go about how could you go about that and avoid detection on a well monitored network so you have to look at this from the point of view of where do we have the choices about what we do when you're talking about the initial attack you don't have a whole lot of choices if you've got a you know I guess I mean I guess unless you get lucky you see a system out there that's got a ton of vulnerabilities on it then you got some choice about what to do but assume that you have limited choices of how a system is broken into there's limited ways into the system to begin with you don't have many choices there so any tool that's written to to initially gain access to a system usually has a fairly limited lifespan at least it's limited limited lifespan in the realm of people who actually care about security you always find some bozo out there who never updates anything never puts any security on their system you can always get into them but talking about the people who are serious about it you have a limited lifespan with any sort of tool for initially getting in there however once you have access to a machine and all you're worried about doing is communicating with that machine you've got a lot of choices you know we're not stuck with one type of communication protocol we're not stuck with any traditional communication protocol that's out there whatsoever the trick to this is figuring out which ones work and which ones won't be seen so here's here's the question how do you communicate on a network without letting anyone know you're doing it first things first how do they detect what's going on how does someone see what you're doing on a network you've got IDS you've got firewalls you've got observers all of these things are sat there looking at what's going on on the network in general I picked the IDS and I say software human because you know whatever is looking at your network whether it's automated or whether it's a person they're trying to determine if someone's intruding on your network you get two basic forms of this and this this applies I think the IDS system in at least one sense is the most general case and you can kind of find derivative cases that cover this the same concept for firewalls and routers and everything else out there there's basically two forms of detection out there anomaly and signature detection signature detection works on known attacks known events you know if you if you know exactly what you're looking for you know when you see this packet go by it's something bad you want to throw up an alert about it hey that's great you can catch it every time it'll never get by you know you've got that one nailed the only way to avoid that type of detection is to use either an unknown method or something perhaps that changes constantly never use the same method twice the anomaly detection it doesn't detect misuse of the system it doesn't detect something malicious it just detects something unusual so it's it's not necessarily really great at trying to pick up something bad happening on your network but it'll pick up something unusual and it's really if the signature detection doesn't work that's the only chance you have left is looking for something unusual if you don't know what to look for you got to look for things that stand out so we can't really avoid the signature detection if you've got a way of communicating or way of doing anything on the network and someone can write a signature to detect that that's it you can't you can't do anything with it it's got a limited lifespan eventually it's going to be seen so the only alternative is to use something that you can't write a signature for something that changes constantly something that is quote unquote random or at least appears random to anything that's observing the network and we have to be able to do this without looking unusual and that's the key not only do we have to do something it's kind of it's kind of a catch 22 in a way because we got to do something that's very unusual you know this kind of random changing community communication protocol but we got to do it without looking unusual you can't stand out on there so the first stage of this is to detect the baseline of the network what does the traffic on the network look like to begin with what does what is occurring on the network what happens out there all the time and this can be done passively you can sit back and discover what type of traffic is allowed on the network what does normal traffic look like and kind of build yourself a map of both what is going on on the network what the structure of the network is and what's allowed in and out of this network this is not a new concept that's just this general idea of doing this this is done all the time this is how many tools and and other fun little things are written and developed but the key thing is is that this is what generally this is what people people do this process someone looks at a network or you think about what's going on on the network you know good example this is a verse w w w shell that's an old tool the idea of this was that you've got a computer inside the network it's you're not allowed to make connections from the outside to it you know the firewall is going to drop any connection in inbound connections to it they put a piece of software on that computer inside the network that at certain intervals perhaps at random intervals it looks like it's going out to a web browser it goes makes a web request except that what that web request is doing is coming to your computer on the outside getting the next command that you've told told it to do it carries it back as the HTTP response to the to the target computer to the one that one that you got access to and then it carries out that particular command it's masqueraded looking like the the computer on the inside is just surfing the web that's a great way of hiding it unless someone knows to look for it once someone knows to look for it if you stick with it too long they're going to look for it they're going to see it it's going to stand out similarly carrying data commands and ICMP echo echo response packets same sort of by same sort of idea what I'm trying to do with this project is to automate this process and make it run on the fly and may and have it adapt itself to whatever network it's currently working on look at what's going on network decide what to do on the network decide what will work there and then carry it out so some aspects of network traffic are going to have a low entropy meaning a very low randomness they're going to be very kind of the same things always going to happen certain communication protocols are only going to go to certain computers DNS requests are only going to go to your DNS servers are not going to be jumping around every computer on your network incoming web requests are probably only going to come to your web server they're not going to come to every computer on your network other things are going to look much more random maybe outgoing web requests you know people different people surfing the web outgoing FTP all sorts of things other things are going to be very random there's going to be a lot more entropy in that and entropy is the key to hiding information the the more entropy you have on the system the more information you can hide in that this is like if you look at if you look at steganography for example you know you're trying to hide information in something else if you've got a bitmap a bitmap has lots and lots of redundant information in it versus a JPEG image a JPEG has taken a lot of that redundant information out that's why JPEG smaller than a bitmap you can hide a lot more information in a bitmap than you can in a JPEG higher entropy you can hide more information inside it so if we find what has the highest info entropy on that network what communication channels have the highest degree of randomness we can then pick what we want to work in and we've got all sorts of all sorts of things that we can work with here we can work with the timing of the packets we can work with packets sending out packets that have bad check sums malformed check sums all sorts of different things that we can play with we don't have to use a SSH or T or telnet or some other standard type of communication format we can send crafted packets where the information is carried in all sorts of the different little pieces and information inside that packet the key is we just have to make sure it doesn't look unusual when that packet goes out so the overall concept here is we detect what the network baseline condition is on the specific network that we're looking at what does normal look like what doesn't look unusual and then select from that the potential communication channels determine which ones are highly have highly random information on the network put it down figure we've got initially we can select from anything we can do and craft a packet that does anything we want we're going to look at what happens on the network figure out what's allowed limit it to that and then limit it to what is it has a lot of entropy within that and then we have to somehow communicate this method to the receiver on the outside we have to get the information of how we're going what communication scheme we're going to use we have to get that to the receiver outside and then maintain a you know I put almost undetectable presence on the network is you never should think you're undetectable you should never think anything's absolute because it never is that's how you always get yourself into trouble but we can monitor and update the network conditions to stay hidden if network conditions change we can change the scheme we're using to communicate on the network if we just sit there and listen what can we learn by listening on the network there's all sorts of all sorts of things that can be that we can find out by just sitting there and listening not doing anything active not doing anything to be discovered can figure out what types of packets are allowed inside the network what types of packets are allowed outside the network we can figure out the architecture of the network where are the switches where are the routers where are other machines on this network and then look at what types of packets are flying around what types of packets as a machine that I'm on send and receive what types of packets do other machines out there send and receive and from this get an idea of what is allowed to move around this network what is moving around this network and what we can inject into the data flowing around without being sticking out like a sore thumb and being immediately identified so if we narrow down these choices we start with the ability to send any type of packet you know send it to any port whatsoever we start pairing it down based on what's available figure out what has the highest entropy look at this look at the type of packets based on the protocol the ports are using etc and look at the entropy based on how often do these packets fly how different is the data in these packets whenever they go by what different machines do these types of packets go to and then pick a channel that we know we can get from point A to point B we can get from inside the network we've got access to the machine on out of that network over to the place where we want to get the information to or back and forth vice versa either way we can figure out what can get into one out of one network into another and then back the other way doesn't necessarily have to be a symmetric communication channel the packets that you send out the packets that you send going out one way don't have to look a heck of a lot like the packets coming back in the other way as long as they're getting to the right segment on the network as long as they're getting down to the right branch off of your switch so that it can be picked up by a by a network card in promiscuous mode as long as you can get down that far and you know what to look for each guy on each end knows what to look for you don't have to have to even be a symmetric communication channel between them you can have essentially two different channels going back and forth one of the big challenges with the system is starting the conversation if you've got a piece of software running on the inside of this network and it's going to start communicating with you on the outside and you don't know what particular communication scheme is going to be using there's some difficulties in getting in getting that first packet out of there that first piece of information to the outside without having it be something that can easily be written as a signature because it's hard to it's hard to change things or inject randomness into the first bit of communication there's some there's some ways that we can limit how signature vulnerable that first bit of communication is but that's one of that is that's one of the points that needs to present some challenge and need some work on in this having the communication software itself remain undetected on the remote machine not talking about what the software is doing but actually having the software itself avoid detection of course that's another challenge but that's a that's a completely different story that's whether it's something that's using a polymorphic code that is that changes from one installation to another or even changes itself constantly there are ways around that but it is a different that but it is a another challenge in there that the third one that's actually I think a fairly interesting one is the problem on a low entropy network what do you do when there's not a whole lot of randomness going on on the network you know if there's a lot of randomness in the back it's how do we stay hidden in it we have to ensure that every packet that we send out doesn't significantly affect the statistical baseline of the network so that an anomaly detection system sat on the network will not recognize this as something unusual it will not stand out it won't push the statistical analysis of network beyond the limits beyond the thresholds that we currently have and it will avoid becoming an anomaly this is actually the area right now that I'm doing that I'm concentrating on trying to figure out the best methods for communicating and picking channels and picking well hidden channels on a low entropy network so just as a summary of like in the system you know what's real what's not real so far the allowed protocols discovery the network architecture discovery the statistical pro filing of the of the network those are those are working prototypes those modules those parts of the system are working prototypes next stages that we're moving towards the selection of the communication scheme implementation of the communication and the adaptation to a changing network to changing network conditions I hope that by this time next year this will actually be a working package that I can give maybe a bit better presentation and demonstration of what it's actually doing but this is the current idea anybody that has any interest in this or any ideas or feedback or wants to tell me why I'm crazy for thinking this feel free there's my contact information and that's it for a about a 25 minute presentation there's one question that that's a that is a great question I'll take that just I'll try and ask her one more real quick he asked is there any concept of trying to actually change the baseline of the network so that you can do something that used to look unusual make it not look unusual anymore that is it's not one of the first level items on there that's a pretty advanced way of working it but actually changing injecting stuff in slow enough that the system the anomaly detection system adapts to it and thinks that's normal that that is one of the long term ideas on there that's a that's a great idea to put into this thank you


I appreciate the fact that even when we were making decisions for school, he didn't want to put the financial burden on us, so he was thinking of ways, you know, which is why he initially wanted to enlist and do things like that, because he said, I don't want to have a bunch of debt. I was planning on enlisting in the military, partly because I didn't want to take out any student loans. I came to Purdue summer before my senior year to take a class, and I realized that I love campus. And now that I'm at Purdue, I'm involved in RDC, so I get the best of both worlds. Going out of state was never an option for him, because he always considered affordability. My mom was probably 90% of the reason I was able to go to Purdue. I really didn't want to take out any student loans, because I didn't like the feeling of holding people money, but my mom helped me fill out the FAFSA. My advice to future borderland makers would be to apply for as many scholarships as you can.


Mr. Speaker, it is my view that people generally has a positive view of the fire and emergency services in terms of their response when called out. I believe we can all agree Mr. Speaker that the St. Lucia fire service performs an important role in protecting the lives of citizens and property. Mr. Speaker, the St. Lucia Labour Party government has recognized the important role played by the St. Lucia fire and emergency services. Indeed Mr. Speaker, our government from 1997 have modernized and transformed the security services in St. Lucia including the police, fire and correctional services in St. Lucia. Through the provision of new infrastructure vehicles and increase in human resource personnel. This has resulted Mr. Speaker in the construction of the many new police stations in St. Lucia and of course the construction of the bodily correctional facility. This year work has started on the new grizzly police station and rehabilitation works on the viewport police station. In the case of the fire and emergency service, our government constructed fire services, fire stations in grizzly, viewport, miku and denry. This has resulted in a significant improvement in the working conditions of fire officers through the provision of modern fire stations. Our government also significantly increased the number of fire officers to support the expansion in the fire services. This loan for the fire services Mr. Speaker reflects a continuation, not a beginning, a continuation of the importance that our government places on the fire services. This loan will provide financing for upgrading equipment available to fire officers as articulated by the Prime Minister, enhancing life and emergency infrastructure for more resilience to climate and environmental hazards and importantly Mr. Speaker improving the work environment. Under this loan Mr. Speaker, fire officers will receive industry standard training to improve skill levels and well warranted psychosocial support when impacted by traumatic events in the line of duty. This is something we underestimate all the time in our country Mr. Speaker, that you send men and women in dangerous situations and there is no debriefing. There is no type of psychosocial support to ensure that they navigate that very traumatic period. The effects of climate change are indeed real Mr. Speaker, as we all witness the considerable heat these days. Mr. Speaker, if that level of heat is indicative of what hell is like, all of us supposed to repent and be baptized for the kingdom of heaven is at hand. Indeed, future climate change projections indicate a likely increase in the frequency of extreme weather events, rising temperatures and greater variance in rainfall. The consequences of climate change to the fire services poses significant challenges, especially during extreme weather events such as storms, hurricanes and droughts as well as the secondary hazards which result in floods and bushfires. So it does not matter what conditions exist, we have to send them like Navy SEALs to rescue people and to work on the very dangerous circumstances. This loan facility will allow the St. Lucia fire services to provide more effective and efficient coverage across the island for the protection and preservation of life and property from fire, floods, dangerous chemicals and other hazards. This intervention is indeed timely Mr. Speaker. Mr. Speaker, this government is being proactive and is anticipating the negative consequences of climate change for the fire services and is therefore investing the resources that will enable the fire services to adequately respond to the increasing number of weather events and other disasters. The project is to be implemented over three and a half years and expected to commence in November 2023. Mr. Speaker, our government continues to embark on an effective public debt management strategy which aims to reduce costs and aims at projects that build the sustainability of our economy. As I prepare to close Mr. Speaker, I wish to accentuate that the record of our government in the short period that we are being in office has shown a remarkable reduction in our public debt to GDP ratio from 98.1% in 2020 to 85.9% in 2021 to 69.8% in 2022. Our government has shown tremendous discipline and exercise great responsibility in fiscal management. Given the legacy left by the former administration, we will need to borrow to ensure that we provide resources to strengthen the economy, provide jobs and enhance the resilience of our economy. The borrowing for such investments, Mr. Speaker, will over the long run improve the growth of the economy and result in a commensurate reduction in the debt to GDP ratio. So Mr. Speaker, it is not just borrowing to invest in social services, but how you borrow. To borrow by restraining the growth in the debt to GDP ratio, giving us room to invest more in our men and women in uniform. This loan, Mr. Speaker, is offered on highly concessionary terms with a grace period of three years and is to be repaid over 23 years with an interest rate of only 0.7% per annum. I need to repeat this, Mr. Speaker, 0.75% per annum. This is unheard of these days, Mr. Speaker, as we are aware that the secured overnight financing rate which replace LIBOR is currently 5.31% and the federal reserve funds rate is at 5.5%. I am therefore in full support of this resolution, Mr. Speaker, as this loan for the fire services will help to protect the people, Mr. Speaker, and the property and livelihoods. I close by paying homage to our men and women in uniform for protecting and serving our country at the hazard of their lives. Mr. Speaker, I thank you and I now yield the floor. Thank you.


I was gonna say, like, at that time, do you feel like it was pressure to, like, put your foot on the gas at this moment? Because all these people looking at you. I didn't really feel like it was pressure. I just, like, it was just a blessing, you feel what I'm saying? I was just happy, you know what I'm saying? That's all, like, I wasn't really, like, pressured or nothing. I loved it. Pressure meaning, like, are you, like, making sure your songs are the best? Oh, like, I don't, that's crazy. Like, when I make music, I don't even, like, take it that serious, you know what I'm saying? I just go in there and catch a vibe. Like, people take music too serious, you know what I'm saying? You know what I'm saying? Like, motherfuckers really, like, stress themselves out. They make a song and they wouldn't do nothing. I go in there and just be myself and have fun and make a hit, you know what I'm saying? That's what I'm trying to say. Like, you just gotta be creative and just, like, have fun with it.


Hi everyone. Welcome to our poster presentation today on durable functions. This is our answer to serverless needs. Today we'll be talking about what serverless computing is. We'll be talking about the limitations on serverless's initial offerings and how durable functions gives users more freedom to do what they require. We'll go over a few scenarios as well as where durable functions make something much easier to do or just plain possible. So why serverless? Let's get one thing clear. Serverless doesn't mean that there aren't any servers. It just means that the user no longer has to worry about the nitty gritties of setting up and managing VMs or provisioning services. It means that by abstracting all of that infrastructure, you can focus primarily on your code and really dig deep on a microservice architecture.  Also, while traditional servers or cloud applications might be bulkier and upfront cost, the benefit of using serverless is that you pay as you use your service. This is because you're only charged when your function is called. So in a traditional serverless function, the cost would be calculated by the invocation of that function as well as the time required to run the phone function to completion. And lastly, this also means that your serverless helps you scale. Because the cloud provider manages all of the services behind the scenes, they can scale you up or down depending on traffic coming into your function. Not only that, it's easy to deploy. You can write simplified back-end code without worrying about dealing with other frameworks. And developers can add and modify code on a piecemeal basis. So it's a little bit faster. It's a little easier to deal with. And so ultimately, why serverless? Because it lets the user deal purely with your code by bringing it up into the individual functions that can be invoked and scaled as such. So what's a serverless function? Well, serverless functions are cloud-based solutions for getting serverless out there. Different providers of different names, for example, AWS's Lambda, Azure users' functions, but they all try to solve the problem of serverless architecture. The individual functions that can be broken out from your application then are stateless and short-lived, which means that once they're triggered, that existing code is run and doesn't mean any state before or after the event, it's asynchronous, meaning that each function happens purely based off the triggers and unaware of what happens in other functions. They're flexible because you can use your own dependencies, you have a couple choices of languages, and you can use different deployment and development tools to get you to production. And again, because as stated before, they can be broken up into piecemeal functions that users can work out of with one another. And lastly, one of the things that Microsoft offers in Azure is that they are event triggered with findings. So most of the other functions deal with things that are event triggered, such as going off of timers, HTTP requests, such as being able to do things with storage, but Microsoft offers availability to use something called bindings, which allows you to bypass having to use the SDK so that you can trigger functions based off of when something is uploaded into a storage database or a GraphQL database or Postgrease database. And so a couple of different reasons why people would use functions is because they want to do some data processing, something that does extracting and transforming and loading that information elsewhere. For example, if you wanted to take all of Stack Overflows questions and try and filter it out into different tags, it could have a function that runs every morning at 8 a.m., a timer function that takes in information from a data source. So this would be just a data, you know, collecting function. Then you can do some data processing on that once it's uploaded to the storage, which is a storage binding based function. And then have it uploaded to another database. So this would just be another HTTP function or a database binded function. You could use it for automation, and you could use it also for simple backend APIs. So downsides of servers, downsides of serverless, what's happening? They seem great, but there are a few limitations on what these serverless functions can do. They have a max timeout of 10 minutes. This is normally set at five for Azure functions, but you can set it up to 10. And this is a problem across all serverless functions, regardless of cloud providers. They have a max request size of five megabytes, so anything larger than that needs to be broken up. And they're stateless. So if you want to do more complex architecture around serverless, it would mean that you'd have to store that state somewhere else than pull it out from with another function. So with these few downsides, it could be really difficult or complex or even impossible to do some of the tasks that you want to do. So we have, Microsoft has this thing called durable functions, which just released Python support recently, and it doesn't have limits on time. Request can be broken apart. And through stateful orchestrator functions, you can maintain and manage state. And what orchestrator functions do is it describes a workflow that orchestrates other functions. An activity function is called by the orchestrator function that performs work and optionally returns a value. And the client function is a regular Azure function that starts an orchestrator function. This can be triggered like any other regular Azure function. So I just wanted to go into a couple of examples. The first one is called function chaining. And if you scroll in or zoom in to the code here, you can see that there is an orchestrator function. And this function runs like any other function, but it's a little bit magical. And this takes in function one, calls it, yields it out. And then once that's completed, it calls this function two with the output from function one. Then lastly, function three is called invoked after function two is completed with the output from function two all to get the result in function four. And so function training in general is a pattern where users execute a sequences of functions in a particular order. This outputs, the outputs of each of those functions could be necessary for the inputs of each subsequent one. And it's much simpler to do using durable functions because if you were to use regular functions, because of the state management, as you recall, it would be much more difficult to have to deal with storing it into a database or some sort of blob storage, pulling it back out, going back in, pulling it back out. And it can lead to a lot of sources of error. And because this is all done in one orchestrator function, it's more robust, there's better error handling, it doesn't rely on triggers and bindings. And if there is a point of failure, you can have try retry logic to help you get through it without having to restart every single thing from the beginning again. Secondly, we have this thing called fan out fan in. It's another pattern of executing multiple functions concurrently and then performing some aggregation on that result. For example, if you wanted to back up all of an app's site content onto Azure storage using regular functions, you would have to have one that handles everything or multiple that call one another as increments of that site are uploaded. This has issues of scalability. If you use one function to do all of that, the throughput is limited by the single VM that it's on. Also, if it fails midway or if the process is longer than the function limit, then the entire function would need to be restarted or it would just not be able to finish. And so this is using durable functions is a much more robust approach. And in our case requires writing two regular functions, one that enumerates the files and adds files names to a queue and another to read from that queue and uploaded blob storage. So in this scenario, an orchestrator function is called where F1 gets the work batch, then run all of the parallel tasks in F2 to write everything out. And lastly, F3 would finish up the entire process by returning what these are desired. Again, so this is a little bit, this is more scalable, more reliable, and you can have everything work concurrently within the F2 functions. Lastly, we have human interaction patterns. A lot of automated processes today involves some sort of human interaction. This could be that there are many, many number of serverless functions or other automated things that need to happen. But at a certain point, human interaction might be required. This specific interaction we're dealing with as an example is we're looking for manager approval for an expense report. If the manager doesn't approve within 72 hours, the escalation process kicks in or they can just process the approval. Ordinary serverless functions are stateless. So these types of interactions involve using a database or storage to maintain state. The interaction must be broken up into multiple functions coordinated together using a timeout to get everything working. The complexity is reduced greatly when you have to or when you can use durable functions. The orchestrator function can manage the state phone interaction easily and without involving any external data stores. Because the orchestrator functions are durable, these interactive flows are also highly reliable. And lastly, because they are running for long periods of time, people might think they cost more. So for this instance, we're assuming that a human interaction is required within 72 hours. So in a regular function, you might use a timeout or you might use some sort of time trigger one. In this case, the orchestrator would run and with some magic on our side, we wouldn't charge you for the 72 hours that it's waiting. It would only charge you for the exact instance where the function is invoked and for the duration of that invocation process. So actually, the price and costing of durable functions is basically the same as what you would see in a regular serverless function. So that kind of concludes my presentation with durable functions. I'm not saying that durable functions will be the answer to all of your serverless needs, but they do answer a couple of questions where limitations are met, where you need something to do something for longer than 10 minutes. You need something that requires you to take in batches that are bigger than five megabytes. And in that situation and scenario, durable functions might be the answer for you. Thanks for your time. If you have any questions, please ask me or Anthony on this chat or if you would like to reach out to us on Twitter or GitHub. Microsoft also has a Discord server for Python and Azure offerings. We are very, very communicative there and try to do more for our community there. That's it. Thanks for your time. Does anyone have any questions? Also, I think if no one has any questions, there is also a breakout room. I don't know if I can link to that or not. But yeah, if you scroll down to posters, more durable Azure function is one of the breakouts. And if you have any questions there, feel free to ask questions about it.