blog

Personal blog
git clone git://git.laack.co/blog.git
Log | Files | Refs

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