These are the courses about cryptography, security, or privacy given by CrySP faculty members. Note that the offering dates and instructors listed are subject to change.

Courses in the School of Computer Science

CS 458/658 Computer Security and Privacy

This course provides an introduction to security and privacy issues in various aspects of computing, including programs, operating systems, networks, databases, and Internet applications. It examines causes of security and privacy breaches, and gives methods to help prevent them. CS 458 is intended for 3rd or 4th year undergraduates; CS 658 is intended for graduate students. Course home page

CS 458/658 Computer Security and Privacy will no longer be taught as of Winter 2024. Interested students can take CS 489/689 Privacy, Cryptography, Network, and Data Security and/or CS 489/698 Software and Systems Security instead.

CS 489/689 Privacy, Cryptography, Network, and Data Security

This course provides an introduction to data privacy and security, using cryptography and related techniques in networks, distributed systems, and data science. It examines how data and meta-data can be protected at rest, in transit, and during computation. Students completing this course should be able to use and deploy data security and privacy protection technologies in networks and (distributed) data science environments. In layman terms, this course shows you how to benefit from the Internet and machine learning and still preserve individuals' privacy. This course complements CS458, which provides a wider set of security and privacy techniques also in other areas but doesn't study these techniques in the detail as this course does. CS 489 is intended for 3rd or 4th year undergraduates; CS 689 is intended for graduate students. Course home page

CS 489/698 Software and Systems Security

This course provides an introduction to security issues in modern software, operating systems, and other computing platforms (e.g., mobile and cloud environments). It examines causes of security breaches and gives methods to help detect, isolate, and prevent them. This course complements CS458, which provides a wider set of security and privacy techniques also in other areas but doesn't study these techniques in the detail as this course does CS 489 is intended for 3rd or 4th year undergraduates; CS 698 is intended for graduate students. Course home page

CS 634 Security and Privacy for Health Systems

An overview of basic security and privacy principles relevant in the design and use of applications in health settings. Program security, operating system security, network security, data security, and issues related to the management of security and privacy policies are introduced. Master of Health Informatics students only. Course home page

CS 758 Cryptography / Network Security

This course covers cryptographic protocols and their application to secure communication, especially in a network setting. Course home page

CS 848 Topics in Encryption in Databases, Machine Learning and Distributed Systems

This course is about how to operate computer programs, such as databases, machine learning algorithms and distributed systems on encrypted data. We will study the properties of cryptographic algorithms and protocols and how they can be used in these systems. This is not only an exercise in cryptography, but also needs to consider the systems aspects in order to balance performance, security and functionality. The goal is to study practical systems that run over encrypted data and leak as little information as possible. Course home page

CS 858 Hot Topics in Privacy Enhancing Technologies

This is a seminar course that examines current research into technologies that help users maintain their privacy, both online and in the real world. Topics covered will include anonymity and pseudonymity systems, censorship resistance, private credentials, and electronic cash. Course home page

CS 858 Unconditionally Secure Cryptography (Combinatorial Cryptography)

The security of many cryptographic protocols depends on the (presumed) difficulty of solving computational problems such as factoring and discrete logarithm. However, it is also possible to design cryptographic protocols that can be proven secure without recourse to any computational assumptions. These protocols are termed "unconditionally secure". In this course, we will explore various cryptographic topics in the setting of unconditional security. Most examples of cryptographic protocols that are secure in this setting make essential use of tools from combinatorics, such as codes, designs, and extremal set systems. We will study some classical cryptographic problems such as perfect secrecy (encryption), secret sharing (threshold schemes) and message authentication, as well as more specialized topics including resilient functions, all-or-nothing-transforms and various other topics, many of which are drawn from my research over the years. The course will consist of a combination of lectures given by me, and student presentations based on research papers.

Some background in cryptography would be helpful but not required. Mathematical background in discrete math, algebra and probability would be very useful in understanding the course content. Offered S19.

CS 858 Mobile Privacy and Security (MoPS)

Many people now carry a smartphone with them all the time. A smartphone has many sensors, which it can use to sense potentially sensitive information about its owner, such as voice or location data. In addition, users can install their own applications on their smartphone. Some of these applications may access sensitive information and forward it to third parties without the owner of the smartphone noticing, which violates user privacy. Some applications may be malicious, leading to security problems. The goal of the MoPS course is to make students aware of the security and privacy challenges raised by smartphones and of possible defenses against these challenges. Course home page

CS 858: (Very Hot) Topics in Computing on Encrypted Data

A course about encryption-in-use. In this course we study techniques, cryptographic algorithms, and methods that enable encryption-in-use and allow applications to run over encrypted data. Topics include multi-party computation protocols, homomorphic, functional, searchable and attribute-based encryption schemes, as well as secure hardware technologies. We study mathematics behind these algorithms, crypto, performance impacts and integration challenges. Course home page

CS 858: Topics in Mobile Platform Security

Cybercriminals are increasingly targeting mobile platforms, especially those running Android Operating System. This course will introduce common framework and application vulnerabilities exploited by malicious parties and will examine security mechanisms employed by Android platform to defend against the threat — major topics include access control, framework and application security models. The course will further explore recent applications of program analysis techniques aiming to improve Android Security. Course home page

CS 858 / SOC 701: Surveillance and Privacy

This interfaculty graduate seminar explores how surveillance technologies contribute to social inequality, both in Canada and globally. It examines current research into technologies that help users maintain their privacy, both online and in the physical world. Seminar readings, discussions, and projects demonstrate how successful interventions into privacy violations, censorship, and digital discrimination are interdisciplinary, and rely on the intersection of technology, policy, law, and critical theory. Course home page

CS 858: Advanced Topics in Cryptography and Blockchain Technologies

Blockchain technologies are quickly gaining popularity as they enable efficient, frictionless, and programmable methods for transfers of assets. In this course, we will study blockchain fundamentals and applications built on top of them. Topics include signature schemes, commitment schemes, multi-party computation, zero-knowledge proofs, consensus mechanisms, smart contracts, incentive mechanisms, applications of blockchains such as cryptocurrencies, and the legal framework around them. Course home page

CS 858: Selected Topics in Systems Security

Software systems written in memory-unsafe languages like C and C++ are pervasive. Their lack of memory safety leaves them vulnerable to various types of run-time attacks. In this graduate seminar, students will explore the state-of-the-art in run-time attacks and defenses. Course home page (current). Course home pages for earlier editions: W22 and W21

.

Courses in the Department of Combinatorics and Optimization

C&O 485/685 The Mathematics of Public-Key Cryptography

An in-depth study of public-key cryptography and number-theoretic problems related to the efficient and secure use of public-key cryptographic schemes. Topics covered may include algorithmic number theory, public-key encryption, signature schemes, key establishment, pairing-based cryptography, and provable security. Course home page

C&O 487 Applied Cryptography

This course is a comprehensive introduction to modern cryptography that is aimed primarily at those interested in applications. The topics discussed will include an introduction to classical cryptography: encryption algorithms, hash functions, and message authentication codes. In the area of public-key cryptography, topics will include an overview of specific systems (Diffie-Hellman, RSA, DSA, etc.) and a few advanced protocols. The security of these schemes and the use of public-key techniques for generating digital signatures will be described. An emphasis will be placed on tools that are currently being used to secure the Internet and enable secure electronic commerce. Course home page