What Is Bistro?
Bistro is a scalable and secure system for uploading data through the Internet. It is under development at the University of Southern California under the direction of Professor Leana Golubchik.
Bistro uses a client-sever architecture. The purpose of this document is to describe how the client submission software (bsubmit) works with the Bistro server.
The Bistro Server
One of the features we use in Bistro for programming assignment submissions is that the Bistro serve can give secure timestamps. The timestamps a Bistro server issues is secure because it is digitally signed by the Bistro server and this digital signature cannot be forged and can be digitally verified.
The Client Submission Software
The client submission software (bsubmit) uses various cryptographics techniques in submitting a piece of data (i.e., a programming assignment submission) to a Bistro server. It does this in the following steps.
~csci551b/bin/bsubmit command [OPTIONS]where command can be either config, upload, or records.
Currently, the only configurable parameter is the user's e-mail address. If you like all notifications to be e-mailed to email@example.com, you can configure bsubmit to remember your e-mail address by running:
~csci551b/bin/bsubmit config -set firstname.lastname@example.orgFor the upload command, possible options are:
-event event_id -file file_to_upload -email your_email_addressThe event_id is an identifier for a upload event; it is usually a long string of alphanumeric characters. The file_to_upload is usually a .tar.gz file which is what you are submitting to the server. You can override the e-mail address you have specified with the config command previously using the -email option.
For the records command, the only possible option is:
-event event_idwhere event_id is an identifier for a upload event.
If you get the following message:
Cannot start bsubmit without your e-mail address. Please run bsubmit with '-email'.This means that you have not configure your e-mail address. Simply do:
~csci551b/bin/bsubmit config -set email=you@yourdomainthe try again.
If you get the following message when you run bsubmit
for the first time:
A normal submission should look something like:
Lines (1) and (9) says that some digital signatures have been verified (these two lines may or may not appear in the output). Lines (2) through (4) gives the location of the ticket (or the upload ticket). Lines (5) through (7) gives the location of the copy of the submission. Line (8) tells you if your submission has made the deadline. Lines (10) through (13) gives the location of the receipt. Lines (14) through (16) gives the location of an encrypted copy of your submission (you will not be able to decrypt this file because you don't have the decryption keys).
A typical ticket (which is a text file that you can open with a text editor) looks like the following:
A receipt (which is also a text file that you can open with a text editor) also has a header and a digital signature. The
middle part of a receipt looks like the following:
On nunki.usc.edu, a copy of each of your submission is placed in your:
~/.bistro/tickets/EVIDdirectory where EVID is the event ID that corresponds to your submissions (which is mentioned inside a box at the bottom of every programming assignment spec). Change directory into that directory and do:
grep "server_time_string=" *.btito see the timestamps of all your submissions. This will tell you which ticket file (a .bti file) corresponds to which submission. Then the corresponding .dat file in the same directory is an exact copy of your submission. (So, if you have submitted a .tar.gz file, this file will be in the .tar.gz format.)
Please be VERY CAREFUL when you are in that directory (or any directory in ~/.bistro)! If you accidentically delete or change any files there, you may have lost some very important information.
You can also run the following command to get a summary of your submissions for a particular event:
~csci551b/bin/bsubmit records -event event_idThe event_id is the string you used right after the "-event" commandline argument of the bsubmit command you used to make a submission (which you can find at the bottom of each programming assignment spec).