University of Minnesota
Development of Secure Software Systems
index.php

CSci 4271 Lab 0

Because there isn't a lab section day during the first week of classes this semester, we aren't going to devote one of the in-person labs to practicing basic using-the-labs skills, but this page repeats the instructions that we have used for such a lab in some previous semesters, so you can try things out on your own. Since some of these suggestions are specifically about accessing resources from off campus: it makes some sense to try them from home, though for the parts about collaboration tools you might want to arrange the cooperation of another student. You can also ask questions or discuss any of this material on Piazza or at office hours.

  1. (Vole and SSH access.)

    You've probably already used Vole in previous CS classes, since it's usually the first recommended way to access CSE Labs computing resources remotely. But just in case you haven't, it's a remote-desktop login system which displays a Linux-based graphical interface inside a window in your web browser. The starting page with basic information and links about Vole is https://vole.cse.umn.edu/

    The graphical desktop features of Vole are going to be less important for a lot of the work we do, so it's also good to know about how you can make a terminal-only connection using SSH. Unix and Mac computers likely already have a command-line "ssh" program. If you're using Windows, CSE-IT's suggestions are to use the Windows Subsystem for Linux (WSL) or Windows Terminal which are both free of charge. There are also a large number of third party options.

    With SSH there's also a choice of what CSE Labs computer to connect to. There isn't a single large entry point maintained for SSH in the same way the Vole servers work. So our recommendation instead is that you randomly pick one of the Linux workstations in the room where our in-person labs are held. There's a predictable naming pattern; since the lab is 1-262 Keller Hall, the names of the machines all look like:

    csel-kh1262-XX.cselabs.umn.edu
    	
    where the XX is replaced by a two digit number between 01 and 28. If you're sitting in the lab, you might try connecting to the machine in front of you, or from it to the one next to you. If you're outside the lab, you can a computer number randomly to spread the load out across all the machines, like with the command:
    perl -e 'printf "%02d\n", 1 + int(rand(28))'
    

    As a combination of the two ideas mentioned above, CSE-IT has also arranged that you can make graphical connections to the lab machines in the same way you connect to Vole (the underlying technology is called FastX). Just put the host name mentioned in the previous paragraph into your web browser.

  2. (Forwarding individual X applications.)

    Another option that lies between having just a terminal with plain SSH and having a complete remote desktop with Vole/FastX is to view the GUI for a single application remotely using the SSH feature called "X forwarding". The X Window System here, or "X11", is the protocol that Unix systems commonly use for GUI applications. X forwarding is most convenient when your local machine is running Linux or another kind of Unix, because it's probably already running compatible X software. But X software also exists for MacOS and for Windows. CSE-IT's instructions can be found on this page, look for the drop-down labeled "Displaying Graphical Applications (X11 Forwarding)". A previous semester's TA also recommended some sets of instructions from StackExchange and New Mexico State.

  3. (Screen sharing on Zoom.)

    You've almost certainly had experience the last few years using Zoom for online classes or meetings. If you haven't already used the features of Zoom that let you share a view of a single window or your whole desktop with someone else you're meeting with, you might want test that out with a partner.

  4. (Terminal sharing with tmate.)

    Zoom screen sharing is view-only: you can see what someone else is doing but not do things for them. Sometimes that can be a good way of working; in pair programming terminology you'll hear people talk about one person "driving" at a time. But in other cases it can be convenient for multiple people to all be able to interact with programs at once. For command-line/terminal programs, the easiest solution we've found for doing this is a program called tmate, which works using a combination of tmux and SSH and public rendezvous servers. The web site is at https://tmate.io/ and on the CSE Labs machines it should already be installed as tmate.

    Try setting up a shared terminal session on one of the CSE Labs machines with the other people in your group an run some commands together.

  5. (Accessing library materials.)

    Some of the reading materials in this course will be ones that you'd have to pay to get access to as an independent person, but which are available without charge to the university community because the U Libraries have already paid for that access. If you're browsing from an on-campus computer (e.g., Vole, in a lab, or on the eduroam wireless), the free access will usually just work automatically, but not if you're off the campus network.

    A general purpose tool you can use to make your network connection from off campus look like an on-campus one is a VPN. Information about the campus VPN is available here. But the VPN can be a bit complicated to install and use. So we recommend a more specialized service instead for this purpose.

    This service is a proxy that the libraries run specifically just for accessing library resources over the web. You switch to using the proxy by putting the following prefix in front of the URL you want to access:

    http://login.ezproxy.lib.umn.edu/login?url=
    	
    That's a bit of a pain to type every time, though. In many web browsers you can set this up as what's called a bookmarklet, so that transforming the URL is as easy as choosing a menu entry. The libraries' information about how to do this is here.

    Next time you're off campus, try one of the methods for accessing libraries content out by downloading a PDF for this paper. (This paper isn't an assigned reading, but it is relevant to security.)

  6. (Computer science Q & A with large language models.)

    If you haven't already tried asking large language models (tools like ChatGPT) questions about computer science, we recommend you try a few. In order to get a sense of what these AI systems are good or bad at, it's best to ask questions that are relatively challenging, but where you can reasonably evaluate the correctness of the answers. It may be too early for you to have many questions about computer security, but for instance you might try asking questions related to C programming or material from CSci 2021.

    In a situation like this where you're asking a modest number of non-sensitive questions, it's easiest to use one of the free-of-charge LLMs whose chat interfaces are available on the web. ChatGPT is the best known, and their basic version is free for limited usage, and Claude is competing LLM that it is currently in free beta for the US and UK. Both of these may require telephone verification when you first create an account. Google's Bard is not enabled under UMN Google accounts, but you should be able to use it if you have a separate Google account, like one associated with a non-UMN GMail address. Microsoft's Bing search engine now also has AI features, though it's mostly accessible through other Microsoft applications so it's most convenient on Windows.

    You can also run large language models directly on a local device, though these are typically slower and less powerful than the ones hosted in the cloud by large companies. One easy way to get started is the GUI tool GPT4All. Because even the compressed models are a large download, we don't suggest trying to install it on the lab machines.

    If you get any answers in your AI testing that are interesting, either because they are very insightful, or because they are amusingly wrong, consider sharing them in the "ai_q&a" folder on Piazza.

  7. (More things to try.)

    If you found everything above easy enough, here are some brief notes on further things you can look into:

    • Another thing you'll want to be able to do when using the CSE Labs machines over a terminal interface is to edit files. The two most popular families of Linux text editors are named Emacs and VI. If you want to start learning about Emacs, type the command emacs -nw at a terminal and look for the link to the tutorial. For VI, type the command vimtutor at a terminal.
    • Another option for simulating the CSE Labs experience on your own machine is to set up a virtual machine. CSE-IT's workstations are currently based on Ubuntu 22.04, with a pretty large number of packages beyond the default ones installed. We don't know of a version of a script to install all the extra packages that are in use on this version. But you can install packages as you notice a need for them, and copy other software under /soft or in the course web directory to the corresponding locations on your VM to maximize the chance of them working.