I'm going to talk to you about an idea ahead on how we can kind of regain a little bit of trust in the everyday computers we use. So what is the problem? Well, the problem is basically these guys. I mean, the thing is, like, we all use computers in our lives, we use them for, like, I don't know what you use them for, but I use the most important thing I think I'm doing with my computers actually talking to other people. I mean, yes, we are all watching videos, but, you know, talking to other people, and we do have quite a problem there, because even though we have developed quite a lot of solutions to make this talking to other people more secure and to actually hide from these guys what we are talking about, like, all of these solutions, like, for example, GPGE or OTR or Signal, like, are executing in a, like, basically this. So this is a block diagram of a modern computer, in this case the Lenovo X230 I'm using to show this presentation to you. It's a kind of three-year-old or something laptop based on an Intel CPU, and, like, as you can see from this block diagram, the thing is super complex. And the thing is that on this machine I'm executing my GPGE and everything is encrypted and everything is fine. The only problem is, like, the plain text of my emails, which I'm decrypting, even if I'm using something like a smart card, is going all over the place. So we have, like, a super complex system. We have, like, also in this case the bad-highlighted things are, like, subsystems that contain some form of proprietary firmware which we cannot audit. And all of this makes it, I would say, pretty easy for a sufficiently well-funded attacker to actually attack that system. So now if we want to consider this system and, like, what we ultimately want from it. Actually, I want to talk to my friend about computers because I like computers, and I generally use a keyboard to, like, type stuff, and then I click send, and then it gets sent and encrypted and decrypted, and on the other end it's displayed on the screen as words and my friend reads it. Now the thing is that as you can see from my block diagram, I've highlighted, like, the parts that I actually need for that communication in green, like keyboard and display. If we say that, okay, at the display and at the keyboard I basically need to use plain text because crypto glasses are not yet a thing and also I cannot really type in RSA or something, so in the end I kind of need to have plain text there. But on the other hand I don't really want to trust all of that other stuff, especially like these things running untrusted firmware, like the things with red borders. The problem in that case is, like, since a couple of years now Intel has gifted us something, namely CPUs and basically the platform controller hub which is containing the integrated graphics which are both running proprietary, pretty reverse engineering-resistant firmware. So I have these, this CPU, I kind of need that because I want to encrypt stuff and decrypt stuff, but I don't really want that thing to be handling plain text. But on the other hand, like, I have no choice because there, you see all the errors are pointing to it. There's no way around it. So we need to, like, think about where can we place that kind of trust boundary and I think realistically there's really only one choice and that is basically to place this trust boundary, like, up to where do I want my plain text to be and where do I want my ciphertext to start, right at the input and output devices because realistically I don't think there's a terribly high chance that we will be, like, reverse engineering, Intel management engine and embedded controller firmware for any practical number of platforms and keep it open for any number of years. So the places where we need to put this kind of encryption or something that makes it happen is, A, in the display bus or display buses, in case of its laptop that's primarily a LVDS bus, which is a digital display bus, on more modern devices you would use embedded display port, which is basically very similar to LVDS, just with added protocol layers. It's like very high speed, but it's just plain pixel data. So there's not much encoding happening there. No video codecs or anything like that.  So pretty much no active devices there, except for a couple of LEDs for, like, mute and power. So from this point of view, we need something in between of these components that will be receiving hopefully only untrusted ciphertext from Cloud Platform Controller Hub, which contains the integrated graphics and the embedded controller, which contains the basically keyboard matrix scanning, and forward, like, do some decryption there and encryption on the reverse path and forward that to display and keyboard, which fortunately are pretty simple devices. So there's not much logic happening in there yet if we ignore, like, embedded display port and HDCP and so on. So the thing is, now, if we look at that block diagram, so you have, like, CPU and embedded controller, Platform Controller Hub, the intercept, the display keyboard, and these two pretty simple buses. That has a nice side effect of implementing a system that way, and that is that these two simple buses are used pretty widely. For example, this is a block diagram of what, in this case, Texas Instruments would like your smartphone to look like. It's pretty much the same for all vendors. They basically just exchange, like, who makes the parts? They all do basically the same thing. You have, like, the CPU in the middle of this application processor, which, in fact, is a huge system on a chip, like, more than once, even include, like, packet-switched memory buses and stuff like that, so really advanced stuff. But in the end, that thing is only talking to your display via something either similar to LVDS, some are even using embedded display port, so, like, high-speed serial protocol, but still pretty dumb.  So, we can definitely adapt the solution from before to also work in a case like this. You will obviously have, like, power management issues and form factor issues, but purely technically from the electronic and computer science side of things, this should work. So, if we look at this block diagram of this general idea on how we could organize our computers, we have this interceptor device. Okay, so it needs to kind of do something with LVDS, like, receive it, process it, send it back out, and do, like, something with the keyboard switch matrix scanning, like, how does this, like, how would you actually control that from an application point of view, from software running on the host machine? Basically, this is the general idea I had for that. This is a diagram of what a frame sent from a basically, basically any monitor standard today looks like. You have, like, this vertical sync and horizontal sync signals which basically are framing information, stemming from back when VGA was a thing. And then you have, like, the actual content area where most of the time you have some kind of desktop environment running, and then you have, like, a application window inside that desktop which may contain something worth protecting. Mm-hmm. As an example, think, for example, of Thunderbird where you want, where I want to send, like, encrypted email to my friend, or I want to receive an encrypted email from my friend. So in that case, Thunderbird is, like, running on my Linux system, displaying a window. In case of I'm receiving an encrypted email, that window is displaying, like, basically, if I would not have, like, a NIC mail or something installed with basically display, like, ASCII, Armored, GPG binary. Now, what we need to do in this, to make this work, in this scenario is we have some kind of Thunderbird add-on which recognizes that I'm displaying, like, GPG Armored, GPG ciphertext, and which will take this GPG armor, like, convert it back to binary form, and then formatted it as a simple bitmap. That contains a special header at the front that tells the interceptor device something like the width and height of the bitmap and contains a authentication code, so I cannot just anybody go and form a bitmap which would work with my interceptor device. And then I need to display that bitmap which, fortunately, I can do on basically any operating system, any platform. And this bitmap is then interpreted by the interceptor. And decrypted on the fly with my GPG key, the interceptor, since it has access to the keyboard and display may ask me to input a passphrase or to, I don't know, insert a smart card or something depending on the implementation. And the decrypted plaintext is then rendered into a pixel buffer which is inserted in the live display data stream, basically at the same place where this payload was communicated before. So basically, if I'm running Thunderbird, I would make this add-on so the entire window where I'm reading my email would be this payload area and contain the GPG ciphertext and this interceptor would exchange that by the decrypted data in flight. Now, how would you actually make that work? The thing is this interceptor needs to be able to process this really high-speed display buses like LVDS and do in-flight transformation on it. So that's a pretty hard task. And also we want it to be somewhat not too complex so we can actually secure the thing itself so we don't just replace one huge attack surface with another huge attack surface. Now, to me, the most obvious way to do this would be to use an FPGA for most of the stuff because these things are basically very nicely suited for this application because they're really good at handling large bandwidth, high bandwidth, high-frequency data like in display bus. And yeah, this is basically how I would imagine a such an FPGA-based interceptor to work. By the way, sorry for the non-planar graph thing. So without looking too much into it, we can already see that we have an advantage against this X86 platform like the Lenovo X230 here in that we do still have a lot of components but they're not that centralized. There is some factor of compartmentalization there. So I have, for example, I will, for example, if you consider the display data path, if my display signal does not contain any payload, any headers, any special markers, and it's just regular display data, then it will go in this diagram, it will go up, go in on the bottom right side which is basically from the untrusted domain from the platform controller hub on Intel platforms, it will go through a LVDS DC serializer which basically converts it into a smaller frequency, lower frequency signal for FPGA internal use. That will go into a pattern detector. Now, if that pattern detector does not detect like this special marker header I put in front of my GPG payload, it will not do anything, it will just pass on the signal. The signal will then go through a frame buffer for like clock reasons, then it will go through a buffer switch which in this case also does nothing because there's no payload there so there's nothing to replace and then back to a serializer and the interesting thing is that at no point this high bandwidth display data signal which may contain like other sensitive information I don't want the interceptor to know, at no point does it even touch anything apart from some relatively simple parts of like digital logic so that it's not going through any kind of CPU or higher level processing, it's basically just a bunch of shift registers, pattern matching and a couple of buffers. So in this way I can organize this system so that like sensitive data is really only touching parts it absolutely needs to touch like from an electrical point of view there's like on the FPGA separate buses for this kind of data and this way I can kind of reduce the attack surface of that somehow, somewhat. So let's consider now the case of a frame that contains actual encrypted payload data. Now the key for this data is in the, like depending on the implementation either in the FPGA itself or in a external secure access module so basically a smart card and the CPU and graphics processor which formatted that data for me do not know that key so that can't decrypt it. They're just running basically a bitmap graphic and now the pattern detector in this device will when it's receiving this data recognize that header which was previously formatted and then it will go on and write the payload in this case like a probably some lightweight protocol and then the actual GPG data into a payload buffer and upon completion it will notify something I call the application processor because basically I think you will probably need something like that and this application processor will then do processes on that. Like in fact what it will do in the GPG use case is it will probably do some protocol decoding then extract the actual cryptographic payload send that on to a crypto code processor. I think it makes sense to distinguish these two things here because A, the application processor like for most things you don't need like any kind of cryptographic acceleration and on the other hand maybe you don't want the thing that is handling all the complex protocol logic to actually also do the encryption and decryption and handling of plain text. And this crypto code processor would then decrypt this payload possibly with the help of a smart card secure access module and will then forward the plain text via a separate data path to the renderer. So physically the application processor in this scenario would never be in possession of the plain text so even if you compromise it through some way or some means you would not be able to access plain text data there. And the renderer would be a piece of basically probably another processor realistically probably running something like free type that is converting like UTF-8 input into pixel data which as it turns out is a really complex problem but I will be coming back to that later. And this renderer is then like outputting a bitmap into a render buffer and this render buffer is then dynamically switched into the in-flight LVDS or embedded display port signal by this buffer switch thing. So the buffer switch basically just needs like the position where to flip between upstream display content and the render buffer and it will count the position in X and Y coordinates and then switch over and switch back. Now this nice thing about like this entire compartmentalization thing is that it enables also some kind of some need security features. For example, one thing you can do is for the, you see the render has two inputs. Like A, the application processor may want to render some kind of some kind of user interface. So like a password prompt or a, I don't know, some message and on the other hand, like the crypto co-processor wants to render like plain text data. So in this case, the renderer is getting two different data streams. It could, for example, color-coded. So as to make like spoofing of, for example, application processor messages from a, from by like having a ciphertext decrypted in the device a little harder. So you kind of know that if the text is blue, it's the application process of the interceptor directly talking to you and if the text is like red or something, it's like a decrypted email you're reading. Now, if in this scenario, so now I can like decrypt and securely display GPG emails. Now, assuming I want to actually write an email, how would I do that? Well, in this case, basically what you would have is, you have this keyboard decoder and emulator on the top and bottom. So you have like the decoder, which is reading out my physical mechanical keyboard and the emulator is then simulating another mechanical keyboard to the rest of the system. Like implementation detail for X230 would be that you can have like the function key which is wired into the rest of the system as a physical data line instead of like multiplex data lines. You could have that like as an SA electrical override so that this keyboard emulator can only actually emulate the keyboard when you are pressing that key so as to like still make it a little harder to exploit that in order to like, I don't know, enter commands into your root shell or something. And the workflow would basically be like this. I would press like, I would start a phone number, start writing an email. And then when my cursor is in the editing field, I would for example, press a certain key combination which tells this interceptor device to and the application processor within it to display me a like basically a very simple text editor. It just needs to be complex enough that I can enter like text in a language of my choice and to be like internally representing that text as some kind of like UTF-8. Now I enter my email message into this application processor and then I would press in this case a certain key combination to, for example, either I could like choose the recipient key ID or I could possibly also communicate that from a Thunderbird extension that is highly implementation dependent but in the end the application processor would send the plain text to the crypto processor which would then input the encrypted ASCII armored GPG cipher text via the keyboard emulator into my actual email client. Now another interesting thing is that here the crypto, like nobody but the crypto core processor does need any access whatsoever to the keyboard emulator because basically I don't, I can't think of a reason why the application processor would want to push keys on my keyboard. So in this case I can have like the crypto core processor having exclusive access to the keyboard emulator and then it is entering this cipher text as if I would be like typing GPG really fast. And my email clients in this case wouldn't even necessarily have to know about that because for it it's just a keyboard. Also nice thing about it is like there's no, you don't need any operating system level drivers. You may not even need like application level support for it. For example you could maybe you could have like parts of this like of this bitmap formatting running in the cloud or something like on a different machine which you trust more. So now we have like a physical device which can do some kind of encoding like encrypting and decrypting of data and which in order to do that has to do key management. And I mean putting a smart card next to it I don't think it's a terrible idea but still that doesn't look too secure to me. Also I have the advantage that like compared to a full x86 main board this system is pretty simple. Like the, you could probably do it with like a four layer PCB. So this is actually within the realm of possibility for a hobby is to like solder themselves. So I think one thing we should seriously consider there is making that, taking that concept and making this device into an actual hardware security module as they are usually used to like store SSL certificates and so on because they are not actually that complex to build I think and that would present a much higher hurdle for an attacker to actually pull any plain text or key data out of that system because suddenly in like the hardware security model is basically you have a intrusion detection feature on the circuit whereby the circuit detects when you open the case or drill holes in it or remove it from the device and you have like a backup battery that keeps that online no matter what happens. And the interesting thing about making in hardware security model out of that would be that you could like for example have it wipe actively wipe a key when it detects that the case is being opened either the case of the hardware security model itself or even just the laptop. So talking about hardware security modules like how would we actually do that? Now I have actually disassembled a couple of those myself so generally most hardware security modules that I actually use today basically consist of a some kind of CPU and some memory and some SRAM which is used for key storage. And all of that is put in a box and on the inside of that case box there is like a so-called mesh printed. This is basically just two like PCB tracks printed on the inside of the case making their way all around it contacting the main PCB at like a couple of points. And now there's a part of the circuit inside the hardware security model that is continuously monitoring these traces whether they are broken. And the idea is that in order to get to the keys which are in the memory inside you need to first open the case and to do that you need to break these tracks because they're all over the place and you can't drill a hole in it without breaking them. Now I think that can be done pretty easily and it's pretty effective. For example, one of the more effective approaches I've seen in practice so far is like a basically a flexible plastic foil which is printed with some kind of silver ink. It's basically exactly the same material you find inside really cheap keyboards. These rubber dome things. And that stuff was just wrapped around the PCB on all corners and then everything was potted with a kind of little flexible but really chemically resistant potting material like epoxy resin. And now as soon as you would try to remove that it would totally rip apart these sensible traces on that plastic foil. I think that's a nice approach. I think there's a couple of other things I would kind of like to try. So like one thing is RF interference so you have like a metal can instead of plastic case and you have like just wire randomly stuffed into it so you can't really predict where the wire is and then you have it potted and then you continuously measure the frequency response basically of different wires and traces within that case against each other. The coupling between them and measure when that significantly changes. Now with that works in practice I don't know it would probably be pretty expensive but it might be worthwhile to at least explore it. I could also imagine like using a some kind of ultrasonic measurement. So you have like a potted device and on the main circuit board you have a couple of small ultrasonic piezo transducers and you're sending like ultrasonic through the physical like the potting material and you are measuring if that response does change at all. I think that might actually be pretty effective because in order to like open it or do anything to it you would actually need to like touch it and if you like maybe you could use a laser against it or something I don't know. Like advantage of that would be that it would be pretty cheap though this may come with like high current consumption. Another approach that I would like to try out is like tribal luminescence. So basically you put a couple of photodiodes so like really sensitive light detectors on the PCB itself and then you encase everything with a clear potting material that is like mixed with like so-called like friction glow or smash glow crystals. Like there are certain chemical substances which in crystal form will emit a bright flash when you break the crystal or when you wrap two crystals against each other. And now if you would have that inside the potting material I think it would be really hard to like in some way if the potting material is like chemically resistant in some way like remove the potting material without exerting mechanical force on these crystals which would cause them to flash and you could detect that with your photodiode and wipe all keys. Yeah, so these are like just ideas what you could do in order to make this hardware security model like at least moderately resistant against an attacker. I mean they are not bulletproof like any hardware security model out there can be breached with sufficient resources. But the thing is from all I've seen this would probably already be like more than at least like most commercially available hardware security modules provide. I know some military stuff then like detonates the device but yeah, we kind of don't want to do that I think. So now I've like praised like this new idea for a device I have which I want to put into a laptop. Now one thing we need to consider there is like you are adding an additional piece of like complex piece of circuitry inside a thing in order to in the end reduce attack surface. So like what attack surface does this device itself provide? So like this is not an exhaustive list but it's like things that I think are probably pretty critical. Like one is you need some kind of protocol decoding in that thing. You need to like find this header and the inflight display signal. You need to like pass GPG payloads. You need to probably do some state handling on top of that. So that would definitely be a complex part and there is some potential there to like construct invalid payloads which may affect the state of the system in some unintended way. Now the counter measure I would propose for that is A, keeping it as simple as possible. The nice thing is since it's in hardware we can kind of do that. We don't need to like configure a million registers in order to make some video input call on some system on chip working. We can just exactly put into this piece of like FPGA fabric what we need and nothing more. And also we have like some of that protocol handling running in like not really running but implemented in physical hardware circuits. And these are generally like you can't really like fuzz around with the state there but you can't really not or it will probably be harder than on a CPU to actually persistently modify the state in any useful way for an attacker. There's the such an engineering vector. Now, yeah, the thing is this would definitely be targeted as at like pretty capable people like not really like not really average users so like people like you. So I guess in the end social engineering will probably not be a terribly, terribly large important attack scenario since in my experience like people like sufficiently knowledgeable about computers somewhat decrease in their being susceptible to social engineering attacks. Physical compromise is obviously an issue. Like what happens if somebody can like open the hardware security model without it noticing? Yeah, well, the thing is I think we can not terribly like eliminate that but we can at least make it a little harder with this limited hardware security model stuff. I put an FPGA back on up there because it was kind of like a like highly published topic at least in like security research there. Now the thing is I don't think a FPGA back door and this instance is super realistic because I think it will be really hard to bake something into an FPGA that will actually provide any useful like compromise in that scenario. Logic flaws well obviously you can have like logic flaws within the device so I think we can do some stuff against that so the thing is that since we have we are implementing our own hardware there we can like do some more countermeasures than you can do purely in software. We can for example have the code in a physically read only memory so it cannot be modified no matter what. We can have like independent memories for different things like memory for stack and memory for heap and memory for code and like have lots of arrows if you try to do accesses across their boundaries. We can do some primitive separation of tasks into different CPUs like based crypto and application and rendering is I think like three major areas I can think of. We can do some hardware level access enforcement on places where we need to share resources for example in the FPGA implementation we will probably have a common DRAM external for all the pixel data and we but we can like securely separate that by like hardware level access enforcement so like the different components cannot write into their respective address spaces. We can't generally keep it simple so if it's like too complex it will be I think really hard to keep it secure but if we keep this super super simple at least compared to a full blown x86 platform I think we can actually keep the attack surface within the manageable area and actually order the thing to a meaningful extent. Like one thing I would like to note here is that for example for the CPUs one thing that would really lend itself to it would be the risk v project which are who are currently like actively working on a basically open entirely open source CPU that is pretty well specified, pretty well tested like there are even some faults to actually prove it that it works like logically proof the functioning of it and there's also some work on for example tech memory and other like hardware level security mechanisms there. Like another thing I would like to point out is that since all of these parts of the system are operating at a very low level we can just reset everything really frequently. It's not bulletproof but it can at least make attackers life's harder because if we like reset the entire state of the system like everything but the actual keys every frame or something or every time a new payload is received it will be much harder for an attacker to actually compromise the state and bring it to any new state that is useful to the attacker. It will not like prevent anything but it will at least like make the practical exploitation harder. Now considering this attack surface like what would be practical scenarios with this device in a laptop and with the same laptop without that device. So I just wrote down a couple of those and I made like little colorful check marks on how it would perform. Obviously this is not absolute. It like depends on the implementation and on the how you are particularly using it but I think as a general guidance this should perform quite well. So like in the lost device case for example if you don't have this kind of interceptor inside the device you can already get pretty secure solutions if you are using secure boot correctly if you are encrypting your hard disk if you are storing your GPG keys in some kind of secure memory and so on but it depends on the implementation and like with this interceptor device I think it will be a little easier to actually make sure that if you lose the device you like neither of the keys themselves nor any plain text can leak the device. Now second scenario is like unlocked device stone. So somebody comes and takes your laptop away while you are working at it and you don't have time to lock the screen. Now the thing is fundamentally you will have the same problem if you kind of unlock this interceptor device over a period of time. But the thing is that since you only need this interceptor device in order to decrypt and encrypt emails and you don't do that all the time you can have it locked most of the time that your screen is unlocked. Also since this interceptor device like hardware we are building ourselves we can include additional security features that are not offered off the shelf laptops. For example we could have like some capacitive sensor in the palm rest that is detecting when like your hands are removed from it and that will just wipe the keys in that case. And then you need to reenter your password. That would be too annoying for something that would lock the screen but like for wiping like clearing a GPG key ring for example that might be a adequate like trade off. Now targeted attack or what I described as targeted attack is basically somebody with a lot of money really doesn't like you. So for example somebody specifically wants your email. Now without an interceptor you really have a problem because even if you're using like cubes or S and you're encrypting everything with the GPG in the end you have a off the shelf Linux operating system with Xen hypervisor running on a X86 platform with lots of proprietary firmware and many places there are handling plain text data and also this system the entire stack is so complex that I think it's practically guaranteed for every part of it that there will be flaws found and we see that all the time. For example Apple's iPhone has a really good security architecture but it's still pretty complex and people are getting around it. Also for example the Xen hypervisor which is underlying Q-SOS which is the primary isolation feature there. That thing is also highly regarded still there have been flaws found in it because it is a huge complex thing and I think we can lower that attack surface by basically concentrating it on this interceptor device which really only presents very simple interfaces to the outside world which I think we might be which I think might be easier to actually audit. Now not this failure scenario for like both things like a laptop with or without this device would be like you're bugged so like somebody places a camera behind you in your apartment or something because like since you need plain text data coming out of your screen at your eyes since we don't have crypto glasses like anybody in the same room will be able to kind of film that like even if you're using like one of these privacy filter things at the right angle people will be able to read it so in that scenario obviously any mechanism that still uses a display will fail. You may like use some kind of Snowden cloak or something but yeah I think that would be really hard. Physical access so like somebody has temporarily physical access to your device like during shipping or at a border checkpoint in that case I think it depends in any instance because without interceptor well maybe they can like install a root kids exchange your boot flash or something with the interceptor well maybe they can place an interceptor in front of the interceptor or something you know like there's really nothing you can do there if you don't even know whether you're getting the same laptop back or whether it's like a I don't know some SIM device which is just like which includes like monitoring for CPU and for keyboard and display. So I think in that in that case like we can make it a little bit harder by having like these hardware security modules features to like detect when the case is open so we can like proofs provide some incentive against like opening the case and messing around in the system there but it won't be bulletproof. Like total communications surveillance as it is happening in practice. I guess that's like that any system is basically secure in the way that we are leaking metadata. We are leaking metadata it's really hard to avoid that. The difference is with the interceptor you're also just leaking metadata instead of plain text to your operating system but that might not be like for communication surveillance that's irrelevant. Now what needs to be considered of course is that by placing an additional device in your laptop you are actually from a whole system point of view you are increasing attack surface and if that device like this interceptor would be compromised that would be totally game over cause it has access to your two most privileged things in the laptop like the display output and the keyboard input. So basically any secrets you communicate to your computer are there on these buses. So I think that we need to be really careful implementing this in order to make this an actual security threat instead of a security feature. Major tasks I have like I think we have we need to solve in order to actually make this practical are basically disassembling and reassembling this embedded display port and LVDS stuff because as it turns out it's not easy. If you have some expertise in that I'm really interested in feedback and suggestions there. I think rendering unicode will be hard. I mean we want people to actually be able to communicate in any number of languages with this device and actually supporting unicode font rendering on a embedded thing and that in a secure way. I don't think that would be trivial. Then we need to define this packet payload format in a secure way so like it cannot it doesn't provide too much complexity. We need to get the keyboard path through semantics right so then accidentally input sensitive data into your host machine without you really noticing it. We need to split like this and do this entire privilege separation like CryptoCroprocessor was application processor in some sensible way that we actually gain something by it and we don't have like a huge amount of code running in the CryptoCroprocessor for example. And I think if we want to implement this with a smart card as a key store like long term key storage it will probably also be hard to get that right because I don't think as a private citizen you can just go out there buy a smart card see what software development kit and write your own RSA 4096 like GPG key handling on the smart card. So we may need to figure something out there if we want to do that. Now, I don't know. I hope I could actually like I could make you interested in that idea if you have like any feedback, any suggestions, any ideas or like some expertise even in the relevant fields I'm really interested in feedback and help with this. I'm readable out like that email address the GPG key is below and this talk like the slides will be on the GitHub repository up there. So you can also just give feedback as by raising an issue there if you have something. Thank you for listening. Everybody who I haven't bought too hard I think we can do a question and answer session now. Yeah, thank you very much. That was enlightening. That takes us to the Q&A. There are two microphones set up here. Please form an orderly queue. I'll try to make sure that I realize who's first and we will just wait for the people filing out for a second, I think, because we got enough time, don't we? I think so. Great. Yeah, 10 minutes. Cue and answer. I think they'll pick me. Okay, we start at that mic and then ping pong to the room. Yeah, so as far as I understand the idea of the interceptor on the keyboard side is that plain text goes in, ciphertext comes out. All right, so I would like to edit all of my emails in Emacs or Wim with all of the fancy packages I found online. Obviously, we will need to compromise like some amount of usability there, except if you want like a full Emacs instance running in that intercept. I mean, technically it's possible. Yeah, yeah. You can like in these FPGAs, you can actually like the development system I'm using, you can actually run a full Linux in there, but I don't think you would want that because it would purse like some attack surface, I think. Yeah. More generally, the benefits of having your applications and software rather than hardware is that you can update them. Also, new crypto protocols, better encodings than new TF8. All of that is lost in your design, yes? Or most of it. Could you maybe make the monitors a little louder? I can't barely understand them. So... Shall I repeat? Shall I repeat the question? Or you got it? So like, updateability of the firmware. Yeah, yeah. You lose the benefits. I mean, the thing is you can, like, if it is implemented in an FPGA and not in an ASIC, you can actually easily update it. I think it is very sensible to make it as hard as possible to actually do that in practice. Like, you need to open the hardware security module and like flip some switch or place a jumper or something as to make it impossible to do that via a software-only attack, for example. And like, if you do that, well, yeah, you could update it. Okay, yeah. Okay, how do you actually know that what you're seeing is coming from the interceptor and how do you know that when you're typing, it's actually being intercepted and not going to the Intel hardware? Nice question. So, I don't actually know that what I'm seeing. Oh, okay, well, it depends. Like, I cannot absolutely know it because somebody could have placed like an interceptor between me and the interceptor. Now, like, I think the other way to talk about it is like, what I want to have is like, I don't want a application on my operating system being able to spoof interceptor output. I think one way to make that is to have the, to have a, like, the easiest way to implement that practice would be to have just the interceptor always in full screen and use one of the physical LEDs on the keyboard of a ThinkPad in order to like, signify whether input and output is coming from and going into the interceptor or from the underlying device. So you have like the, you could repurpose the MICMUTE LED or the MUTE LED for that. Other possibilities would be like, for the output case to like, draw a border around the screen and if it's red, it means like, Linux talking, if it's green, it means like interceptor talking. For the input, basically the same thing, you could have some like, visual clue. I think the input case will be pretty hard, like in order to get that right, will be pretty hard because we don't want you to accidentally input a password. And if you input a password often, you don't necessarily care that much about the screen while you're looking, while you're typing it. So I think a visual clue might even be not enough in that case. Well, I guess we finally found a good use for the ThinkVantage button. Well, except that one can be controlled from the CPU. Yeah, somebody mapped it to NUDE-NUDE on, okay, anyway, the signal angel, the internet is talking to us. Yeah, so the first question is, would the interceptor work in a way KVM does? So instead of adding a chip to the mainboard, you put a box next to the computer into which you plug the keyboard and the display and the box just presents the encrypted input to the computer. Definitely, like in a desktop use case, that would definitely be how I would implement it. In the laptop use case, obviously it's tempting to actually include it inside the actual case. For example, in X230, we could just replace the hard disk with a smaller SSD and use the free space there because it's already quite close to the display and keyboard connections. Okay. Hi, I really like the creative idea, but I was wondering how you feel about, I mean, you touched upon the open, the risk CPU implementation that they are doing. Risk V, not open risk. Sorry? Risk V. Risk V, yeah. Okay, I'm not sure about the university in England where they are doing research on an open architecture. Yeah. If you go into towards that direction, how do you feel about having a system on its own that you can trust instead of having an implementation in a regular machine? I think that would be really interesting, like that is one of the more interesting points of actually doing this. I mean, the thing is we can still, you can still use all the amenities of your operating system with like compass, wobbly windows and like windows arrow glass depending on the operating system, but you also get like this trusted, this trust aspect from the CPU implemented in the FPGA. So like for a start, I would definitely keep the firmware running inside it as simple as possible in order to avoid like making a crash and like avoid like adding a attack surface there. But yeah, of course, like long-term, you might want to add more functionality into it with sufficient isolation of course. Okay, thank you. Okay, the internet is added again. Thanks, just a short question. What about USB keyboards? Yeah, well, depends. Like if you have some means of plugging that into the interceptor, no issue. Like USB is still simple enough that you could implement it with some effort on FPGA like both host and device ports. In the laptop use case, I don't think it will be that easy because you would need to intercept like all the USB ports. I understand that the whole point of a device like this is to bring about something like the crypto goggles you mentioned at the beginning, but in a more limited fashion. However, it does seem like there's an opportunity for the solution that you've proposed to have integration points for operating systems like G-Node and CubeSOS and so on and so forth. Do you think that there's another angle? Is this a different thing that you can isolate? Or is this the only way in which it can be done? And if it's, this is the only way in which it can be done. Are there things that you propose that should be done? Are there any integration points for operating systems like that?  For example, you could also like for a much, like from a implementation point of view, much simpler architecture. You could just have a device plugged into your USB port, which has a display and a keyboard, like separate to your regular displaying keyboard. Like the only difference would be it would be a little less convenient to use. So I think there will be, there are many other ways to do it. I think the intercepting the actual display data thing is kind of interesting because it's pretty portable across platforms. As for integration points for like the operating system, especially something like CubeS, I think there's a lot of potential.  Think about like Anti-Evil made being integrated with the system that you're talking about. You made for a pretty resistant system that cannot be spoofed. Yeah, I mean, you could also, for example, you could even like in case of CubeS, you could integrate some of that. I think you could actually integrate into the display manager in order to have like both CubeS and the interceptor cooperating. So like CubeS knows what the interceptor is doing and can actually, for example, you could maybe handle the inputting your password into the wrong device. The thing there, okay, whatever. That was my screensaver. Okay, there's another one from the internet. Yeah, what about ciphertext that are longer than what would fit on my screen? Nice question. Like the same thing goes by the way for plaintext that is longer than what fits on the screen. Like I didn't touch upon that too much, but basically what you would do is you would spread it across different frames. Since the actual pixel bandwidth, the bandwidth for pixel data on a, like even on a low resolution display, like the shitty display of that laptop is like already in the gigabit per second range. So no matter how long your emails are or what amount of ciphertext you are outputting there, you will be able to like stuff it into consecutive frames. You will have some like processing limitations on the FPGA because it's like truly clocked very slowly and you will have some like memory limitations also. But like I think for a general system at the cost of a slightly higher complexity of the protocol handling in the interceptor, this can be solved. And for the output case, like you just scroll. You just need to wire like the up and down arrows or screen up and screen down keys to like the renderer or something. Thank you. Okay, so your main argument was that your system is less complex and therefore less attackable. But then I wonder why you make the effort of intercepting your LVDS traffic. Like from my experience, I guess that about 90% of the complexity of that system will be on intercepting the display data. So if you want to have something plain and simple and with a low attack surface, why don't you suggest an industry standard four times 20 LCD display and just intercept the keyboard line. This would be doable in like one or two days and you could even let it run on an STM32 and no need for an FPGA. But that would be boring, no. Seriously, I think doing the live interception of display data has a serious usability advantage in that you can, like in my laptop use case, I have this, the laptop looks exactly the same as before except for providing me this higher assurance for like certain operations. Like with any kind of external device, I would need to carry that around, need to tether it and then like use two different keyboards and two different displays for different things. And like, I think for serious email reading, at some point you would want like a serious display on that thing. And on that, at that point, it gets just as complicated. Also, considering the development time, yes, intercepting LVDS and embedded display port is a lot of work, but that's not because it's super complex but because it needs to be tuned pretty exactly because you need to take care of a lot of details there, like face alignment and stuff like that. Okay, thanks. Next question. How exactly do you think there's going to be something on the CPU sending your text away or whatever doing with it? And if there would be something like that, why do you think it would pass something like wire shark listening on the network?  Like if it's any good, it will probably be using like some Stegonographic techniques in order to hide its own traffic inside your usual traffic so you can't easily detect it. Okay, thank you. Okay, so I understood your proposal is also for writing email and with that, so if you're hitting on a key, it's doing something, encoding it, encrypting it and putting it in a buffer for the operating system to pick it up, to place it in the application buffer, right? So if that is correct, what kind of encryption do you plan to do on the actual key pressing? So if it's your own public key, how do you actually send an encrypted email to somebody else with their public key? That highly depends on the implementation. Like my first approach would be to try to extend Enigmail. So if you open an email, you're typing like the recipient in plain text because that is metadata anyway and then Enigmail will use like the same payload format in order to provide the public key of the recipient ideally with the signature of your own private key to the interceptor. So that thing can actually then display the key, like the key ID of the recipient as validated by your own signature with the key that in its private, with the private key that is only contained within the interceptor. It's a little awkward, but I suppose it can be done. Another way would be to do the entire key management in the interceptor. So you kind of press a key combination and a menu pops up and you then like choose the recipient's email address by typing it in there. Okay, we got one time for one more question. Not really a question. I just like, I think you have found a good use case for the touch bar and MacBook Pro. Well, it's good for new too. One more serious question. I missed the beginning of the talk, so is this already like ready? Do you have a prototype ready? I wish. Okay, so at this point, I have two small Raspberry Pi zeros in my laptop and I'm able to close it perfectly. And so this is what I'm trying to do exactly what you're doing, but I'm planning on having one control, or you know, control the keyboard and then one control the network so that I can segregate those out. So have you thought about, you know, maybe something like that? Yeah, I mean the thing is, I would like to avoid like arm socks, like system on a chips because all of them like Broadcom, Qualcomm, Texas Instruments, I've seen some of the insights of them and it's not pretty. Like it's super complex and I don't think they're any easier to secure than the Linux year running. Like Qualcomm, for example, making arm socks just had like several serious breaches of their hypervisor and trust zone security in the last months. So I think we can basically rule out like any modern arm sock. Well, thanks everybody.


Monkeypox is a viral disease caused by orthopoxviruses, which can be transmitted from animals to humans. It is characterized by fever, headache, muscle aches and rash. The mortality rate ranges from 10% to 20%, with higher rates seen in children. The disease is endemic in the Democratic Republic of the Congo, but it has also been reported in other African countries. In the United States, it was first reported in 2003 when it was imported from Africa. Recent reports suggest that the disease may be more widespread than previously thought. There is a lack of reliable data regarding its incidence and prevalence, making it difficult to assess the risk of transmission and develop effective control measures. This article was authored by Nikola Sklonowska and Mark van Ransst.


Well, I'd like to welcome everybody to our May food for thought presented by the Dutton Institute. Thank you. We have a nice group here at Dutton and we have several of you joining us online too. So we're thankful that we have so many people participating. We're happy today to have Brett Fixler with us. He's an instructional designer with IT Learning and Development. He has lots and lots of experience and he's going to be helping all of us today, talking about how to work with our Word and PowerPoint files to ensure that they are accessible. So I'll turn it over to Brett. Thank you very much. Thanks and thanks everyone for having me today. I'm happy to be here and I'm happy to talk about this. So as was mentioned, I work for IQ Learning and Development, which used to be called ITS Training Services. We were bringing ourselves about a year ago and I like the new name a lot better. We provide a lot of different types of training on most of the centrally supported tools here at Penn State, I2, Canvas, sites at Penn State, that sort of thing. More recently, Office 365, that's been our big push for the last six months or so. So but I got involved with the accessibility things that were going on at Penn State way back when I still worked for TLT and there was a committee that was formed to address accessibility issues at Penn State. I've been involved with them, they're called the ATI, Accessible Technology and Information Committee. I've been involved with them ever since and through osmosis I've picked up a lot of stuff about accessibility. So I'm happy to be here today and I'm happy to talk about it. Yes, there's our objectives. I'm not going to read them to you and I don't expect you to read them. I'm just going to cover some of what they call the basic blockers, which are the most common things that you need to look for in a word or a PowerPoint document to do what we call optimize for accessibility. You can never make anything perfectly accessible, 100% accessible. It's a goal that you strive for. I'll give you an example of that. There was a web page. This was probably about a year ago. There was a web page that somebody wrote and said, I ran such and such a checker on it and it determined that it was inaccessible to do this color contrast. So the API community checked it out and it turned out it was like one in 32,000 people that have an issue with this page. And so the question was, what do we do? Well, they did, they changed it, they tweaked the colors a little bit. But there's always that, there's always that tension between what can I do? What should I do? What must I do to ensure that things are as optimized as possible for accessibility? Now, I'm sure all of you here are working with materials that go out to students and so on and so forth. So you can look at it two different ways. You can say, I can wait till I get a request for accommodation and then scramble to get my content fixed and all good. And good luck with that because students don't have to request accommodations till very late in the semester. So you can really be scrambling or you can be proactive and get it into as part of your workflow. I'm creating this document and this is part of my workflow now. I'm going to make sure that the tables are set correctly. I'm going to make sure that the images have alt text or alternative text. And you can do all that kind of stuff. And it's a little bit of work. It's not hard work, but once you get used to it, it becomes part of your work process. And over time, you'll figure out, oh, for a 10-page document, it's going to take the X number of minutes to do that. You can work that out for those of you that are trying to track or to try to figure out how much it's going to take me to do this stuff. You can add that to your workflow. You can put it right into the timelines. So I want to show you, since this isn't hands-on, normally when you do hands-on session, I would have you get this accessibility word and PowerPoint handout. And I would still recommend that you go here and get this.  Don't even have to take anything in. But then once you're there, if you filter the type of training. Let's see if I can get this to scroll down here. You see if you just filter it and check accessibility. This is the easy flag configure to tell you to get to this.  But this is a handout. And this is a handout, Mac folks, sorry. This is a handout specific to PC. Most of the things are applicable to the Mac. It's just like different buttons, your question. But a lot of the things that I'm going to talk about today, rather than known from show, you step by step how you do it. I'll talk about it and maybe mention some of the things that you need to know. But it's in this document. So you can have this document and keep it. And it seems to be relatively stable in terms that we put this together for Word and PowerPoint 2013 and 2016 came along. There was a very minor thing to do to change it. So in terms of functionality from the accessibility standpoint and how you optimize your documents hasn't changed a whole lot, which is good. So anyway, I want to point that out to you. ITLD.PSU.edu, do a search, filter by accessibility. And it should be the first thing that comes up here. Okay. So let's go take a look. And I'm not sure whether this is going to play or not. It did have a shared computer sound. So let's hope. Okay. I do want to bounce up. I want to show you what a screen reader sounds like for those of you who have never heard it. So people with low vision and or blind will use a screen reader to read pages aloud. And it has a robotic voice. That part hasn't changed over the years. But let me see if I can get this thing fired up. And if I can't, maybe we can just copy that and put it in the chat to listen to it later. Okay. Okay.  But where to go? Don't worry, we've created the ultimate selection of vacation spots. So all you have to do is pack a swimsuit and dive in. Maui, graphic description, colon photo of a sunset over the ocean through the trees. 4.19 inches wide by 2.50 inches high. There's a reason Maui is famous for its speeches M-dash. They really are spectacular when you're not just baskin. So if you got to the point where you could actually hear the alt description of the image and I don't really like that they had to describe the actual size of it, I think that's. But it's okay. So anyway, that's what it's like. So a couple of things. When I first heard a screen reader, I thought I'm going to make an eye checkup. And it's very interesting because I worked years and years ago, when I worked for the Institute for the Study of Adult Literacy here in the College of In, we used a speech synthesizer because we're open for literate adults that have no English reading skills whatsoever. And it sounds exactly, this was back in like the early 80s. It sounds exactly the same. So what's even more interesting is that people that use screen readers all the time, they'll double speed it. And it's just going like this. And they understand it. So you do get used to the speech. So I'll just throw this out there. This is the audience participation part of the session here. What does accessibility mean to you? And I would encourage the folks online to go ahead and either activate their mics or take a chat. It's not a trick question. There's no, there's no radar on here. I always think of the, the people you've already met, the people that have visual disabilities, hearing disability, you know, can everybody be able to utilize the information that we put online the same way? Sure. And I think that's the important point. Everyone can get to it the same way. Anyone else have any other thoughts? I think it, I just came back from Europe for a couple of weeks and there, a lot of things are not accessible to people. Lots of stairs, lots of curves, the hallways in the bathrooms are like inches wide. And I think of accessibility and allowing everyone, no matter what their circumstance to be able to have access to whatever it might be, the bathroom, text, reading, sound, I don't know how that pertains to roof climbing or, you know, or skydiving or, you know, I don't know how, how far you take it. Because, you know, I don't ever expect to be able to climb Mount Everest. But I know it's tough. I don't know. Yeah, that's the part I struggle with with accessibility. Yeah. I, this was probably 20 some years ago and I did it, I did a session for I'm trying to think of the group, but anyway, it's down in Philadelphia. And it was on different authoring tools at the time. So we had like four different authoring tools back then as they are now, we're very highly visual. And I had a gentleman that, you know, wrote to me and said, I'm blind. Can I attend the session? I'm sure you could attend the session, but it was, I think an epic fail for him and for me because there was just no way I could restructure the event and the time that I had to try to accommodate his needs. And even if I could try and describe what's going on in the editor was almost impossible. So, but it is tough. And you do try to accommodate all those different people. And did anybody online comment? No. Okay. So what do you think about this in terms of accessibility? Is it accessible and why? There is a removed. So you can see your way to do that. We've got the different type of pavement there, the runway strips, so you know, I guess your approach and the curb. So that's, it looks like it's me. Yeah, but it's those raised bumps. So if you're using a cane, you can tap also. Seeing eye dogs or assistant dogs are trained to know that that's a thing and they need to stop and that sort of thing. How about person that can can see here and walk? Good for everyone. Exactly. That's the point here. Yeah. And this was mentioned, the idea is when we're trying to optimize for accessible, you're not trying to do something special.  That's the goal. So here's a couple of the different common accommodations that people usually look at. Visual is the one we always think of first. And in terms of accommodations for, whether it's a print, print it or a PowerPoint or on the web, you want to make sure you use headings and your styles. And we'll go into all this. You want to use alternative text on the images, which you heard that one. It's kind of invisible text behind the scene. So that when a screener comes to an image, it knows what it is. I was just going to say image and that's pretty much it. Using descriptive link text instead of click here. You actually have a link that, you know, when you read it, visit the Penn State website, it would be a good description. And then you have form field identifiers for tables and that sort of thing. For people with low vision contrast and longevity is always important. And that is to be kept in mind. Hearing closed captioning things from mobility to keyboard shortcuts are always important. And then for, you know, cognitive reading and learning accommodations, things like simple interface, extended time and so on. And by the way, the visual and hearing accommodations account for about 15% of what's out there. It's the cognitive reading and learning accommodations that people don't think about, but that's what 70% of the accommodations are all about. We don't even talk about those things. We still concentrate on the visual and hearing because that's easier to do. It's just, you know, hey, I need to add this alt text. I need to make sure this table is set properly. Done. A little bit harder with the cognitive stuff. So when you talk about individual, the preferred vernacular is a person with a disability. Try to avoid the words like hin cap, deficient, special needs, crazy wheelchair bound, that sort of thing. So it's just usually good to say, and don't say a disabled person, either say a person with a disability. So way back when we formed this ATI group, we talked about these things called common blockers, and I still think they're important to know. These are the things that you most often see that people haven't addressed, or people haven't addressed these things, I guess is a better way to phrase it. And it's, there they are, headings, link text, tables, alternative text for image, and specific to PowerPoint slide content order. So for headings, I'm going to assume most of you are familiar with styles and use headings and the things you create, whether it's in Word or whether it's in a web page or whatever, you know, each one, each two, each three. So screen readers will pick up on those headings, and they can actually pop up a list like this that you see here that will let them know, okay, the number one heading on this page is about the site, so maybe I should go there first. Quick links, you know, for instance, that might be on a web page where the links are up above the about the site header. And that's fine, it's just, this gives them an idea, what are the top level headings, what are the second level headings, and so on and so forth. It's recommended that you only use each one for the main title of a document, or on a web page it's only used once, and a lot of times the tools we have, snarf that each one and use it in terms of the page title, you can even set something to each one, it starts at each two, which is fine. Each two, use each two for all main headings, then each three, each four, as long as possible. This allows the screen readers to have a hierarchy and then can slice and dice the pages up. And most importantly then, the people using the screen readers can navigate the page quicker and more efficiently. That's what headings are all about. So, what do you think this is a good one, and I was like, where do you think the headings are on this page? This is Penn State. It shows up three different ways. Okay, so let's start. What do you think is each one heading on this page? The lower this is Penn State. The one under the pictures? No. The one right under the pictures. Right under the pictures. Yeah. How about each twos? The one in the lavender line. Yeah. I would say that's probably correct. And then each threes. There's an each threes there. See also. Could be, could be. So imagine this page is, and I'm not saying this page is good, better or ugly. This page, when we look at it visually, we can grasp it immediately and we can jump in 20. But pages like this that are visually complex with different columns and things like that, you really have to think through, if I were to close my eyes and have this read aloud to me, what's the first thing I'd want to hear? What's the second thing and so on and so forth? And that's kind of a rule of thumb. Now, for simpler pages, like most Word documents, pretty easy. You have a title on the down title page, and that's each one. And then you have your main headers and those are which twos. It flows straight down on web pages. You're bouncing from side to side and so on and so forth. So it's a little bit tougher. So in terms of Microsoft Word, there is a building table of contents generator and it goes into great detail in that handout that I pointed out about how to set it. I just want to point out a few things that seem kind of weird.  You're going to modify it and you're going to uncheck that each one because each one should be the title of the document and you generally don't want the title of the document to appear in your table of contents. And then you make each two the first level, each three the second level and so forth. When you do that, if you use the building table of contents generator, screen readers know how to read that table of contents and it's greatly facilitates individuals jumping from page to page to page. And in fact, if you set the table of contents up and say, hey, I want these to be hyperlinks, so I want someone to go to the table of contents and say, okay, page 30 is section five, click. Works great for people that are using screen readers as well. So keep that in mind. Like I said, in the hands-on session, we actually go and build this thing but it takes about 10 minutes. So I'm not going to do that today. But it is detailed in the handout. So as far as formatting text, the good idea is to keep it 11-point or bigger if you can. Now that's on a Microsoft Word document. That's not as big a deal anymore because you can zoom the screen in and out.  But font color, don't use it for meaning. And this is true for people that are low vision and people that have excellent vision because different colors mean different things in different cultures. And what you think might be red is danger. Korean don't think that means heavy. So you got to try not to use it to impart meaning. It's okay for aesthetics but not for meaning. You also should have a strong contrast between the foreground and background. You know, for example, right here, we have black text on a white background. That's probably about as good as you can get. It is recommended that you use the strong style of Microsoft Word as opposed to bolding. That can be a real pain. However, you can, if you do an advanced search and replace on a document that already has everything bolded, you can replace bold with the strong style throughout the document with one file script. So it's kind of nice to know. It takes a little bit to get used to to use that strong style, but that's just a recommendation. It doesn't kill the screen reader, but it does read it a lot a little bit better. So try to avoid italics. I'll show you examples of all these things. All caps drop caps in WordArt. You should avoid them because the screen reader doesn't read them because they're graphics. But if you have to use it, take a screenshot of it and then add it back into the document as an image and add the appropriate old text behind it. I know it's disgusting to do that, but that's what they recommend that you do. All caps. If it was an acronym or something, you'd have to be in all caps. Absolutely. It wouldn't read it? Absolutely. It'll read it. It'll read it, but there are some times where it will read each individual letter. So it's an acronym. That's exactly what you want. So you were like, all notes should be blah, blah, blah. It's like A, L, L, I see that. It could do that, yeah. So when you create your bullet in a number of lists, one of the common things people do is like, I don't like the space between the bullets, so I'm just going to add an extra return. Don't do that. Use the build in paragraph stuff to shrink or grow the space between because what happens is it will read something like unordered list begin, bullet, blah, blah, blah, unordered list end. Unordered list begin, bullet, blah, blah, blah, unordered, instead of unordered list begin, bullet, bullet, bullet, unordered list end. Makes sense? Yeah. Don't include critical information in the headers and footers because sometimes the readers don't pay that much. So we'll just go through these real quick. Bad and good example. So try to keep as much contrast between foreground and background as you can. So try again, try to avoid those drop caps and the word art. And again, if you have to use them or you want to use them, that's fine. Just take a snapshot of them, put them back in as a true graphic image and add the old text to them. What kind of, what would a good alt text example be of drop text? I would have it read exactly what is read there. Drop cap. That's what I put it for. For beta. For beta. Just drop cap. Yeah. I would have the alt text be word art example. So it reads it all out. So it's just assuming that you were only using drop cap or word art for books. Yeah. Okay. Yeah. So I said, you know, just the white space, don't add extra returns between the two list items. Yeah. So people, they have to choose to read the headers and footers. So you really shouldn't include important information. These are things like the page numbers and what we want to use it for. Not footnotes or that sort of thing. So let's talk a little bit about vague link experience. So here's a good one. We've all seen this. And screen readers can pull up a list of all the hyperlinks on a page. And if you have click here on the page 20 times, this is what you're going to see. So don't use click here. Try to use some other type of more descriptive links here. So they call that the information send and screen readers can jump to the link. So here's what it looks like with screen reader. If a screen reader person using a screen reader would pull up this list of links and, you know, have the screen reader allowed. That's what that would be. That's what might be on a typical page. What's read to them. So they're seeing click here, here, here, read more. Read more. They have no idea where that link is taking now. So try to avoid those. Try to, you know, try to minimize the use of HTTP colon slash, slash links. You can't always do that because if it is a document that is meant for printing, right, you have to include the full one. And some people will do that like say, please visit the Penn State homepage. And parentheses don't put the URL. There's no hard rule there. But, but just think about what you're doing. If it's a, if this is something that, you know, people are going to experience on the web. It's probably okay to not include the HTTP colon full address, but just have a link. So here, audience participation again. Pick one of those and give me a couple, a couple of, give me 30 seconds here and then we'll do some shout outs on how we could make this better. And for the folks that are online, it'd be great if you chime in too via chat. I probably just hyperlinked the whole assignment one instructions. I'd say that would be great. I'd say that would be better. Can you think of, can take it one step even further than that? I know this is totally out of context, but if you were to add something in between assignment one and instructions, what would you add? The lesson that it's coming from? Yeah, or maybe what assignment one is, you know, paper on such and such. So at least they know that. Anybody do the second point? I just hyperlinked a list of recommended books on accessibility. Great. How about the last one? Anyone take the last one? List of readings about captioning best practices. It seems long, I know, but it's, I'm big on making sure you know where you're going. Yeah, I think that's fine. How we get rid of the click here. Two and just have a, see a list of readings about captioning best practices. Excellent.  Anybody online? No? Okay. So in terms of visual elements, you want to avoid floating objects in Word. Most of the times when you, when you add a new image, or you copy and paste an image in it, it goes in line, which means, you know, if you put it in between two words, it goes in between theirs. And if you, you know, move the paragraph around the image moves with it. But you can set an image to float, which means it just, it's on a different layer. It's up above the text, you know, the text can, you know, the text around with the image stays there. Screen readers can bonkers with text. They have no idea when they're supposed to read it. They don't know where to, you know, it's shot. They have no clue. So try to avoid that. And most of the time you have to, it used to be that they would come in as floating images.  So I think you're okay for most of the time. And we use the alt text on cap in captions. So let's take a look at that. So if you ever had this experience where, for whatever reason, graphics weren't appearing on the web page or you haven't turned off or anything. So this is pretty much what people experience that are using screen readers. If they don't have alt text, they haven't out. So there, that's a highly visual image, but they have no clue what those different images are. There's just no, there's absolutely no way of looking at that to know. So alt text or alternative text, that's what's read to the viewer if an image is, is on the screen or it's was like you should add. There are some systems out there that will automatically add alt text when you upload an image. And it will just have the, it will be the image filing, which is probably worse than anything else. Cause it's like, you know, how you all see this image and they have like numbers in them and it's like, what the heck is that? No clue. I think about Twitter when you create your alt text, try to keep it to 125 characters or less. And you can do more with Twitter, but try to get 125, 140 characters or so. If you do more than that, that should go either immediately before immediately following the image in the body text that everyone can see and read. Try to describe the relevant parts, that should really be relevant parts of the image. Try to, try to describe the relevant parts of the image and don't go crazy like that one we heard where it said, the image is such and such and says long or such, who cares? You know, that's, that's irrelevant. Don't include that. Also, cause, you know, we're all in education. Think about what is the educational purpose of that image? Why is it there? And that's the important thing to highlight. If you have a gratuitous image that's just there to make it look pretty like a flower or something like that. You can put a single space in the alt text and the screeners will skip over again. They won't even acknowledge it exists. So, yeah. Just a single space. Yeah. A single space where? In the alt text field. Yeah. Yeah. So, as far as alt text, don't, don't include the credits there. Don't include snarky comments. Don't include details that everyone needs to say, put them in the body of the, of the, of the page itself. And all text is, there's kind of an art to writing it takes a little bit. So it's always good to have two or three people go back and forth on a little bit. But the bottom line is, if you're trying to describe something over the phone, how would you do it? That's a good rule of thumb. Isn't it also, you shouldn't say photo. You shouldn't say any job or photo while burning that kind of stuff. That's irrelevant. Yeah. Exactly. So it's any job, any job. Yeah. So here, what do you think is the best alt text? Well, it depends what's important. I mean, if you're teaching, is it made up or what they looked like? Good. Okay. Then you'd use sat six, but if it was like, if it was like an art design class or something like that or, or a media design class. I'd say four. Yeah. So imagine this is on a, a sales site where you can go purchase something. Yeah. Because that's why those images are there to let us know if they take those cards. Exactly. Exactly. Number one is what happens in a lot of, a lot of systems when you just upload the image. If that was the name of the image, it just throws it in there. I didn't tell you a darn thing. Number three is snarky. I like that. I thought about writing a spy novel where the spies were communicating via alt text in their images. That would be interesting. Yeah. So four is probably the best one. Five credit card logos or something. That doesn't really tell you anything. Okay. There's credit card logos, but why are they there? So good. And that's probably the one I would have done. That's what I would have done. Yeah. Right. I mean, just because that's what it is. Describing the image. Yeah. Yeah. Try to describe the image in the context of it. And why it's there. Why is it there? Yeah. So just take a minute here and take a look at this. So the text on the left there, that's the visible caption that's either below or right beside the image itself, not the alt text. What will alt text when you create for this image? And let's put it in context. Let's say that you are, you're in an art class that's, you know, investigating Chinese pain techniques over the ages. Okay. So, but what's up here? This is, this is the caption that appears forever long. Well, how would you describe that image with just the alt text? A group of birds are attempting to eat. Fruit that's on a tree. Okay. I don't know what specific bird that is. That's pretty good. Yeah. I mean, that gives at least gives people an idea of what the image is, what the artist was trying to impart in the image, which is, you know, the birds on the branch share with some fruit. Checking it out. Trying to think about eating. Great. Like I said, if we went around, if I, you know, when we do this in the class, actually, people ready to compare it and get ready. Yeah. Yeah. Okay. That's pretty good. I mean, people already done and compare it and get radically different things, but the law always happens is after you do that, you're like, I like the first part of yours and the third part of yours, and they put it together. And so I do hardly recommend, unless it's super simple images, that you'd run by at least one other person and say, Hey, what do you think of this? Or what would, what you were going blind and say, what alt text would you write? And then maybe hang a lot of a little bit. Okay. So that's that for that. And then for accessible tables, most Microsoft Word tables are okay to start with. They come in, they have table headers, but you do need to add a caption. And you shouldn't merge cells ever. I know we're all tempted to do that, but you shouldn't merge the cells. You can do very clever things with the coloring and things like that to make cells that are, don't have anything in them. You can do things like, for example, notice how I have dashes in those. That's what you're supposed to put into a cell that's technically empty. But let's say that the cell background was white, you could put a dash in there and make the dash white. So for people that can see it, it's an empty cell, but the screen readers, when they come to it, they see that dash and they know that dash is there and they'll skip over that cell. All columns, label all columns with table headers, so Microsoft Word, I haven't found a way to not do that, but for new versions of Word, it just, it does create table headers for them.  I think that's what we were talking about. Ian, so what's, what's missing from here in this table? Anything else? Yep, there's no caption. Okay, so that's just what you can see. So using this table, find the Welsh word for black. Got it? Okay. Okay. Now, consider this for person with a visual impairment and this table hasn't been optimized yet. This is how it will be read. So that's why it's super, super important to make sure that you have table headers and you do a few other things for it. So now the table headers are used. Find the Welsh word for white. Again, not too hard for us, but look how the, look how the screen reader is going to read the black and white rows there. Makes a lot nicer, doesn't it? You know, it's red as if you didn't need a table. And in fact, some people will tell you if you don't need to use a table, if you can do it presented in an alternative form, like a bullet list or something like that, don't use a table. That's the recommendation. I mean, I like tables and sometimes I think they're just super useful, but if you can do it without a table, great. If you are going to use a table, make sure that you do have the table headers set and a couple of other things that I showed you and adding captions.  So what's wrong with this table? No headers. Yep. Tight on the caption. Yep. So there's some sorts of stuff going on about that. What does that look familiar? Right? Yeah. That's why I put it in here. I don't like that all the time. So videos should be captioned. I think that's just, that's the basic rule of thumb. And so I've been doing the office to 65 stuff there. There is. First of all, I know that we're doing work on counter and that's coming. I don't know when you can hear it from it, but we also have Microsoft stream now, which is part of the 365 project. And streams pretty cool in that it on. So the bad thing about stream is that it's only an intranet solution. People outside of Penn State will not be able to do this and what we're destroying. You can't get around that. But the neat thing is it does auto captioning and it does a pretty decent job. If you throw something up there and ask it to auto caption it, it will throw up the captioning list and you can go and add it in. So maybe something to think about in the future. And then ideally, bringing the outline from word of PowerPoint. Nobody does that. That's the ideal. But I put it in there because it's recommended. Do add a presentation transcript to the slide notes pain. So whatever you were, if you were to present this live and whatever you're going to read aloud, put that in the presentation transcript because the screen wears will read that part aloud. You know, unless you put video in the caption and that kind of stuff. Do use content placeholders like the built in stuff to insert charts, graphics and text, don't copy and paste stuff in. They tell you how to do that. You're supposed to use a content placeholder and add the image or whatever into the content placeholders. Those are just rock, rock pasting. Do create the slide masters if you need them. And I do want to show you a couple of things. I'll show you some of the stuff I talked about, but I want to show you the slideshow. I'm going to show you the selection of visibility pain. To work content on a slide because that's something people, unless you've seen it, you're like, all right, I want to go into that. I don't think we're going to all. It's a horrible slide way too much stuff on it, but try to avoid anything that's like automated, on the slide, transmission, transition transitions, complex stuff. So, you know, those texture backgrounds or red and green stuff. Yeah. Okay. So, let me just go one more slide here. Yeah. Okay. Yeah. I'm going to bounce out here because I want to go out to a PowerPoint here. Yeah. Let's just go into the PowerPoint. I was just showing you. You know, I'm going to go ahead and show you the slideshow. Let's just go into the PowerPoint. I was just showing you. Let's take a look here. Make sure I can. Here. So, I want to show you how you can arrange the stuff on the slide in the correct order.  The way down at the bottom is the thing called selection pain. If you don't remember that, I can always take you to help selection pain. I'll show it to you. But what this is doing here, this brings up this little pain here. And this is showing me, and this is a reverse order. So the thing in the bottom is actually red first. If I click on that, I can see what's red. Then that's second and that's third. Now that is indeed exactly what I want. But let's just act and click and drag these things around. Excuse me. So let's say for whatever reason, I wanted the title read first. I wanted whatever all text I attached that image read next. And then I wanted that text read last. That's how you do it. So it goes bottom up. And you can reorder things. And most of the time, if you're using default templates, the order is fine. But if you go and add like an extra thing in there, something like that, you might want to, for whatever reason, you might want to go in and make sure that it's reading in the correct order. What happens if you make a PDF of your PowerPoint? So we're going to talk about PDFs, but no, that's okay. The recommend, first of all, it's recommending WPDFs. That's crazy because I really use them. But the recommended process to do that is to optimize your Word document, or your PowerPoint document first, and then create the PDF out of that. And it will be better. It still won't be as good. What we started doing in our shop is when we have a document that's available, we'll create it in Word first, and we'll put that up on our site, and we'll say, this has been optimized for accessibility. Then we'll create the PDF, and we'll say, this one's optimized for printing. So that people can choose which one would they get to the site. I'm going to print this. Okay. Use the PDF. It's formatted exactly. You're not going to have to worry about headers bouncing or bleeding monitoring, any kind of stuff. Okay. Okay. So that's, I mean, that's basically what I'm going to show you with PowerPoint. Everything that I talked about was really for Word, but it was all for PowerPoint. This is the one unique thing in PowerPoint, is the slide order, and also creating new slide masters and using them, in case you want to create a three column slide master. It's better to do that and use the master that it is to just keep adding a column on it, two column slides. I just recommend that the readers pick up on it better. Is that because you can set the selection in the master and then it's just set for all of them. You don't have to kind of do it every single time. Yeah. So is there anything that we talked about that you want me to show you? Because I can go and, I mean, we have time. I wasn't sure I'd have enough time here, but I mean, I can show you stuff in Word as well to, you know, for example, I guess I could go and show you a table of contents. So. See here. Click there. Yeah. I believe it's under here. I can find it here. I haven't created anything here for a while. So. What the table of contents is. I've practiced this on my Mac this morning, but I want a PC. Can you just, is there a way to search for it? I'd like to know how to. Yeah. I feel like every update to the hired woman. There it is. Where it is. Yeah, it doesn't should be where it is. Yeah, it should. And it should be written here. So. Design. Sure. Sure. There it is. That's intuitive. That's real. Remember. So. All the way over here. Oh yeah. I'm having a hard time seeing it. Yeah. Sorry. Okay. So here's, here's what you would do here. Here and say, I'm going to be accustomed to your contents. And then let's say that, yeah, I like that because of the, you know, the look of it. That's funny. And anything like that. You get in here. Just. Take that out. Change this to a one. Three to a two. Two. To a three. Okay. Okay. And so that is actually creating table contents based on the styles that I've already added here. I added different heading levels down throughout the document. And the screen readers will read this. Correctly. And if you created this by hand, if you'd like typed executive Sunday, that's what it's going to read. So if you don't want to do that, the nice thing about this is for the table of contents, if you, you know, let's see you add something in proper style. You can always come in here and, you know, right click on this and update the update. Let's say update or update your table. And I'll just automatically update it for you. So it's a really, it can be a real time saver if you use it. And, you know, like I said, this is all based on the fact that I wouldn't be here.  And I mean these, all of these are all H two. And this wasn't each one, which I had styled according to, you know, the way that I wanted to style. Scroll down through here. And here's an interesting thing. This was brought in from Excel. And if you wanted to add alt text to this, which you should, if you click on inside or like that, this will highlight everything. And you can't really add the old text to it. You kind of, so for an image, you bring it from Excel like that. You kind of got to go out and find some blank space and click on it there. It'll highlight the whole thing. And then you can right click on it. I can insert a caption if I wanted to. And notice how word is pretty nice and it knows what the order is that your images are in the document.  Figure one is probably, you know, whatever that will do. Do that. I can always click here. And click on that. This is where you can check to see if it's floating or not. So it is in line with text, which is what you want. So, that's good. Let's see here. Finally. So if you go down on that very bottom choice, this is super intuitive, folks.  And that's where you actually have the alt text. I definitely, I'm glad we had time. I wanted to show you that. I wanted to say go on alt text, but you don't know how to do it. And oddly enough, you can put something in the title if you want to, but you don't really need to. Word will read what's in your description. That's where you should have the alt text. You don't have to. I mean, if you want to do overkill, you can put something in the title, but you can't read it. So in this case, I might put something in here, but this chart defines the most popular training sessions. And that's probably where I would leave that. And I would add some information underneath the chart that listed 9% to this, 10% to this. I would list that in the body of text. It takes a little bit more space, but you can't really do that in alt text because you'll have way too much. You just want to read it out well. Whereas if you put it underneath the image in this particular case, this is a pretty visually complex image. I had a lot of data in it. That's what I would do with that. Same for that one. This one is, again, go a bit great, click on it, format the picture, go here, and add your alt text. You can also do the same thing with the table here. So, by the way, don't ever use this draw table. I don't know why I've been told not to ever do that for accessibility purposes. So use this grid here. I'll create that. And then same thing, you can highlight the table. You can do the table properties. You can reserve caption, which is sure you can do table properties. And you can also add alt text for the table. You don't have to do that, but it's not a bad idea either if it's a pretty complex table. And the alt text for images in PowerPoint is pretty much the same as it is in Word, right? So if you throw a picture of PowerPoint, you can right click, format image, and click on the unintuitive icon. Everything's pretty much the same between the two of them, except for that ordering and what things are right on the slide. That to me is the main difference. Once in a while you need to create something that's not... We don't do that on a regular basis. We do add images in. So folks, I know we have about seven minutes. What questions do you have? And that's a lot to cover. Anyone online have any questions? That's great. I thought I knew the stuff, but I learned so many things. I'm going to seriously... I wish I'd known a couple of these things before I did my description, but... Did you take a little time? Did you have to make that accessible? You are given... The university has a template that you have to use. And I'm sure it's accessible. And it uses all the styles and so forth. What I didn't know was that it would have automatically numbered for 25 years. Really nice. And no one made me do all that. Any of my images. Interesting. So the tables would have been in compliance, any images wouldn't have. I know I didn't know to go add all tags. So for the PowerPoints, like that PowerPoint I just showed you, I didn't optimize that accessibility because it was for this group or something like that. Most of the time when we do that, it's if we know we're distributing it. Or if I'm going to present at some sort of conference and I know that they want the media, I'll take the time to optimize the documents for accessibility. So when you're uploaded there, there's no issues. But again, I've never gone to a conference where they've said, please make sure it's optimized. But I think it's kind of value added since we know that we should do it. We should do it. Well, those slides get distributed all over the world once they're out there. They get shared a lot. I think it's a good thing to do. What else you got, folks? Is there anything you've run into? I did have a question. We utilize a lot of charts and graphs relating to like US Census Bureau data over time and for like an image that we saw in the PowerPoint just above, I mean, oftentimes the actual individual numbers are not the items that we're trying to get across. We're trying to explain like the following chart highlights over time the different criteria and how it either population grows or certain statistics. Is that how you would provide all text more like a telephone description of it rather than just like providing data points essentially? Yeah, I think that would be good. And then in the body of the text here in that image, I would try to, since you say here's the trend, I would say this is what we're seeing with this trend. But you know what I mean. This is the analysis that we derive from this chart. Yeah, we're oftentimes bouncing it back and forth between faculty members. I think you highlighted an important part where it's like it's important to get feedback and like to work because what you write might be different than what I'm thinking of and how it all comes together. Yeah, it's tough.  It's almost a diversity issue where I look at the world a certain way so I'm going to describe something in a certain way and other people looking to say that I had no idea I didn't understand how you just described that and I would have described this one like, okay, I can kind of see that and then eventually arrive at a consensus that hopefully a broader audience will understand what you wrote. It's tough. Which is a terrible idea. Yes. We have challenges and quiz questions putting all text on because you're trying not to give the answer. So it's been in the describing the image a charter. Right. You're trying to Right, so you're trying to and then hopefully we're going to try to show. Yeah. So we try to just describe them as they were because that in the context of what you're doing makes perfect sense. Yeah. Yeah, it's all about the context and the changes are huge. Yeah, that's all you said. It's been an interesting time figuring all this stuff out and it's just now it's just part of my workflow if I know a document that's going outside of the shop and you're trying to document it.  It's one of us to have it. So, and that's where I hope we all get to because we don't want the National Federation of the Blind to be back on us ever again. That's the right thing to do. That's the right thing to do. Yeah. Well, thanks folks. I appreciate you having me. Thank you. It was fun. Yeah. It's a lot nicer than ours. Thank you. Thank you. I'll let that as is and you can do whatever you want. Okay. New top secret stuff. I appreciate it. Thank you. Anybody in the room, feel free to take some back to your office. Yeah. I appreciate it. Thank you. Thank you. Oh, yes. I'll take care of that for you.