So sad news homework is going to be delayed until Thursday I know I came up with a really cool way to do a homework assignment but it means that I have to implement stuff so it means it's going to take a little bit longer than I thought so it's going to be really I promise. I don't want to spoil anything yet. Cool. I'll tell you about it. I'll tell you about it on Thursday I promise. Teaser. Teaser? I don't want to over promise anything that I can't actually deliver. This is a good tip for your future careers. I'll just tell you that it's really cool. That's not going to be details. That way you'll see it as long as it's cool.  If I tell you it's all going to be so dear to you that this is this and then it'll be not fun. I'm going to be reinforcing the concepts that we've been learning about in this cryptography section. So lots of fun. Cool. Okay. So let's... Great. So we started talking about and we left off last Thursday. We're talking about cryptography and what's so special about public key cryptography? There are two keys. Two keys. Why is that important? Why can't I just generate... I have two keys in symmetric cryptography. There's one that you know and one that everyone knows that's public, one that's secret that you have and we showed how the combination of the two allowed to show... to pass secure information and also to pass... not anonymously secure, but directed. So only the party you've sent it to knew it was from the time. Right. So the key difference, right? This is the way to kind of think about it. Symmetric key encryption, yes, you can always generate new keys. You can have new keys. But you still have to securely transmit that key to the other party, right? Here we have two keys that these two keys are linked and they're linked in such a way that if you encrypt something with the public key, then only the private key can decrypt it. And vice versa, if you encrypt something with the private key, only the public key can decrypt it. Yeah. So you can actually say, oh yeah, I actually sent this to you or no one knows that I sent this to you. Right, exactly. So you get confidentiality so you can hide messages similar to symmetric cryptography but you also get non-repudiation where you can actually say this actually came from me. As we left off, I believe we talked about the history here, which you have this really interesting case of parallel development, one in the classified world, one in the unclassified world. So because the unclassified people, even though they technically developed it later, they're the only ones that we knew about for a long time, for about 20 years. The algorithm is named after them. Their algorithm, RSA, is named after them. But it's important to, kind of an interesting, I don't know, I always like this peak behind the curtain where you can see the crazy stuff that's being done. Cool. So let's look at this first 1976, so we'll take ourselves back to 1976. So the idea was even back then that people understood the problems with symmetric cryptography and there the problem, as we've always said, is that you have to exchange keys securely. And if you can't do that, then the entire symmetric cryptography system's just break and fall apart. And so Diffie-Hellman was a way to get across that. And the important thing here is the key exchange. So this protocol is only about exchanging keys. It doesn't quite get to what we want on the general-purpose public key cryptography system. But I feel like this is a little bit easier to understand and digest than RSA. We're going to talk about the details of RSA, but I like Diffie-Hellman for this. So the idea is that Alice and Bob want to exchange some keys. And what they're going to do is they're going to generate some and communicate some shared information. Then each have some secret information, essentially mix the public information with their secret information, then share that result. And then each use their secret information to derive what ends up being the same secret key. So I really like this Wikipedia image of how this looks like with paint. So obviously paint doesn't necessarily work like this, but if you assume that Alice and Bob shared some yellow paint. So this is shared in the clear. Then privately they each generate their own secret color. You can see that somebody was British, whoever created this, right? So Alice's is red and Bob's is, I'm going to go with teal. I don't know, I'm not a big color person, but I can at least do. It's not quite blue. Teal, we'll go with teal. Is this orange or more red? It's hard because mine is, see, I look at it like this. Okay, it's definitely orange. Okay, cool. So orange, so Alice generates orange, Bob generates teal. And this is secret. They never share this information with each other. Then they mix that yellow paint with their secret key, with their secret colors, with some of their secret colors to create something that's light orange and something that's more blueish. I don't know if I'm writing this. I'd say periwinkle, but I don't actually know what that looks like. And then they exchange these. So now the idea is anybody can see the yellow, right, the public at the start. Anyone can see these other two tan blueish colors. And the idea is it's difficult for an adversary to then work back and take that and substitute, subtract the yellow to get back to the original secret colors. So I don't actually know enough about paint and colors to know if that's feasible or not, but this is the general idea. Is you use something that mathematically is easy to combine but hard to separate. So this is all in the clear. That makes sense. Cool. Then they take each other's publicly exchanged information, mix that with their secret color, and because of the properties of the algorithms and the math that we're using here, they end up with both of the same secret key. They both end up with brown. And the way this is done guarantees that they will both end up with the same secret that you cannot derive if you only see yellow in the public transport. You can't derive what this common secret is without either of the secret keys. So now at this point, what happens? Seems strange, but using a paint sample, like if someone gets a hold of the blue public paint, they can just begin throwing random colors at it so they can just try to catch what it takes to get the common secret. That makes sense. So again, this blueish paint. Do they know what the common secret is? Yes. They know the common paint. They know the public transport. But this is done in secret so they don't know the common secret. So they don't know the common secret nor the secret. Correct. You can think of that. The common secret is essentially derived based on the public values but also each of their secret colors. Because you can tell if you look at one flow, Bob flowed yellow in the teal to get blue, and then Alice mixed that with orange to get brown, whereas the other way, Alice took yellow, mixed it with orange to get tan orange, and then Bob mixed that with teal to get brown. So they both went through the same transformations in kind of a different order. But just by having yellow and either of these colors, you can't derive these secret colors or the common secret. And so now what can Alice and Bob do? So what do they know? Let's say Eve, who's Eve's driving this, does not know. Yes, Alice and Bob, they each have their own secret colors, but they also have this shared common secret. And the common here does not mean everybody, it means the two parties, right? Both Alice and Bob have this exact same common secret. So what can they do now? They could use this, they could say that, okay now this is going to encrypt our AES communication, and they never shared this common secret key in public. So they were each able to derive this same secret key. And I do not believe they can actually control exactly what that value is. So this is why this is called a key exchange protocol, not a message passing authentication, I mean encryption protocol, because they can't choose what this resulting value is. But they know that they each have this different, the same color here. Questions about this? And so the way that this works is going through examples. So Alice and Bob both agreed to use some numbers, in this case they use the terminology P and G. So P is 23 and G is 9. So these are small numbers just for examples. So Alice chooses some secret value of 4 and Bob chooses some secret value of 3. But they each do this individually and this is generating this orange and this teal color. Then Alice sends Bob A which is 9, which is G raised to the 4, raised to the secret mod with P to get 6. And then Bob sends Alice G, again same G raised to his secret power of 3, mod 23 which would choose 16. So 6 and 16 are shared in the clear. So now we know values are 23, 9, 6 and 16. And the idea is mathematically difficult to go back from knowing these values to derive the exponent here. And then Alice can compute the secret value. So Alice takes 16 which she got from Bob, raises that to her secret value mod 23 to get 9. And then Bob takes his secret value, the value that he got from Alice, 6 raises it to 3, his secret value mod 23 to also get 9. So by going through this process they actually both derive the same value here. And they can use this 9 as an encryption code. Obviously you want to use bigger numbers so that that way you increase the root force space. Questions? Cool. Now we get into RSA. There's not a good visual depiction of RSA. And I think it's important to understand at a high level how it works, what the steps are, and what's public and what's private. But, you know, so I think it's important to go through this so that you've seen this, but would probably not ask you to derive or to prove why RSA provides public and private key encryption. So, and remember, this is one party. So for you to generate those two keys, right, that are linked, you generate two distinct prime numbers, p and q. Then you compute n, which you multiply p and q. So this is exactly what our friend from the 1800s did in his book, right, to write that number that said, I don't think there's anyone who will ever be able to factor this number. Right, because he found two large prime numbers and multiply them together, which is an easy operation, and use that. So this is, so basically, if I give you n, you should not be able to derive p and q. Right, which would be computationally difficult to do that. What would make that not true? What was that? Yeah, if it's, well, if it's a power of two or any even number, right, that would be trivial to do. Then, it's technically two is prime, but they don't want to use two. So the idea is that if you're given n, it's hard to factor p and q. Right, so this is where, so we'll see as part of the public key, you give out n, because n you can give to anybody, because you're saying, hey, there's no way you can actually break this n down into p and q. So the rest of this follows with exponentiation, with modular using the mod operator. So the idea is, so for any n, a, so any a and any e, so to calculate, I mean this actually is very trivial, right? So you can take any number a, raise it to the power of e, and do mod n. So what's mod n? Two prime, one point together. What's the operator mod? Yeah, it's just, it's exactly what you would think. It's the mod operator. It's the percent in programming, right? So this is something you're actually very familiar with. This isn't like a brand new concept. And you all know about exponentiation. So this is good. So the idea is you can calculate c. So you can calculate, you can take a number, raise it to any e, and calculate mod n, and give a c. But, and this is where the other, so RSA actually relies on two difficult things. So one is factoring large numbers. So finding the, finding this, finding p and q given n is computationally hard. That's one property of RSA. The second property of RSA is if I give you c, e, and n, so in this equation. So if I give you c, I give you n, and I give you e. It's actually hard and difficult to calculate a. So this is a whole theory of mathematics that has to do with groups or fields around modular arithmetic and all this stuff. We're not going to go into any of that at all. But this is kind of a, these would be hard things about RSA. So if you give me c, n, and e, c, n, and e, it's difficult to calculate a. So then we compute m, which is p minus one times q minus one. And we choose an e such that e is between one and m. And then we compute d is e to the negative one mod n. And this is something that we can actually easily do because e times d, so if you multiply this equation by e, e times d is equal to one mod m. And because of the way we chose m, this is true. So this is, I'm hand-weighting a lot of this. And actually at this point we now have our public key. So we have the public key is n and d. So this d value is related to p and q through m. But it's difficult to go back. So from this d, it's difficult to derive e. And I believe in n and m. It's difficult to derive m and m is based on p and q. And the secret key is e and n. And so to encrypt the message we have, so if Alice wants to send a message to Bob out, she needs Bob's secret key, right? That's something we've been talking about. I'm sorry. I was supposed to catch the message. Something like that. Alice must have Bob's private key, which in this case consists of the n. So the n that Bob chose and the d that Bob chose, right? Public key. I said private key the first time I think. Did I say it again? You said secret the first time and then private the second time. Good. That was a test. Public key. So Bob's public key, which is the n of Bob and the d of Bob. So you take the message. So the idea is you somehow turn this message into an integer because this all depends on integer arithmetic. So you turn the message into some integer m such that n is less than the n that Bob chose. So what does this point mean? How does this actually impact the way we'll use RSA? All messages are really big keys. Yes. We either need, because we're limited by sending a message that's encrypted that is limited in the size of n, which is related to the numbers p and q, the prime numbers that we chose. So we either need to use really large numbers in order to encrypt messages or we need to send very short messages. Or as we'll see, we choose n such that we can encrypt a 128-bit AES key that we can then use to communicate. We can do all kinds of things here. But this is kind of a limitation, fundamental limitation of RSA. So Bob, no, this doesn't make sense. Sorry, this should be backwards. Alice takes the message that she wants to send, raises it, this is backwards. So Alice takes the message that she wants to send, raises it to d, and then calculates mod n to get the ciphertext, and then Bob takes that ciphertext, raises it to e, which only Bob knows, because Bob knows n and e, and Alice knows n and d, and Alice takes c, Bob takes the ciphertext, raises it to d, and then does mod n on it to get the message. Then I'm going to, she only sees the ciphertext, the public key of Bob, and the public key of Alice. So some of the properties, as we just talked about, it only actually allows us to send messages that are less than n. So depending on the bit length of n, that's basically the size of numbers that we can actually send. So how do we turn this into an actual crypto system? Because a crypto system, right, we should be able to send arbitrary messages. So how can we turn this into a real crypto system? You can use it to encrypt an AES key and then send the message, so send the RSA encrypted message, and then send the message that's encrypted with the AES key that's encrypted with the public key that we're interested in. That'd be one way, what else? What if we implied, let's say, breaking up the text into some kind of fixed block size and encrypting each of the blocks with R, the public key. Think about it in terms of letters. Use the same encryption key to encrypt a high volume of various small messages. Right, so if we go back, so A, yes, assuming n and d are fairly large, doing exponentiation and then modular, these are expensive operations, so these mod operations, I mean, the exponentiation is not cheap. But if we look at this, what does the ciphertext here depend on? It depends on n, which for a specific person's public key is what? This doesn't change fixed value, so n is fixed, so what else does c depend on? From the d and the m, but only the m changes per method? Correct, so only the m changes, so if we apply, let's say, this encryption to each letter of hello, we have to encrypt it to somebody's public key. The public key is constant and does not change. So therefore, the Ls will get encrypted to what? We don't know, but we know it's going to be the same thing. We don't know exactly what it's going to be, but we know that they'll be encrypted to the same thing. Plus, let's say, Eve knows we're doing this, sees the message, who's to say she can't switch around the letters and then send the message to Bob? So we could try this, but this would be fundamentally broken, right? We get all the same problems that we had with encrypting blocks in ECB mode, right? We're using the same encryption method on each chunk of data, and so there would be statistical properties that leak, all kinds of stuff. The idea we talked about, use essentially RSA, so use RSA to encrypt the key that was used to encrypt the actual message with AES. So this would be this, and you'd send this to the other party, and then this way, only the person who has the private key of this RSA public key that we use could then encrypt the key and then use that to decrypt the actual message. I've done this a little bit before, so if I receive a message from one of you, and let's say I decrypt it, and it turns to gibberish, completely random, how do I know that you didn't just try to send me a random message versus actually sending me, and maybe the message you were trying to send was a bunch of random bytes that you used that you stole from the random number generator from a secure computer or something, and you're trying to share with me these results. I'm trying to think of a scenario where you actually send completely random data. On a primitive level, does AES or RSA, do any of these things have any way of differentiating between that? Eventually, our messages at this point have no integrity, so no integrity properties, so all the crypto systems we've seen are giving us either confidentiality or maybe confidentiality plus non-recudiation, and so we want some way to be able to say, and here's a valid, here's how you know that the message is correct. There's actually an interesting slash difficult problem because you're sending them the message, so when I just, you know, the message is correct. And so we want to, some of the cases we want to be able to tell is what if an attacker flips a bit in the ciphertext before sending it to us? So what if maybe, as we've seen, so remember we saw CBC mode, right? We actually didn't look at this property, but you can maybe tell based on the way that the CBC mode worked. If you flipped a bit in the middle of the ciphertext, when you decrypted it, all of the beginning would be okay valid messages, and just when that bit flip happened, you'd get random errors, but actually the CBC mode has this interesting property where it will eventually self-heal and go back to normal, so you may not that, those garbled places may actually be important data that you want, and so you want to know that there was a bit flip. So an attacker could actually use this to make you think that, oh, maybe the original document was just corrupted.  Even if an attacker doesn't do it, you know, what if just the bit is corrupted? So how can bits get corrupted? Gamma radiation. Gamma radiation. So there's actually a story about, I don't know the details on it, it's told to me in one of my courses, and so the idea was there was, I believe it was a government organization where a university was building these supercomputers and they built two identical machines and one had twice the error rate of the other one. And so they did what normal people do is you look at all the components and you figure out what's different and you replace all of the second one by the first one or brand new components in both and that didn't fix the error rate, the error rate was still twice that. And so they looked and they tried to figure out what are the differences and what they found was that one facility was in the mountains and the other facility was at basically sea level and so they actually realized and found that it was gamma radiation because these were massive supercomputers doing massive amounts of computation. So all it took was one gamma ray flipping one bit somewhere that could cause the program to crash and once they like lined everything with lead or whatever you do to get rid of these so that the error rates were identical. So this is a thing that does happen and it's kind of weird to think about how many of your computer crashes could have been caused by something like this. I know there are some... So this happens, right? So you want to know, hey was this part of the original message that whoever is sending me this message intended for me to read, right? And the idea is how can the receiver know that the message has been tampered with or that it's not what we sender wanted to send. So how does Ethernet deal with this problem? I don't want to check some. I don't want the details. Doesn't it basically just flips all the bits and then adds them together and you should get one across the board if it was the corresponding messages matched? Yeah, something like that. I actually don't remember, but the idea is, right, so Ethernet, you have this physical medium where information 1s and 0s are traveling over so it's very possible for some bits to get corrupted and so you want the other side to know when there's some corruption or even maybe try to fix it. So one thing you could do is for every, let's say, byte of data you send you add an additional bit that acts as a parity bit. So the idea is if you, just I think what we said, right, if you added all of the bits together you'd want them to be zero, I believe, at the end. So you'd add a parity bit that would ensure that that was the case and that way the receiver on the other end could tell whether any of the bits have been flipped or changed. What if there's an active adversary in the middle of your Ethernet connection flipping bits? Does it prevent that? Exactly. So all I have to do is figure out, okay, within this byte or however long we check some is I want to flip this bit from a zero to one. That means I need to just flip, I don't even have to change the data. That just means I need to flip the parity bit. So I know if I can control two bit flips then I can completely control and alter the contents of that message. So the check sums, what we normally think about check sums are really designed for kind of random failures and random errors and bit flips but they're not designed for an active adversary. And so we actually, this was part of the study of cryptography was coming up with some way of defining a, use different terms, digest is one term, hash is another term. The idea is you have some arbitrarily large amount of data that you want to try to develop some kind of digest that is smaller than the data based upon that data. So in this case, your parity bit is essentially a one bit value that depends on the eight bits that came before it, right, that height. So you're trying to compress information about those eight bits down to one bit. So cryptographic hash functions are essentially functions that try to map some arbitrary size data to a fixed size bit string. And they have different sizes depending on exactly what hash functions you use. I believe most of them are about 256 or 512 bits depending on what you need. And so the idea is no matter what input you give it, no matter what size of input, it will do something and will spit you out a 128 or 200, let's go with a 128 bit number. One thing is, whenever something has cryptographic in the name, you have to assume that there are certain mathematical properties that you want that you're probably going to use this in cryptography and for cryptographic purposes. So let's go. So we have arbitrary size input, right? Literally any amount of size possible, right? So this is technically unbounded. I mean, you can think of some hard boundaries, but fundamentally unbounded input that we are trying to generate 128 bits based off that information. And so if we think about, well, you know, if we go back to that example to check some, right? The purpose of a check sum is to see if any of the bits kind of got flipped. So what would be some properties we would want from a cryptographic hash function in this case at a high level? Can we actually guarantee that? No. Now why not? Right, how many different numbers can 128 bits represent? 2 to the 128, right? You don't have to know the exact number, you just didn't know this, right? 2 to the 128, right? How many possibilities are there of input data? Infinitely many, right? So this means that, so ideally we want, so for this to actually work, we need everything in our input must map to one 128 bit number. Does this mean that there's a unique mapping from every, it's kind of like alpha, I guess I meant to do input. Inventory size, so is there a one-to-one mapping? So from every possible input value there's a unique 128 bit output for it? I can't possibly be the case, right? Because there can only be two of the 128 bit unique mappings, right? And what's the point of, if your input size is only 128 bits, you're not really squeezing anything down into less space, right? You could just send the value in that case, right? You don't need a hatch or anything, right? You may want it, but in this case you just send the value and you can represent all of them. So, and then it's clear, how are you taking 355, I think you're talking about this, pigeonhole principle? So that's how you prove that there's not a unique mapping, right? You know there's more than two of the 128 bit inputs, which means there must exist two inputs that map to the same hash value, right? But look at that. 355 stuff coming back. Okay, so we know it can't, it's impossible to guarantee, and in fact there's no way we could guarantee it, that every input has a unique hash. But what do we want? Yes, so we definitely, so we want this, the way we think about this is we want this to be a one-way function, right? We want there to be easy to go from any size input to the fixed 128 bit output, but difficult to go back. I thought what we wanted was to make sure that the thing that I torrented hasn't been tampered with. Isn't that the purpose of this? Uh, no. That's a use case. It's not the purpose, right? So the purpose, because we were talking about network transmission error detection correction and the kind of... Right, and we talked about why that that's not, but they're not good for an adversarial use case. So we're kind of expanding here, and the idea would be, well... We're transmitting that arbitrarily linked message, and we're transmitting it and generating a hash. So when the message gets to the receiver, they can re-compute the hash and make sure it matches the one that I sent. Yes, at a high level. We'll go into the details of how this is actually done, but this is... Hash functions have a lot of different uses, and so we have to kind of touch on all of them. So, yeah, it's hard to come from, like, use cases of two hash functions, so we're going to try to do both. Right, so definitely... So, yeah, one thing should be if I give you a hash, it should be difficult to come back to know that exact text that generated that. What else would I want? Like space and use. So then, if you have the message, hello, the message, goodbye, you don't want both of those to collide in the hash function, but if you have hello and... Okay, yeah, so that's a good way to start thinking about this. So the idea then is about what kind of collisions do we care about, right? So one question would be... So if I have hello, it's a little difficult with this example. I actually don't know if this is the case, but what's one bit off from H, do you know? By flipping one bit, I assume it's G. Somebody could look it up and tell me if that's correct. So the idea is there's how many bit differences between these input strings? One bit. There's one bit difference. So what would we expect? So let's say we have some hash function H. So what would we want to be true about the difference in the hash? Yeah, we want it to have absolutely no relation with each other. Yeah, so we want this to be... So basically it is a one bit difference, so we want basically a one bit difference which should cause fundamentally completely different hashes, right? So they call this I think the cascading principle or something. So you want one bit to cause a completely cascading change in the output of the hash function. What else would we want with this? So let's go back to our example of using this to maybe pass messages. So if I have some message and I've computed the hash to that message and I give it to you and I say here, you know, here's my message. Go give that to somebody else, right? So let's say I have some message m. So I have hello. So I have m and you have the h of m, the hash of m. What would I want it to be the case? So should you be able to take m off? So Alice wants to send this to Bob, but then Eve takes this, gets some new m prime with the hash of m. Let's assume right now that she can't touch this. We'll talk about how that is done in a second. So Eve does this and then Bob gets m prime the hash of the message. m prime equals hash of m. Right. So if that's true, then Bob will think that this is a legitimate message, right? So if hash of m, so can we prevent this from ever happening? We've already seen this. How many tries would Eve have to make in order to find some message m prime that hashes to that? Many, exactly. Two to the 128, right? Or however the size of the hash function. If you try enough of those, you will eventually hit the same, the same one, right? But we know, so we want the property that it's difficult to find these hashes. So we call that a hash collision. So when we have two values, so this is from hash tables, right? You have two values that hash to the same thing. If it's trivial, so this would be a case of checksum, right? It's trivial. So if you give me a message, it's actually, for a lot of checksums, even like CRC 32 and 64, it's actually trivial to create a new, brand new message with the exact same hash as another message. This is why checksums and CRCs are not cryptographic hash functions. So we want to be the case that it's difficult if you're given one message with a hash to find another message with that same hash. And this is actually how and how they break or how they demonstrate that they've broken hash functions. So, like, NB5 was broken and there are things that you can do that you can, like they, they'll give you the hash of a PDF and then they'll give you five different PDFs that all say different things that each hash to the same value, but still give you completely different content. So, very cool stuff. So let's see, I think we have some other one. Cool. So one-way function is what we talked about. We want it to be easy to compute so it should be easy and, as we kind of talked about with cryptographic functions, we want it to be fast to compute, right? This shouldn't be a difficult operation. We want it to be incredibly quick, but we want it to be difficult to go back. So these are, you can think of it as one-way function is one-way or a trapdoor function is another term that they use so you think about a trapdoor, right? You can fall into the trapdoor but you can't come back up. And we talked about it's not a one-to-one mapping, it's deterministic, right? So if you give it, it's a function, like a mathematical function in that it is only based on the input that you give it, it will generate the same hash value every single time. And the other thing is a small change, so one input bit should completely change the output. So one way we can use this is as we talked about. So we just showed that public key cryptography is actually pretty expensive. So when we wanted to create a signature for the message before, we would take our public key but we would take our secret key encrypt the message with our secret key and then display that to the world and now anybody can use my public key in order to verify that I indeed encrypted that message. But this is actually an expensive operation as we saw, we actually don't want to necessarily do that with all these messages. So Alice can actually use a hash function in this case. So Alice, like before, wants to make a statement M that everyone knows is from Alice, so that she doesn't care about hiding the message itself but she wants everyone to know that it actually came from her. And so Alice takes her secret key, encrypts the hash of the message with a good hash function and then shows everybody here's the message and here's the signature of the message. So then how does Bob or anyone else verify this? The message in the signature and then how does Bob verify it? Does he know the hash function? Yes, he knows the hash function. It's a... You could... Yeah, it's considered as part of this. As far as part of the signature you got metadata. If he hashed it and got the same signature it could be relatively sure that it was the same. Since it's not one-to-one, he can't be absolutely, but... What does he have to do with the signature that he got? Guess what? Yeah, he has to use her public key. So he has to check, hash the message, check does this hash actually match with using Alice's public key decrypting the signature, right? Because that signature... So what does Bob know for certain at this point? He knows the message came from Alice or to go a little bit weaker we can say that he knows that this signature that Alice sent belongs to this message. So assuming that Bob trusts the hash function that it is very difficult for somebody to generate a new message with that same value he can be fairly certain that Alice sent this message M. So we can think about... So what if Eve alters the message to be some M prime, right? This is kind of the example that we've been thinking about. So if Eve alters M to the M prime it should be the case that this is what we just talked about. We want the hash of M prime to not equal the hash of M, right? So it should be very difficult for Eve to find some new message value where that is equal. So this actually used cryptographic hash functions that are used in a lot of places. What are some of them that you know? So somebody mentioned Torrents. So Torrents, the BitTorrent protocol uses this basically to guarantee and check the integrity of chunks of the file. So the files that you want to transfer breaks up into chunks and this way when somebody sends you a file you can compute the hash of that chunk and then verify that they actually sent you something correctly which means that somebody's not trying to poison you by sending you false pieces of data. What other instances? And this is actually what a Torrent file has. So it has the location of the tracker and it has a list of, I believe, the files, the metadata and then a list of chunk hashes. And that's all that's in there. So that's all you need to basically recreate that file. It's a very interesting file, distribution protocol if you're interested in looking at that. What other uses? Make a secure connection to parties and send the key to each other and then decrypt the hash function to make sure that who they're communicating with is actually who they say they're communicating with. So you can't decrypt the hash function or you get the hash to make sure that the key that's being sent to you is a valid key that you're likely to communicate with. Exactly. So basically, using the thing we just kind of talked about and similar techniques, you essentially send hashes of the messages you're trying to send and so this way you can verify that you actually received it correctly. Yeah, well don't work directly. Never touch hashes or hash functions. Passwords, right? Passwords, what about passwords? They're just two correct passwords, but that's all. Yeah, so we'll actually look at it. We're going to go, I think, to authentication after this. This model is after talking about crypto. So the idea there is a website wants to check your username and password to make sure that you are the same person who registered for this account that originally gave this password. One way to do that is to just store the password in the database and just check, right? Which is fine, but I mean it works. But the problem there is that then the website owner can see your password and if that website gets compromised which they often do then everyone knows your password because it's right there in the database. Now with a hash function if now I can take an arbitrary password and squeeze it down to a gibberish 256-bit hash now the website when you register hashes your password and then stores the hash in the database and then when you then go to log in it takes whatever password you send hashes it compares with the database and there if it matches then it knows it's highly likely that it's the same password if it doesn't then it knows it was not the right password. It's much more complicated than this and we'll go into this it's all hashing and I mean there's salts and hashes and all kinds of problems with this in practice but that's the general idea there. So what else? One of the areas you can use to do the hash table so you can which actually usually it's not done because for hash tables that are such interval parts of languages they want it to be very quick to calculate the hash but it's bitten a lot of programming languages because I believe Java and Ruby the hash function was known and so you could make web requests and we've put variables that would all hash to the same value in a hash table so it used to be an o1 lookup would become on squared for all the values and so you could send a request with I think like 10,000 characters or something to completely overwhelm the server just because it was hashing all the values to the same location in a hash table so the way they fixed that was not by using a cryptographic hash function but by randomly choosing a key on startup and so I believe it there's a way to disable it I know Python does this when you start up it randomly generates a key for hash tables that it uses to then XOR into what it would normally do for hashes so what else? code signing what does that do? the developer is the person that did it yeah so similar to what we just talked about message right with authenticating the message it doesn't have to actually be something that we want to read like a readable message it has to be a software package that you're going to install and so you want to verify did the any government agency tamper with this file before I'm going to install it right and so if you know and trust that you actually know Alice's public key then you can know that only the person with Alice's secret key has made this message so and we use ZSH file system heard by some people so ZSH part of what it does is it because actually hard drives so there's controllers on hard drives that look at drive failure and how it's storing data usually they'll tell you when there's an error where you can sort files whether the hard drive thinks that there's an error but you can actually have what they call silent bit corruption which is parts of your block on your hard drive just randomly flip bits and the controller doesn't know about it and so then your operating system doesn't know about it and the file that you thought you had that you think is stored correctly is actually not because the real world of hardware sucks and so the idea is ZSH actually I believe, I don't know exactly what it uses if anybody knows an MP5 or I believe it uses a hash function on the blocks so that way it can actually detect when there's any of this silent corruption that happens so at least you know about it at that point yeah ZFS is that what I said yeah ZFS so file integrity message integrity package integrity password verification we talked about anybody use git? everyone wondered what those long random hexadecimal characters are no that's a SHA256 of that version so git actually uses SHA256 hash function to do to determine heads and I can't remember exactly what it uses but it hashes all the previous commits plus the current commit to get to the next state of the hash table system or maybe it's not, is it 256 or 128? but it's some hash function anybody play with bitcoin? how's bitcoin work? blockchain, it's like the hottest technology ever and nobody has read the Wikipedia article on it you're not going to get more time when you graduate so bitcoin works the idea is literally the blockchain comes from you have transactions and each transaction includes the hash of all the previous transactions plus its current blocks hash and then the next block in the blockchain uses the previous hash plus its current transaction block to generate a hash you have all the everything that's trying to mine bitcoin when they have the rate of difficulty I believe it's how many zeros at the beginning of the hash so basically you take all the transactions that you want to turn into a block you take the previous blocks hash and you XOR all of that together with some random value that you generate and the first person to get or first miner to get I don't remember four or five zeros whatever the difficulty is of the overall hash that's now the new chain in the blockchain and then you transmit this to everyone that says you say I found the next chain in the block and then you start mining the next one off of that, off of the previous hash and so the idea is this is also it's called proof of works the idea is you've proved that you did a lot of work to try to calculate a hash because we know that hashes should be essentially randomly distributed so to get something that has a fixed number of prefix means that you must have done a certain number of calculations so look it up, it's cool you can actually this is actually a good technique that I like to use if you have data that you want to store you can actually store it by hash so you can hash the data itself and use that as a file name if you want to do this so this guarantees that your files will have unique names and all this stuff so for data data processing so these are some of the more formal definitions of the things that we basically came up with when we were talking about hash functions so the idea is pre-image resistance basically means that if I give you some hash value it should be difficult to find some message that hashes to that same value so if I just give you a hash you should have to try two to 128 tries in order to find something with that same value makes sense right, this is exactly what we were talking about the other one is basically what we talked about is I give you some message and one it should be difficult to find another message and two such that the hash is collide so here you need, you should have to try another two to 128 in order to find these depending on the hash function the other general property is collision resistance which essentially generalizes this and says it should be difficult to find two messages and one and two such that the hash is collide and another super useful property of hash functions is in message authentication code so the hash functions that we saw don't have any keys right there's no key, the input is just the thing you want to hash and the output is some hash right but let's say we wanted to so we really didn't talk about it and there's actually a really good reason I'll talk about it in a second so the idea is that the problem here is how to create a signature for a message with a secret key so the idea is you should only be able to verify that this message is correct if you have the secret key so in this case if you just take the message and you hash it that should not be the case so the scenario is let's say you're a web server and you want to store on every user's browser cookies that specify who this person is so some kind of user ID so let's say you want to store the value user ID equals 50, that's your message to their cookies you can trivially not only can you remove your cookies so cookies are simply a way that a web server asks a web browser to send this data and when you talk to me later send it back to me and because that data lives on your computer you, the owner of the computer can change those values, send it to whatever you want so if you knew my user ID was one you could change your cookies that said user ID was one and now the website thinks that I thinks that you're me and you're impersonating me but if I send this message along with a message authentication code which is a hash based on this message and some secret key that only the server knows then if you change this message what should be the case? think about it this way so the server knows some key and this is the message so the MAC takes in the message and the key and then outputs so this outputs some hash based on the key and the message and then have this user ID 50 along with this MAC so you have the message along with the MAC you change the message do you know K? assume it's a 128 bit number so it takes 2 to the 2 to the 256 tries to guess so do you know this number? so can you create a new hash for this message? not the same one the server doesn't have to store anything that's the beautiful thing here so the idea is the server sends so let's call this little h so the server says hey web browser store this message m which is user ID 50 and the message is in clear text it doesn't matter and little h this is some hash it's not just a hash of the message because then you could set user ID equals 1 hash the message and then send back to the server your new m prime so let's say you have some m prime some new message that you want to send so you have m prime what do you not have in this scenario? the key so you should not be able to create the same h message so you can call mack so you can always try to brute force the key you can call m prime and try all possible key combinations until you can find the key but that would be based on the size of the key so if you use a long enough key that should be very difficult so the idea is only the person with the key can generate this hash so you can think of it as making the hash functions and hashing something such that you will get the same hash for a value only if you have that key and know what that super value is and this way we can know that whoever, whenever we get back a message, if you send me some message m prime and some h h prime I can calculate the mack of m prime with the key and verify that that hash matches h prime if it does I know I sent that mack if it doesn't I know something has messed up and I know to deny you access so we get authentication and integrity so this seems like something trivial I mean one of the first things you would think about doing so here the double bars mean concatenation so the idea would be take your secret key right append the message at the end and hash it with some hash function this seems reasonable why does it seem reasonable to reverse the hash so they're giving the output the mack of this they can't go back they know the message but they don't know the key so for them to break this they have to then brute force the key and try all possible key combinations at the beginning concatenate it with the message unfortunately this actually can be vulnerable because of how depending on how the hash function is implemented we're not going to go into all the details but it's really interesting basically the idea is hash functions do some kind of crazy operations and then their output is the state of the system at that point so if you give me the mack of some key concatenated with some message then I know the output of your hash function at a certain state at the very end here and then if I send it to the message let's say I want to add extra parts to the message I could then recreate the hash function state and hash the other four parts or whatever bytes I want to send and it'll actually the idea is if I want to send so let's say I have our user ID equals 50 so I have this which is our message I have some H of that message so I want to send back user ID equals 50 and admin equals 1 so the idea is I can't change this user ID equals 50 this is fixed I can't ever change that because on the other side the mack is a hash of the key concatenated with the message but this mack that I'm getting H tells me everything about let's say md5 at this state so md5 is in a certain place when it processes K so the entire key plus the message so I can actually recreate that state here I can then say okay hash ampersand A admin equals 1 and then give me the hash for some new H prime that I can send so I can essentially extend the length of the message as long as the prefix remains the same and then we create the hash function state from there so it's mack that actually works on real hash functions so I believe almost all I think shop3 is the only hash function that is not vulnerable to this so the other idea would be okay well then let's put the key at the end take the message, concatenate the key now if you change the message length you completely change the hash function so part of the problem here is depending on the hash function so like we said right the hash output if I find some message prime where the hash of message prime is equal to the hash of the message then I can use that message prime because it's being appended to this key so this is a case where rather than the security here depending on the key K and the size of the key if I can break the hash function I'm knowing the key size so this is it's kind of more of a theoretical attack but it definitely can happen so I just want to get through this so the idea is to use a secure computation that people have studied which is a hash based Mac or an H Mac the idea here is essentially that you extend the key so you take the key you extend it to be the block size XOR that with some outer pad and then you concatenate that with the hash the key concatenated with the key XOR with some inner pad concatenated with the actual message so that opad and ipad are just constants that only need to differ by one byte but they are very different in practice anyways the idea the actual implementation here doesn't matter but the important thing here is that you should use an H Mac and never do this yourself so if you ever get the feeling that I need some way to verify the integrity here stop using H Mac and when we come back we'll talk about public key cryptos with some weakness


Okay, so for Shadow at 40 in SOD, for PVP you want to run 5 in Blackout, 4 in Spirit Tap, then you want to run 2 in in Pain, 1 in Shadow Focus, 2 in Psychic Scream, 1 in Mind Flay, then you go 3 in Shadow Reach, 5 in Shadow Weaving, 1 in Silence, 1 in Vampin Brace, then you chuck 5 in Darkness and 1 in Shadow Form. For the Runes, you want to be running Void Plague, you want to be running Death, Mind Spike, Fiend, which you can swap to Homies when it's on cooldown and Dispersion.


how to build a buyer's email list free and fast. So you wanna build an email list, but what do you do? I mean, it can be really kind of scary and defeating when you first start out.  And I'm gonna share with you my kind of embarrassing story about list building. Okay, we're starting right now. Hey, I'm JR Fisher. Welcome to my channel. If you're new here, don't forget to subscribe. Hit that big button down there. Don't forget, turn on bell notifications. There's a bell that'll pop up as soon as you subscribe. You'll wanna click that bell and turn on all notifications. Now, I've been selling online since 2009 and I've sold millions of dollars of both digital and physical products. And on this channel, it's really your channel because I answer your questions, the responses I get on these videos are what makes the next video. So if you have questions or if you have a subject you want me to cover about making money online, make sure you put that in the comments right now. Okay, let's get going and let's start building that list. Okay, so the really good news is that everybody, I mean, everybody starts at zero. None of us started with a list. So, you know, those people you say, well, they've already got a big list, they've got it made, they started at zero too. So no matter what stage you're at, maybe you don't have anybody on your list right now or maybe you're just starting to grow your list and you really wanna explode it. All of these techniques can be used to get more people on your list free and fast. Now, I hear all types of varying things about emails, dead and all this, but the fact is email is still the number one way to communicate with your customer. Now, according to the chart on the screen here right now, you can see the return for $1 spent, banner ads, two bucks, keyword ads, 17, $10 mobile, internet display, 19, SEO 22, catalog seven, but check out email, a 40 to one return. Now, on this other chart I'm showing you right now with compared to other forms of online marketing across industries and niches, email wins the day, always, every single time. So, understand the first thing I wanna do is sell you an email marketing because it is the most profitable thing you can do. Now, let's face it, if you don't have an email list, all these numbers look great, but without an email list, it doesn't do you much good. That's what we're gonna concentrate on. Okay, so what I wanna do is I wanna take you through all the steps, but really before you build your email list, you need to have certain things in place. So let's talk about all of those real quick so that you can be set up to grow this email list. Number one, you gotta understand who you're targeting. It's so, so important. Too many people say, well, my product's good for everybody. Well, if you target everybody, you won't target anybody because it just won't resonate with people.  Now, if you look at the graphic on the screen right here, I've got the name of the person, where that person works, the details about a role, all the demographics about that person, goals and challenges, values and fears in the marketing message, and my little elevator pitch to that person. So when I complete the persona, it will look like what's on the screen right now. This is Rachel, she's a social media marketing. She's a key decision maker. Here's her demographics right here, her goals and challenges. And now I know who to market to. Now, of course, the more you know about your target audience, the better off you are because you can target them better. So know your audience. This little graphic on the screen right now kind of shows you that. I know all these things about this particular person. So it's really kind of a two-step process. The first thing you need to do is find the people that match what you're trying to target and they need to get them to give up their email to you so that you can target to them. Then you need to get them to give up their email to you so you can email them. Now, of course, one of the simplest, easiest and free ways to target your audience is through social media. All right, so we've targeted them. Number two is you've gotta have a website of some sort. Now you could do this as a WordPress website or you could just put up pages in something like Cartra, which I'll talk about a little later on in here. I highly recommend Cartra. Now here's an example of a landing page right here. It's just a simple landing page, but it tells a little bit about this particular company, has the links up at the top, some testimonials, little information on there. Now if you choose something like Cartra, which once again I highly recommend, and I'll put a link below where you can watch a video on Cartra and what all it can do. And if you do like it, it's a free video to watch, but if you do like it, there's a $1 trial you can get if you use my link below. Now the cool thing about Cartra is they've got pre-made templates. You don't have to be a designer. You can go in there and just use the pages that have already been made. And the last thing you need is an email marketing service. Now you can get something like MailChimp or Constant Contact, but if you get Cartra, not only does it make your pages for you, it is also an email provider and probably one of the best ones out there. The next thing you're gonna need is an offer, okay? It's gotta be a really tantalizing offer. It's gotta be a great offer. It's gotta be something that people are just chomping at the bit to get.  But for me to give up my email, that's gotta be a pretty darn good offer. Now here's another example of a page that is asking for somebody's email. I'll teach you how this blog makes over 32,000 per month for free. That's a pretty cool offer right there. And if I'm interested in writing blogs and making money, that's something I'd probably opt in for. Now you may be thinking, you know, don't I need content? Don't I need products? Don't I need services? Not exactly. In the beginning, you're kinda actually trying to get information. So you just need to come out with some type of offer that somebody will give you an email for so you can start building that list. You can never start building the list too soon. And I'll share my story with you at the end in just a second. But bottom line is you wanna start this right away. Now you probably already have some emails in your private email list or your Gmail account or something like that. And you may want to mail to those people and say, hey, I've got this offer, please opt in. Now some of you may be thinking, well, can I just add them to my list? I'll just put them on my list. Don't do that, okay? A couple of things will happen. Number one, they may just unsubscribe so you've wasted your time. Or number two, which is worse, they may mark you as spam and it's gonna actually hurt your list. So you wanna make sure that the people are on your list and that you're mailing to actually want to be on the list. Now here's an example of what one blogger did to get people on their list. They sent an email like this one here, it's to Brian Harris. Hey dude, quick question, starting a project. And I find and share cool places in Nashville area to hang out outdoors. Found this one last weekend while personally exploring. Anyway, thought you may dig it. So going to be emailing out some other places want me to include you. And he just asked the question, do you wanna be on the email list? This is something you could do with your list already. Now here's a cool thing. Here's what came back. Yes, definitely include me. Nice legs, by the way. So this guy here says, yeah, I wanna be on your list. And he already started building his list. Now here is an example of social media and Twitter. It says two times right here, tweets with hashtags receive two times more engagement than those without hashtags. 21% tweets with one or two hashtags have 21% higher engagement than those with three or more hashtags. So don't overdo it. Don't put too many hashtags. And 17% tweets that use more than two hashtags usually show a 17% drop in engagement. So don't overdo it. You can overdo all of these things. You can also target things like LinkedIn groups, like Facebook groups, and you'll find people there as long as it matches your niche that you can actually add to your list. Now of course you can do the mainstream thing which is purchase ads. You can do Facebook ads. You can do LinkedIn ads. And you can actually send people to your landing page where they opt in for your offer. The next thing you can do is you can start getting subscribers with content marketing. Content marketing will actually build the current list you have and build some loyalty to the people already on your list because they see they're getting value by being on your list. Now, Neil Patel and his blog at the top of every single post, he puts an invite for them to join him on his journey about learning about digital marketing. Now here's an example of what Neil does right here. He has some funny headlines but here's a headline from one of his and it's asking the people to opt in. Here's one done by Buffer and they're saying, hey, we've got actionable social media advice delivered daily to you and you can put your email right in there. Now don't forget the more content that you put out on a daily basis, the better off you are. People will say, how much content should I put out? How many videos should I do? How many blogs should I write? It's really dependent upon how hard you wanna work. Obviously, I think it's obvious that the more you do, the more you're gonna get back. You know, if you're doing one blog a week, you're gonna get some traction probably after a while but if you're doing five blogs a week, you're gonna get a lot more traction. Now on my YouTube channel, I do five videos a week. Monday through Friday, five videos a week. Now we actually publish these Sunday through Thursday because those are the days that most people are online in my niche. I also do a live coaching call every single Friday and then that's posted on Monday too. So that's a lot of content and I haven't always done that. As a matter of fact, I now wanna share with you my embarrassing story. Now I started off my journey selling survival food of which we still sell and with the pandemic we've done really well but I didn't build a list and I think the main reason I didn't build a list is I didn't know what to do with it and I went through all these iterations of, maybe I should build a list, maybe I should get people on my list and then finally I realized I really had a list because I had people who bought survival food from me. So now that I had this small list of people, what do I do with them? So I said, well I guess I need to send them emails so I would send out emails with offers, 10 different offers in one email of all these different things they could get from me thinking the more offers I put in there the more they're gonna buy from me and nothing could be further from the truth. As a matter of fact, the thing I learned was you only have to have one offer per email. Now this took a lot of pressure off me because I didn't have to come up with 10 things every single week and through automation by using something like Cartra I didn't even have to come up with anything anymore because what I did is once I came up with 10 or 20 different offers I put them in a sequence and they automatically now go out to new people who join my list and after somebody's been through the entire sequence it starts over again and they can go ahead and go through the entire sequence again. So this is the type of thing you need to do but nowadays it's so much easier because there are things like Cartra. Cartra is amazing because you can put courses in there, you can put products in there, you can do your email sequences in there, you can do automations, you have opt-ins. I mean, it does so much. You owe it to yourself to go down and at least watch the Cartra video. It's absolutely free. You don't have to opt in to watch it but if you do like it, which I think you will you can get a trial for only $1. Is that it? Is that all you have to do? Well, yeah, I mean that is the simple way to build a list. Now can you build a list faster by doing more things? Most certainly you can. You could do webinars. You could do giveaways. You could do pop-ups on your site. There's all kinds of stuff you could do to build your list. You could make videos on YouTube like what I'm doing right now but the bottom line is if you get those basics down you can start building your list and I'm telling you the sooner you do this the better off. I mean, I would have a much bigger list if I had done all these things in the beginning than now but the point is I finally realized I need to build a list and I am building it now. So that's what you need to do too. And I wanna add one other thing. It's not really money is in the list because that's just not true because if that was true the people with the biggest list would have the most amount of money and that's not the case. The truth is it's that relationship with your list. What are you doing for your list? What are you giving them? Are you giving back to them? Do you answer their questions? Do you help them out? Do you solve their problems? That's what you really need to be. Now if you aren't committed to doing those things there's no point in building a list because you have to do that to compete in the marketplace nowadays. Now do me a favor, grab my free course. I wanna give you some value right now. Below there is a link to a free course. All you have to do is click it and learn. It's a $97 value but for a limited time you can get it absolutely free. Don't forget to subscribe. Don't forget to what? Notifications. Turn on all notifications. And remember this is your channel. So if you've got questions about anything that I covered in this video or if there's another video you wanna see me make put it in the comment section below. If you've discovered something that works for you please share that with us. Put that in the comments below and you'll help so many other people. I really appreciate you watching this video and I'll see you in the next one. Hey, thanks for watching my video. Don't forget to subscribe to my channel and click that little bell right here so you can be notified every time I do a new video. Also click on one of those videos there. Keep watching on my channel.


I'm the Special Education Supervisor here at Goal Lake and I'm here with my new friend. I'm Mrs. Harrison and I'm a Special Education Teacher at the High School and the Peer to Peer Advisor. We are here to give you your next clue for our One Community, One Book. Now we have some pictures to show you. What's on these pictures? Our clues are... Friendship. Inclusion. Maintaining relationships.


This time we're going to be looking at a multi-cycle synchronous bus protocol. It's not going to be too different from the single cycle bus protocol we had before. You can see we've still got our clock cycle. But now, instead of having our operations spend the entire clock cycle, we've got several clock cycles in there. So now our operation can span several clock cycles. This will give us a number of advantages. As for the other element in our protocol, we still have the address and control lines. We still have our data, but we've added this slave ready signal. So the multi-cycle synchronous bus protocol allows our operation to span several clock cycles. This means that if one device takes far longer than another device, the fast device can still respond quickly. Maybe it only takes a couple clock cycles where the slow device can take 10 or 20 clock cycles. In the single cycle synchronous bus protocol, we would have had to adapt our clock cycle to handle that really long request. But in the multi-cycle protocol, we can set our clock cycle to be the smallest possible element, and then each device can just take as many clock cycles as it needs. So this means that at the very beginning of our operation, our master puts the information on the bus still. And it's just going to stay there until the very end of the operation. Until the master knows it's gotten its data, it's stored it, everything is okay. In this example, that's taking five clock cycles total. The slave will see that request very early on in the first clock cycle. But it may take it several clock cycles to actually manage to act on that request. It may have to decode the request, go look through its hardware to find this piece of data that the master device is interested in, encode it, load it onto the bus. And then in the last clock cycle, it can actually post this data on the bus where it will just sit there for the entire clock cycle. This time, the master isn't just going to automatically know that the data is available at the end of the clock cycle, because we now have several clock cycles where that data isn't available. So this time, the slave is going to assert a slave ready signal. This indicates to the master or anything else on the bus that the slave has put some data on the bus, and anybody that's interested in this data can read it off. Our write operation is pretty similar. In this case, the master will put the request on the bus. It will also put the data to be stored on the bus, and that will just take however many clock cycles it needs. And at the end, the slave will assert its slave ready signal to indicate that, yes, it has completed the request, and the master can go on with whatever else it needs to do.


Okay, good morning everyone. Welcome to 314 our course on media and technology could somebody please pray and Then we will get started Anyone could unmute your mic and please pray with a class Man, thank you All right, so We are coming close to the end of this course. I we have just two main topics left one is software platforms Which I'll just kind of run through today. Just It was an idea now of software but platforms that we could use for the ministry and And then tomorrow will be the last chapter, which is a little bit on data protection and privacy just share a little bit on that and I'll just do a quick run-through or overview of everything we've covered in this course on media and technology and ministry and Then what we will do is I will Just post a simple assignment. It'll be a non technical assignment So it's don't get worried. Oh, am I going to be asked technical questions? No, no, that's not the purpose of this course It is it's just a purpose this course just to expose you to you know, different things that are available there In in media and technology, so it'll be a non technical Assessment just to make sure that you followed along through this course. We'll post that After next the next week or the week after and it shouldn't take you more than two hours to finish Okay, so we are most likely going to be done with the course content For this course tomorrow. I will see how things go, but most likely that's what's going to happen now Last week There were some questions about costing, you know, how much do things cost so I just went and you know I got that information from our team So I've shared one PDF Which is This PDF I've shared an addendum Which gives a costing of Audio equipment If you wanted for an auditorium with 500 to 1,000 people so this is kind of what We have so I'm just giving you the cost now all of these are in Indian rupees So depending on you know, whichever country you want currency you want to convert it to so please convert it to That I thought I'll convert it to US dollars, but you know, I'll just leave it as it is So I just shared this PDF. This is all you know, what? What the cost is in Indian rupees if we were to purchase these things locally? And you can convert it to the currency you want, but this is let's say this is what we have Currently in use at our main location. So all locations don't have this It's in our main location, which we call a central That's where all these equipment is being used and that's what it roughly costs right, so It is little more than what I had mentioned when Elisha had asked me the question I'd given him a modest thing for just you know a smaller set up But this is something a little bit more elaborate is what we're using now. We we didn't start like this, right? When we first started 20 years ago, it was very very very simple We had three simple mics and one small mixer and two speaker boxes That's it. So when we actually started it was very very very basic very small and so You know over time slowly we upgraded. So what this is is, you know, we're in a little bit more mature state Place so we can afford to have something like this, but we didn't start like this Okay, just to keep in mind so don't if you are starting your church a ministry don't get Discard it by seeing all these equipment.  We got we came to this only more recently Okay, so that's the first thing The next thing was another question was on the video equipment that we use I just went and got the again the the costing of it. So I'll just share it. It was just, you know, the line items I'll just share it in the Chat here So for our I mean and again this these are local amounts. Okay, these are not, you know But you can try to see what it cost you in your place But I said, you know, we we went three cameras So each one Of these cameras that we rent sony fx6 with the video tripod and the camera is about 6,500 rupees We pay And then also we rent The led wall so actually we have three Sections so you don't need to have that much but we have a big LED wall at the back and then we also have two on the side So that people can see clearly because of the the way the auditorium is So for that we spend 22,600 approximately Again, these are just numbers from here locally And of course it doesn't this cost doesn't include their local transportation and And the labor charges, you know for people to come and set it up and all that but this is just the rental cost of the equipment so This is to give you an idea. I mean whether these these numbers these numbers obviously will not make sense In another place. I'm just sharing with you What we are spending But probably gives you some indication So we rent these things and Person they cost is so much But I think overall it serves well because you know people need to be able to hear well They need to be able to see well and plus Now we have audience still now even though you know pandemic is More or less gone and people are back into in-person services. We still have a good number of people who connect online to the live stream and who also watch the video after that So having a good video production is useful for them And so it's worth spending money on the cameras and so on So that's just to give you an information on that Um, so today what I want to do is just to quickly share with you this Part on software platforms that you could use for your ministry Night and again, I'm going to just run through or let me just Sorry, I think I just should share my screen One minute I will share my screen so then I can move across to Yeah so um, what I wanted to is just uh, you know In the work that we do As a church or a christian ministry, it's good to make use of software Platforms that are available for various things and It's good that wherever possible. I'm not I understand that Not every church or every ministry can make use of all these things, but I'm just sharing with you What we do what we use and you know, if there's things that are relevant You're most welcome to make use of them at least you're aware of these things so now All of us are familiar and using software for our regular office work, you know a lot of work that we do today is making use of These office productivity Software where they use microsoft office suite. Oh, you know word spreadsheets part presentations emails Or you could use a google suite of tools Which is free So either one, you know, it's fine, but it really helps if everybody is you know, it makes use of these tools for email for documents for calculation of spreadsheets and presentations and all that I think it's almost like a given these days that people who Work in an office environment are good in these things. I'm familiar with these things. So That's a good thing to do Make sure that in your church or your ministry You have people trained in these things and then everybody agrees to work, you know in this fashion using Documents and spreadsheets and so on Secondly We use in accounting software Here in india we we we use what is known as tally You may use something different in your part of the world But this is for Of course managing your finances the finances that come into your church or your ministry. So make sure That you do use an accounting software and I think some of this we covered last semester when we talked about church administration so Uh, make sure you you know, you're you're all your finances attract and managed in Relevant software system accounting software for your organization The third thing and now, uh, I want to just mention here that Uh, what one of our our approaches has been to use open source software meaning Uh, very very possible. We try not to pay licenses but use what's available open source and then we host it and you know, so we just Uh, our expense would be the hosting part of it. We we hosted ourselves And so we can fully have fully control and be customized the product as we need to so that's been our approach Uh rather than paying licenses and you know, that's a good thing because you can save a lot of money Uh are using these open source products So a lot of the things that I've mentioned here are actually open source products And you're welcome to you know Get them for your own church for your own ministry Uh, if you have a few IT people who can help you out, that'll be very useful So I will I'll just mention these and then I'll walk you through it. Some of you may be familiar with it So for managing other people, uh, this is meaning our church people our congregation We use rock rms. Um, and I've shared this with you before but So I just give you a quick intro on that Then for our staff management that is this is to manage our church staff and consultants people work for the church We use a hrm we use human resource management software So that is to it helps us in a number of things Record the time the hours of work so people are going to get paid for leave We are right now also using it for our recruiting So the person who's kind of handling recruiting puts in selected candidates into that and then from there I pick it up and you know the interview process goes forward We it also has capabilities for Performance review. We are not using that feature as yet, but hopefully We'll start using that as well. Our reviews are being done, you know and independently of that But the human resources management software helps you take care of your church staff And again, this is an open source product Project management management is if you want to run projects and this is typically for the it team to manage it projects Of course, it can be used for the projects as well, but this is mainly designed for that For running the various it projects and that's Again an open source project Websites all of our websites are built with jumlah Again, it's an open source content management product Tertab runs on custom church apps We will probably you know likely be building our own but we're using this Hosted service provider Our e-learning platform uses an open source Software called open edX that's where all our e-learning courses run on Website analytics uses an open source product called matomo matomo That's again something I've shown shown you our Email lists ever uses another open source product called php list We also manage our inventory um We That is we track all our all our assets Actually, there are two ways you can I mean I mentioned an open source ERP product here but we actually use A different product Which I will I will show you I'll just give you a demo of that Then for as a repository, which is We just started doing this we want to you know document all our best practices we want to Have a central repository for all our document artifacts and other things So we are using bookstrap app We just set that up And church metrics is for us to track you know church attendance and so on so forth so All of these are free now Of course, there are there are trade-offs meaning, you know, somebody will look at this list and say well, you've got so many different Software products running. It's a big. It's a challenge to maintain it.  I understand that um Then you know the other the the the common Comment would be why don't you use one? One what is known as an enterprise resource Planning just one some one unified software platform for all of these things So what I mentioned there? Odo.com is an enterprise resource planning system, but it's not it's not gear towards church Work as such it's more for a corporate organization type thing so You know, we had to decide do you want? the best in breed for certain Things that you want to do or do you want a very generalized corporate software then? To try to customize it, you know, it's going to be a challenge So we've taken the second option, which is Let's use the best in breed For specific things that we want to do Yes, it means that we'll have you know eight or nine different platforms running but at least we get the best things that they afford to give us Rather than something that's more genetic as an ERP. So that's our approach And I'll just quickly show you what these things are so you could Just get a feel of it and I've given you the list the pdf there so In case you feel you know in case you feel like Your organization your church would want to use any of these things you can always Go there And you know use any any of these things If you want to make use of them, okay, so Again just to reiterate Other than you know microsoft office and The accounting software Everything else is open source meaning it's free. You can have your own installation of it You don't have to pay for the software So you can take it set up for your church or your ministry and customize it the way you want it So that's a big plus, right? So I'll just quickly give us a little overview Some of these things I may have shown you in the past So forgive me if there's a little bit of overlap or repetition But I'll just give you an overview and then we'll be done With this. Okay, so you just get a look at Look at these things All right, so our hrm It says where this is the human resource management software that I was mentioning Basically when you log in You know, this is where so this is an administrative view. So I've logged in as an administrator Uh, typically people, you know, they report their their time sheet here. I haven't filled up my time sheet for the last couple of days but generally, you know, we we we report our work hours here and then Uh, you know At the the monday of every following week people usually submit their time sheets And then we have our admin person approve them go through them so on but you see there are A lot of things that can be done here people apply for leave here We can see who's applying for leave Our recruitment process happens here We can see, you know, so these people are kind of going through the recruitment process or Maybe we've got some of them. I've you know, some of these positions already filled but So candidates come in here and then we go through the take them through the recruitment process We can maintain a directory of all our staff here Performance reviews could be done. We're not using this part, but we will start using it So we can do stuff performance reviews for our staff Um, uh, people also can submit their expense claims. That means, you know reimbursements They can submit it here. So it has all of these features typically to manage all our Uh staff, right? So that's the uh hrm here just a quick overview of it But it really helps and then of course if you want to have some communication happening We don't use this but it is it is there if you want to make some announcements and so on so forth This this information is useful. Okay So, uh, this is our The orange hrm which I mentioned is a free open source software the This is what we use uh for Asset management, right? So I'm not logging into our actual product because if I log in there, you'll be able to see all our license numbers and Other information, but I'll just show you this demo of the product. It is what it generally look like so So basically you can you know, we like we said we buy all these equipments we buy licenses for certain software, which is like for graphics adobe Adobe Microsoft and some maybe a few other software that we need licenses for But we buy a lot of assets. That's you know, all our hardware computers And so on so we need to track them. Where are they? Who has it? Or what is the model number and all so we use Uh, this asset management software looks like this. I'm just showing you a demo But if I log into our account, you would you know, you probably would see a lot of confidential information so But we track all our assets here and we know where it is. Who's who's having it? And so on so that's what happens here and we try to maintain our inventory. So every three months we Do a check And update, you know, okay. This is where the the product is or that Microphone is or that camera is or that laptop is but even with all that, you know, it is a challenge Keeping track of things because we have so many different locations and events happening that these products keep moving, you know, different places and It's it's it's real challenge to keep track of things so that things don't get lost But we we use this to track So Repository All right, so this is the repository. It's actually it's actually book stack app But this is where we are we just started doing this recently Is where we try to We or our work we're working towards Maintaining a center place of Keeping all our documentation best practices across various ministries, so So it's you know, not everything says so it this is the other concept is bookshelf So every ministry is a bookshelf. So you see accounting bookshelf bible college, you know, they all have a bookshelf And within them there can be many books So, you know, this is where we would write All our details and the book can have many pages So This is the database of all our vendors. So this particular vendor database will have all the vendors for you know different So these are approved vendors so anybody can go in there look up the vendors. They'll have their contact information And if we need for any event we need, you know, uh, I need to call somebody. Okay, you can call them and so on So that's what This whole thing is and we are we just started working on this So all the ministry leaders will have to you know, put in all the information, but Everybody has access to it. So they can go in Read make use of the information And and so on. So this is our repository Okay um I have turned to our church management system e-learning all of you are familiar with e-learning which we Use this our online portal. So we are using open edx for this Uh, this again a free software. It's hosted on open edx and this is that's how this is set up I think most of you are familiar With the e-learning part um church management Yeah, church management system So this is actually built on and a free System I've shown this to you before where We uh, you know, we have uh any log in we have people's birthdays and so on and We can you know, look up people's information here And contact them to keep track of our interactions with them people from the church and so on so this is Built on rock rms Again an open source product. So we track people and it you know, it's only people who Are actually doing member care and so on who have access to this Right and then from here we generate, you know, we could generate reports We can extract information Based on location and so on We can pull data. So if you want to send them an email, we want to send them a WhatsApp message We want to send a target group, you know, certain Usually an email or so on so we we can extract information and target them here and and so on So this is the church management system That we have Yeah Okay projects So this is what I said we Would use for our it projects. We Are not actively using this at the moment. We're going to start transitioning here So you could list out all your and this is mainly for it We could list out all our it projects here And then we create tasks Classroom we haven't used that for a while, but you can you know for each project You could create tasks and then You could assign the tasks to various people And you know and then follow up on those tasks and those Activities and so on so we haven't really actually started using this. We've got this setup But you know we're in the process of building the ed team and allocating work and so on so right now It's it's more of because the team is small It's a little it's just the communication three emails and so on but our goal is to move the whole team to work using our open project to manage our teams and our Tasks and so on mainly for the itt and they'll be working on all of these Different projects that are going on Which basically is for the itt Yeah I think that's covered most of that Yeah Let me see anything more in the pdf that I needed to cover Yeah Yeah, that's it. I think I've shown you most of the Products that we are using Any any quick questions So this is to give you an idea of look you can have these software packages installed for your organization or church and you can use these things for various Functions are things that you want to carry out Any quick questions that you have on this? Okay no questions all right, so Bill I think that's that's all I wanted. I just wanted to give you an idea of software platforms that you could use Okay, Elisha's question. Are these free to use app or yes So Elisha in the list in the pdf that I shared with you Everything after the accounting software so even you can get free, you know open source accounting software But we are just using we are using a commercial software for our accounting package because it kind of picks into account the The local Indian government Regulations, which is a little difficult to keep up with so that software help package helps us take care of that um Other than that all the others that I've mentioned in this list are free open source So you could download them You know from the I've shared you the links of the websites where you can download them from And whatever you need you can have some people set it up for you And then you can customize it for your organization, which is what we've done So we customize it and we put it to use for organization So almost you know After the accounting software everything else is open source and it's free So you can download and use them so if I were to say you know, it's good to have Especially if you're a local church It's good to have something where you manage all your The information of your church people You know So if rock RMS is one that you could use it's designed for churches And it's an open source product so you can take it and customize it use it A paddle to that of course is what you know in the industry in Industries the user The user crm a customer relationship management software, but then it's not tailored for church You can put it to work But since you have a product that's built for church rock RMS It's useful to take that and use it So I'd encourage if you have a few people who can help you I'd encourage you to set it up and use it for your church You know any once your congregation goes above 100 people Then it's very difficult to track people their birthdays their anniversaries how you know using spreadsheets and You know, but if you have something like A church management system it makes so many things easier. You can track you can put comments there You know that the last time I spoke to them This is what they said and so on and And if you have multiple Pastors and people working at least you can see the comments So when I look at it, you know when I look at a person's information I just look at the comments and see that oh Somebody from our church spoke to them on this day And they made this request. Okay, so I get a quick idea of okay. What's going on? So that's very useful So Christopher's question do these software support multi site multi country So the church management software. Yes, it's you know, we have people For example, we use that same thing for all our bible college students So all our bible college students data is also in An installation of rock rms, which is people from all over the world Or many countries of the world So that's so the answer is yeah, the rock rms supports it And the other software also, you know, like for example hrm You could have people from any event the world access and support work on it Yeah So all all of these products can be used From with global access Yeah, so you're hosting it online. They access it from anywhere Yeah, any other questions High level. I know this is very high level, but You know, I thought I'd keep it simple. All right Um, so keep this list handy with you the list of products Um Whenever you feel at need You can go back to this and see if any one of these products are useful for your church or your ministry And of course you could always search online, you know, maybe Couple of years down the road. There may be better products available than obviously Use what's better and best And if anytime you need help You're free to email us, you know, we have our IT team people are there So if you have any questions you email us, we'd be happy to Share whatever knowledge whatever learning we have with you To help you in getting things set up for your church or your ministry We'd be happy to point you in the right direction and assist you so Feel free to reach out, you know, whenever that time comes you need to set something up Uh, we're happy to help Okay so Christopher, what are typical website analytics are captured? How about social media metrics? yeah, so you know, so mutt more is Is one of the best so other than google analytics. So we have google analytics which tracks all our databases That's not all our websites Sorry, so google analytic analytics is already Um, all our websites are There on and it's being tracked by google analytics in addition to that We have our own installation of matrimon where It also tracks and gives us information on what's happening. So there are two analytic products that are tracking what's going on on our website Okay, so your question is What are the analytics? So what we I mean, uh, actually to answer your question There are just numerous data points that are being captured Perhaps I should say a lot more than what we even look at Uh, typically, right? But what is of interest to us would be uh from what mutt more does is okay, which countries How much time do they spend? What are the main pages they're looking at? And maybe what devices are they coming from? So this would be of interest, you know, so For us, okay, these are the countries people are coming from this is where they are going How much time they're spending so but there are lots of other data points that are being captured which Actually data. We are not actually looking at On the google analytics side. We also get a report on the performance of our website In terms of hey, these links are broken. These pages are not rendering well. They're not showing up well on the mobile Etc. So we use that to keep improving our website So for each of our website google gives us that report So which we can see uh, because example our our church apc website has like maybe several thousands of pages So we can't do this manually, but it's nice that we get a report through google A search console that this is how the website is performing. We also get a number of We get other information like how many clicks came through this month. So month on month we can see Where what were the search keys searches for which the website was shown? What are the pop searches for which you know a particular webpage was shown? So that's interesting for us And Where did they come from, you know what device? What search obviously they're searching on google, but what device were they searching from so But these are just a few of the data points. We're looking at but google gives us a lot more information Which we actually don't use About social media metrics. Yes. So youtube Facebook have their own analytics pages Which we can see Again over there what is of interest to us is how many people which countries And also how long have they been looking at so every I think every monday I would get an One of our it people informs me Okay, for the live stream yesterday. These were the Number of concurrent users live users who are watching um And then of course, there are a lot of people who would watch afterwards Of which we will see But that gives us, you know, okay almost like our live stream attendance That means these are people are actually attending the service live Which we can see And then we also have the numbers for those who watch it afterwards But every monday we take a look at How many were actually watching us live and we see that okay, that's the average Of what's happening on youtube facebook twitter So on So that those those those metrics We take and we observe we track them we follow them Yeah Any other questions Okay, so That's that's about it for today Tomorrow, uh, what I'll do is in this in this class. We'll just have a you know short five ten minutes on data protection just keeping information secure And then I'll just do a quick run through of all that we covered in the course on Media and technology just to kind of give us a full picture of all the different things we spoke about So that you have these things in mind. Uh, it's not something you have to memorize or you know You're going to be tested on technically no Just so that you know that these things are available And as and when you find a need in your ministry you start using these things and You're welcome to reach out to us In the future If you need any help and you'd be happy to guide you right So with that let's close for today Uh, somebody could pray and dismiss us, please Who'd like to pray? Okay, go ahead Sorry, Elisha go ahead And I really further once again You want to appreciate you and thank you for your great love We thank you for the gift of life and we thank you for the opportunity To have engaged in this class. We pray that oh god Whatever that you have been taught May it be recalled whenever it is needed in our ministries and in our service to you We pray that you continue to keep us until we meet again in Jesus mighty name. Amen Amen Thank you everyone Thank you for patiently enduring all this I hope these things are useful In the days to come. Okay See you all tomorrow. God bless. Have a good afternoon. Good day