what-is-a-lockscreen.md (3541B)
1 # The Humble Lock Screen 2 3 Lock screens are used to limit access to a system by requiring a user to perform a ritual. These rituals can be arbitrary so long as the individuals capable of the ritual are the set of individuals you're okay with using the system. 4 5 As of writing this, I use [xl](https://github.com/dannyfiresnake/xl) as my lock screen. I started using this because I wanted my awesome background to display when my screen was locked, and after learning how X11 lock screens actually work, I realized the simplest way that'd suffice for me is to have the root window consume pointer and keyboard inputs via XGrabPointer and XGrabKeyboard respectively. Now I just swap DWM tags to a tag with no windows and press Mod4 and XK_l. 6 7 ## Formalization 8 9 A proper ritual for accessing a system fulfils the following requirement: 10 11 $r \in (A_i \cap B_i \cap ... \cup Z_i) - \Gamma_i$ 12 13 Where $A_i, B_i, ..., Z_i$ are the sets of individuals who should be able to perform the ritual to access the system, and $\Gamma_i$ is the collective intelligence of all individuals who shouldn't have access to the system. 14 15 In the case of multi-user system's it's often useful to have one ritual per-person to simplify the process of creating a shared ritual, and for traceability. 16 17 Notably, to fulfil the ritual, one mustn't be interrupted. Given this, time based rituals may be permissible in certain contexts. Things like proof of work, solving trivial problems, typing tests, and other things that are subject almost exclusively to time deltas can be rituals, assuming the amount of time it takes to perform the ritual is greater than the amount of time required to stop someone else from completing the ritual who isn't in the user set. 18 19 20 ## Uncommon Rituals 21 22 Common rituals are passwords, biometrics, hardware keys, stuff like that. Uncommon ones, similar to what some use with their morning alarms, can perhaps be questions. If you are quite skillful at some set of problems, and are willing to solve them each time you are to unlock your system, these may be used in lieu of passwords, as long as they are rather complex. 23 24 Another consideration is time. If I lock my screen, I'll generally be very close to my system while it's locked because I don't trust any lock screens that aren't actually logging out my user account, which don't seem to really exist in a sensible way. Given this, for me it'd actually be sensible to just have a small set of problems to solve that take some non-trivial amount of time that's larger than the amount of time I'll be away from my system. 25 26 Another layer of protection I have in the time cost domain is my keyboard, split, colemak. 27 28 ### Knowledge 29 30 An interesting solution to this problem is using knowledge. There are things about me my wife knows, things about me specific family members of mine know, and specific pieces of information about me friends know. Given these considerations, if I wanted my system to be accessible to multiple people, the selection of a ritual could be done on the basis of the union or our knowledge, differenced from the knowledge of everyone outside of the group. 31 32 ### Optimization 33 34 We may want to optimize for time. Such an optimization likely dictates biometrics are to be used as the ritual, and every person who accesses the system will have their own ritual. If we are optimizing for fun or improvement, or some other objective there are far more options. 35 36 #### Fun 37 38 - Video games 39 40 #### Improvement 41 42 - Typing tests 43 - Competitive programming 44 - Math 45 - Logic 46 - Vim tutor