{{Header}} {{#seo: |description=Effective measures to mitigate the inherent risks associated with using printers and scanners. |image=Printingandscaning.jpg }} [[File:Printingandscaning.jpg|thumb]] {{intro| Effective measures to mitigate the inherent risks associated with using printers and scanners. }} = Introduction = Printing is a [https://en.wikipedia.org/wiki/Machine_Identification_Code risky endeavor]. This risk is unrelated to {{project_name_short}} and is a general issue with printers. The Electronic Frontier Foundation (EFF) notes: https://www.eff.org/issues/printers
Imagine that every time you printed a document it automatically included a secret code that could be used to identify the printer - and potentially the person who used it. Sounds like something from an episode of "Alias" right?The EFF has confirmed that some color laser printer manufacturers encode identifying information on each page, in an effort to identify counterfeiters. Identifying information contained within forensic tracking codes can include the date, time and printer serial numbers attached to the printout. For instance, a sample [https://w2.eff.org/Privacy/printers/docucolor/docucolor.cgi script] is provided by the EFF which deciphers these forensic dot patterns for the Xerox DocuColor laser printer. https://w2.eff.org/Privacy/printers/docucolor/ The downside for privacy advocates is immediately apparent: this same technique can be used as a common tool for government surveillance. DEDA (Tracking Dots Extraction, Decoding and Anonymisation toolkit) is a tool for countering the yellow dot watermarking threat. It may be packaged for Debian in the future. https://lists.autistici.org/message/20200306.003951.1880c4b4.en.html https://github.com/dfd-tud/deda The technique it uses was criticized by the Metadata Anonymization Toolkit (MAT) developer for using a blacklist and not being a generic solution and recommends using black and white only printers as a safer solution. https://lists.autistici.org/message/20200308.154747.1b4d1245.en.html == Safety Principles == Workarounds exist for printing materials such as political leaflets safely: * This [https://www.eff.org/pages/list-printers-which-do-or-do-not-display-tracking-dots page] has compiled a list of printers and whether or not they include forensic watermarking. * According to MIT, forensic markers are not present in black-and-white print-outs, so long as no color cartridge is present. http://seeingyellow.com/ * Relying on a USB-Printer bought at a garage sale might be a good option to help maintain anonymity. Note that these factors only apply to printers under a person's control. If a printer is used that is controlled by an adversary and they want to track down the source printer for particular documents, then color printing can be enforced at all times for this purpose. Modern printers and scanners are embedded computers with their own dedicated internal storage. It has been discovered that scanned documents are saved by these devices, leaking the handling of sensitive documents. https://www.schneier.com/blog/archives/2017/01/photocopier_sec.html l One workaround is to use a cell phone that is only used for dedicated anonymous activities to take photos of the material, however this recommendation comes with its own [[Surfing_Posting_Blogging#Photographs|caveats]]. Finally, persons wanting to print anonymously must also consider non-technical issues, such as forensic traces related to physical fingerprints, DNA traces left on materials and so on. = Mitigating Printing Risk = {{mbox | image = [[File:Ambox_notice.png|40px|alt=Qubes info box]] | text = [[Qubes|{{q_project_name_long}}]] only. }} == Warnings == Pairing {{project_name_short}} with network printers is strongly discouraged. This is because most (if not all) network printing relies upon insecure, unencrypted protocols. This means the documents being printed will likely be visible to attackers who are able to sniff the local network, or who control the (normally untrusted) Qubes NetVM. This is a limitation of modern printers and printing protocols and not something that can be solved by Qubes or any other OS. https://github.com/Qubes-Community/Contents/blob/master/docs/configuration/network-printer.md Particular care must be taken in Qubes to mitigate the risk of exposing dom0 to malware -- [[Qubes|{{q_project_name_short}}]] users should utilize a dedicated [https://www.qubes-os.org/doc/how-to-use-usb-devices/ USB qube] when using a USB printer. Further, printer driver plugins should never be installed in a trusted Template! The reason is many driver plugins are [https://en.wikipedia.org/wiki/Proprietary_software proprietary] and most often downloaded from the vendor’s website in the form of ready-to-install packages. However, they are usually unsigned and only made available for download over HTTP connections. If these third-party driver plugins are installed in a trusted Template, the template may be compromised as well as every AppVM based upon it. Bearing in mind the risky nature of printing, the threats posed by printer driver plugins can be mitigated via several methods outlined below. == Install Printer Drivers: TemplateBasedVM == {{mbox | image = [[File:Ambox_warning_pn.svg.png|40px]] | text = '''Warning:''' Some users may be tempted to use the AppVM's root filesystem as a [https://web.archive.org/web/20180315024701/https://www.qubes-os.org/doc/software-update-vm/#note-on-treating-appvms-root-filesystem-non-persistence-as-a-security-feature non-persistent security feature]. However, malware can persist if the AppVM is infected -- all data in the normal user filesystem,
Unfortunately the scenario is not fictional.
/home
, /rw
and /usr/local
survives reboot. It is feasible that advanced malware (or malware specifically targeted at Qubes-based AppVMs) could install its hooks inside the user home directory files only.
https://web.archive.org/web/20180315024701/https://www.qubes-os.org/doc/software-update-vm/#note-on-treating-appvms-root-filesystem-non-persistence-as-a-security-feature
}}
There is no reason to avoid installing software in TemplateBasedVMs. Therefore, it is possible to install the printer drivers in an AppVM which is based on the {{project_name_workstation_template}}
template.
# Create an AppVM based on {{project_name_workstation_template}}
. The untrusted AppVM should be named so it is not confused with a more trusted VM - for instance anon-printer
.
# Install the printer drivers in the anon-printer
AppVM. Use Tor Browser or konsole to download the necessary drivers; see [[Install Software|Install Software]] and [[Secure Downloads|Secure Downloads]] for more advice.
# Once the drivers are installed, use the anon-printer
AppVM for printing. Do not use it for any other sensitive activity!
# Optional: Minimize the risk of user mistakes persisting to the next printing session. Once printing is complete, shutdown the anon-printer
VM and [https://dev.qubes-os.org/projects/core-admin-client/en/latest/manpages/qvm-remove.html remove] it from the system. When further printing is required, repeat steps 1-3 to recreate another anon-printer
AppVM.
== Install Printer Drivers: TemplateBasedVM with Selective Persistence ==
Using selective [https://www.qubes-os.org/doc/bind-dirs/ bind-dirs] persistence is currently undocumented. Further research is required to ascertain which files require persistence across VM reboots. This task would also be difficult.
== Install Printer Drivers: StandaloneVM ==
# Create a [https://www.qubes-os.org/doc/standalones-and-hvms/#creating-a-standalone Standalone] {{project_name_workstation_long}} VM. The untrusted Standalone VM should be named so it is not confused with a more trusted VM - for instance anon-printer
.
# Install the printer drivers as per normal procedures. Use Tor Browser or konsole to download the drivers.
# Once the drivers are installed, use the Standalone anon-printer
VM for printing. Do not use this VM for any other sensitive activity because printer driver plugins can pose a serious risk to security and anonymity.
= Footnotes =
{{reflist|close=1}}
= License =
{{License_Amnesia|{{FULLPAGENAME}}}}
{{Footer}}
[[Category:Documentation]]