Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/bitfrost.txt
blob: 96f4997602d817abf7be90a00bf68b3a79a73005 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
System security on the One Laptop per Child's XO laptop
The Bitfrost security platform
=======================================================

:Author
    Ivan Krstić
    ivan AT laptop.org
    One Laptop Per Child
    http://laptop.org

:Acknowledgments
    Simson Garfinkel, a security consultant for OLPC, contributed to this
    document.  This document also builds upon a growing body known as
    "HCI-SEC," the application of recent advances in the field of Human
    Computer Interaction to the important goals of computer security. More
    information about HCI-SEC can be found in the book "Security and
    Usability," by Lorrie Cranor and Simson Garfinkel (O'Reilly, 2005), and in
    Garfinkel's PhD thesis, "Design Principles and Patterns for Computer
    Systems that are Simultaneously Secure and Usable" (MIT, 2005).

    We acknowledge also a panel of reviewers that prefer to stay anonymous, who
    provided insightful comments and feedback on previous drafts of this
    document.

:Metadata
    Revision: Draft-19 - release 1
    Timestamp: Wed Feb  7 00:50:57 UTC 2007
    Feedback URL: http://mailman.laptop.org/mailman/listinfo/security
    Authoritative version of this document: http://wiki.laptop.org/go/Bitfrost

    We welcome feedback on this document, preferably to the public OLPC
    security mailing list, for which you can sign up at the feedback URL given
    above. If you strongly prefer to keep your comments private, you may mail
    the author of the document at the provided e-mail address.

    This is NOT the final version of the specification. The contents of this
    document accurately reflect OLPC's thinking about security at the time of
    writing, but certain aspects of the security model may change before
    production. This document will be updated to reflect any such changes. The
    latest version of this document may be found at the authoritative version
    URL.




0. Introduction
===============

0.1. Foreword
-------------

In 1971, 35 years ago, AT&T programmers Ken Thompson and Dennis Ritchie
released the first version of UNIX. The operating system, which started in 1969
as an unpaid project called UNICS, got a name change and some official funding
by Bell Labs when the programmers offered to add text processing support. Many
of the big design ideas behind UNIX persist to this day: popular server
operating systems like Linux, FreeBSD, and a host of others all share much of
the basic UNIX design.

The 1971 version of UNIX supported the following security permissions on
user files:

    * non-owner can change file (write)
    * non-owner can read file
    * owner can change file (write)
    * owner can read file
    * file can be executed
    * file is set-uid

These permissions should look familiar, because they are very close to the same
security permissions a user can set for her files today, in her operating
system of choice. What's deeply troubling -- almost unbelievable -- about these
permissions is that they've remained virtually the _only_ real control
mechanism that a user has over her personal documents today: a user can choose
to protect her files from other people on the system, but has no control
whatsoever over what her own programs are able to do with her files.

In 1971, this might have been acceptable: it was 20 years before the advent of
the Web, and the threat model for most computer users was entirely different
than the one that applies today. But how, then, is it a surprise that we can't
stop viruses and malware now, when our defenses have remained largely unchanged
from thirty-five years ago?

The crux of the problem lies in the assumption that any program executing on
a system on the user's behalf should have the exact same abilities and
permissions as any other program executing on behalf of the same user. 1971 was
seven years before the first ever international packet-switched network came
into existence. And the first wide-area network using TCP/IP, the communication
suite used by the modern Internet, wasn't created until 1983, twelve years
after Thompson and Ritchie designed the file permissions we're discussing.  The
bottom line is that in 1971, there was almost no conceivable way a program
could "come to exist" on a computer except if the account owner -- the user --
physically transported it to a machine (for instance, on punched tape), or
entered it there manually. And so the "all or nothing" security approach, where
executing programs have full control over their owner's account, made quite a
lot of sense: any code the user executed, she ipso facto trusted for all
practical purposes.

Fast forward to today, and the situation couldn't be more different: the
starkest contrast is perhaps the Web, where a user's web browser executes
untrusted scripting code on just about every web page she visits! Browsers are
growing increasingly complex sandboxing systems that try to restrict the
abilities of such web scripts, but even the latest browser versions are still
fixing bugs in their scripting engine implementations. And don't forget e-mail:
anyone can send a user an executable program, and for many years the users'
instinctive reaction was to open the attachment and run the program. Untrusted
code is everywhere, and the only defense seems to be tedious user training and
antivirus software -- the latter assuming it's fully updated, and assuming the
antivirus makers have had time to deconstruct each latest virus and construct a
defense for it.

Most technologies and approaches mentioned in the rest of this document do not
represent original research: they have been known in the security literature
for years, some of them have been deployed in the field, and others are being
tested in the lab. What makes the OLPC XO laptops radically different is that
they represent the first time that all these security measures have been
carefully put together on a system slated to be introduced to tens or hundreds
of millions of users. The laptops are also possibly the first time that a
mainstream computing product has been willing to give up compatibility with
legacy programs in order to achieve strong security. As an example, you'll find
that talk about anti-virus and anti-spyware technology is conspicuously absent
from this document, because the Bitfrost security platform on the XO laptops
largely renders these issues moot.

We have set out to create a system that is both drastically more secure and
provides drastically more usable security than any mainstream system currently
on the market. One result of the dedication to usability is that there is only
one protection provided by the Bitfrost platform that requires user response,
and even then, it's a simple 'yes or no' question understandable even by young
children. The remainder of the security is provided behind the scenes.  But
pushing the envelope on both security and usability is a tall order, and as we
state in the concluding chapter of this document, we have neither tried to
create, nor do we believe we have created, a "perfectly secure" system. Notions
of perfect security are foolish, and we distance ourselves up front from any
such claims.



0.2. Security and OLPC
----------------------

In terms of security, the OLPC XO laptops are a highly unique environment. They
are slated to introduce computers to young children, many in environments that
have had no prior exposure to computing or the Internet.

What's more, OLPC is not targeting small-scale local deployments where it could
easily intervene in the case of security problems with the machines or their
usage; instead, once the machines are released in the wild, drastic changes in
the security model should be considered difficult or impossible.

Plenty of experience exists in locking down user machines, often in corporate
or academic settings. But OLPC has a final constraint that invalidates most of
the current common wisdom: OLPC is, by design, striving to be an eminently
malleable platform, allowing the children to modify, customize, or "hack",
their own machines any way they see fit.

As a result, no one security policy on the computer will satisfy our
requirements. Instead, we will ship and enable by default a stringent policy
that's appropriate even for the youngest user, and which delivers the strongest
available protections. However, we will provide a simple graphical interface
for interested users to disable any of these protections, allowing the user to
tailor the security level to match her interest in hacking her machine.

This approach allows us to be highly secure by default, and protect even the
user who has no conception of digital security. At the same time, it avoids
getting in the way of any user who is becoming more sophisticated, and
interested in increasing her abilities on the machine.

Finally, because we subscribe to constructionist learning theories, we want to
encourage children to all eventually progress to this level of a more
sophisticated user who takes greater liberties with her machine. However, as
long as there exists potential for disaster (i.e. rendering a machine fully
inoperable, or incurring total data loss), this potential serves as a strong
deterrent to this progression. Because of this, in addition to focusing on
security by default, we are explicitly focusing on providing mechanisms for
trivial and unintimidating disaster recovery, such as operating system recovery
from multiple sources and data backup to a central server.



0.3. About this document
------------------------

This document follows security throughout the life-cycle of the laptop itself,
starting from the moment a laptop is produced in the factory, to the moment it
first reaches a child, throughout the child's use of the laptop, and finally
stopping at the moment a child wishes to dispose of the laptop. All of this is
preceded by a short section on our goals and principles, which serves to
provide background to some of the decisions we made, and which might be
non-obvious if one thinks of security in the context of normal laptop and
desktop machines.

This document is complete with regard to the OLPC security model, but is
generally non-technical. A separate document is being prepared that complements
this one with fully technical descriptions and commentary.



0.4. Principles and goals
-------------------------

=== Principles ===

* Open design
  The laptop's security must not depend upon a secret design implemented in
  hardware or software.

* No lockdown
  Though in their default settings, the laptop's security systems may impose
  various prohibitions on the user's actions, there must exist a way for these
  security systems to be disabled. When that is the case, the machine will
  grant the user complete control.

* No reading required
  Security cannot depend upon the user's ability to read a message from the
  computer and act in an informed and sensible manner. While disabling a
  particular security mechanism _may_ require reading, a machine must be secure
  out of the factory if given to a user who cannot yet read.

* Unobtrusive security
  Whenever possible, the security on the machines must be behind the scenes,
  making its presence known only through subtle visual or audio cues, and never
  getting in the user's way. Whenever in conflict with slight user convenience,
  strong unobtrusive security is to take precedence, though utmost care must be
  taken to ensure such allowances do not seriously or conspicuously reduce the
  usability of the machines.

  As an example, if a program is found attempting to violate a security
  setting, the user will not be prompted to permit the action; the action will
  simply be denied. If the user wishes to grant permission for such an action,
  she can do so through the graphical security center interface.


=== Goals ===

* No user passwords
  With users as young as 5 years old, the security of the laptop cannot depend
  on the user's ability to remember a password. Users cannot be expected to
  choose passwords when they first receive computers.

* No unencrypted authentication
  Authentication of laptops or users will not depend upon identifiers that are
  sent unencrypted over the network.  This means no cleartext passwords of any
  kind will be used in any OLPC protocol and Ethernet MAC addresses will never
  be used for authentication.

* Out-of-the-box security
  The laptop should be both usable and secure out-of-the-box, without the need
  to download security updates when at all possible.

* Limited institutional PKI
  The laptop will be supplied with public keys from OLPC and the country or
  regional authority (e.g. the ministry or department of education), but these
  keys will not be used to validate the identity of laptop users. The sole
  purpose of these keys will be to verify the integrity of bundled software and
  content. Users will be identified through an organically-grown PKI without a
  certified chain of trust -- in other words, our approach to PKI is KCM, or
  key continuity management.

* No permanent data loss
  Information on the laptop will be replicated to some centralized storage
  place so that the student can recover it in the even that the laptop is lost,
  stolen or destroyed.




1. Factory production
=====================

As part of factory production, certain manufacturing data is written to the
built-in SPI flash chip. The chip is rewritable, but barring hardware tampering,
only by a trusted process that will not damage or modify the manufacturing
information.

Manufacturing data includes two unique identifiers: SN, the serial number,
and U#, the randomly-generated UUID. Serial numbers are not assigned in
order; instead, they are chosen randomly from a pool of integers. The
manufacturing process maintains a mapping of the random serial number assigned,
to the real, incremental serial number which was set to 1 for the first laptop
produced. This mapping is confidential but not secret, and is kept by OLPC.

The random mapping's sole purpose is to discourage attempts at using serial
numbers of laptops delivered to different countries for attempting to analyze
countries' purchase volumes.

A laptop's UUID, U#, is a random 32-byte printable ASCII identifier.

In one of the factory diagnostics stages after each laptop's production, the
diagnostics tool will send the complete manufacturing information, including U#,
SN, and factory information, to an OLPC server. This information will be queued
at the factory in case of connectivity issues, and so won't be lost under any
foreseeable circumstances.

At the end of the production line, the laptop is in the 'deactivated' state.
This means it must undergo a cryptographic activation process when powered on,
before it can be used by an end user.




2. Delivery chain security
==========================

OLPC arranges only the shipment of laptops from their origin factory to each
purchasing country. Shipping and delivery within each country is organized fully
by the country.

Given OLPC production volumes, the delivery chain poses an attractive attack
vector for an enterprising thief. The activation requirement makes delivery
theft highly unappealing, requiring hardware intervention to disable on each
stolen laptop before resale. We give an overview of the activation process
below.




3. Arrival at school site and activation
========================================

Before a batch of laptops is shipped to each school, the country uses
OLPC-provided software to generate a batch of activation codes. This "activation
list" maps each (SN, UUID) tuple to a unique activation code for the referenced
laptop. Activation lists are generated on-demand by the country for each laptop
batch, as the laptops are partitioned into batches destined for specific
schools. In other words, there is no master activation list.

The activation list for a laptop batch is loaded onto a USB drive, and delivered
to a project handler in the target school out of band from the actual laptop
shipment. The handler will be commonly a teacher or other school administrator.
The activation list sent to one school cannot be used to activate any other
laptop batch.

When the activation list USB drive is received, it is plugged into the
OLPC-provided school server, or another server running the requisite software
that is connected to a wireless access point. Whichever server takes on this
role will be called the 'activation server'. An activated XO laptop can be used
for this purpose, if necessary.

After receiving the matching laptop batch, the school's project handler will be
tasked with giving a laptop to each child at the school. When a child receives
a laptop, it is still disabled. The child must power on the laptop within
wireless range of the school's activation server. When this happens, the laptop
will securely communicate its (SN, UUID) tuple to the server, which will return
the activation code for the laptop in question, provided the tuple is found in
the activation list, or an error if it isn't.

Given an invalid activation code or an error, the laptop will sleep for one
hour before retrying activation. If the activation code is valid, the laptop
becomes 'activated', and proceeds to boot to the first-boot screen. A textual
activation code can be entered into the machine manually, if the machine is not
activating automatically for any reason.




4. First boot
=============

On first boot, a program is run that asks the child for their name, takes
their picture, and in the background generates an ECC key pair. The key pair is
initially not protected by a passphrase, and is then used to sign the child's
name and picture. This information and the signature are the child's 'digital
identity'.

The laptop transmits the (SN, UUID, digital identity) tuple to the activation
server. The mapping between a laptop and the user's identity is maintained by
the country or regional authority for anti-theft purposes, but never reaches
OLPC.

After this, the laptop boots normally, with all security settings enabled.




5. Software installation
========================

There is a very important distinction between two broad classes of programs
that execute on a running system, and this distinction is not often mentioned
in security literature. There are programs that are purposely malicious,
which is to say that they were written with ill intent from the start, such as
with viruses and worms, and there are programs which are circumstantially
malicious but otherwise benign, such as legitimate programs that have been
exploited by an attacker while they're running, and are now being instrumented
to execute code on behalf of the attacker via code injection or some other
method.

This difference is crucial and cannot be understated, because it's a
reasonable assumption that most software running on a normal machine starts
benign. In fact, we observe that it is through exploitation of benign software
that most malicious software is first _introduced_ to many machines, so
protecting benign software becomes a doubly worthy goal.

The protection of benign software is a keystone of our security model. We
approach it with the following idea in mind: benign software will not lie about
its purpose during installation.

To provide an example, consider the Solitaire game shipped with most versions
of Microsoft Windows. This program needs:

    * no network access whatsoever
    * no ability to read the user's documents
    * no ability to utilize the built-in camera or microphone
    * no ability to look at, or modify, other programs

Yet if somehow compromised by an attacker, Solitaire is free to do whatever the
attacker wishes, including:

    * read, corrupt or delete the user's documents, spreadsheets, music,
      photos and any other files
    * eavesdrop on the user via the camera or microphone
    * replace the user's wallpaper
    * access the user's website passwords
    * infect other programs on the hard drive with a virus
    * download files to the user's machine
    * receive or send e-mail on behalf of the user
    * play loud or embarassing sounds on the speakers

The critical observation here is not that Solitaire should never have the
ability to do any of the above (which it clearly shouldn't), but that its
creators _know_ it should never do any of the above. It follows that if the
system implemented a facility for Solitaire to indicate this at installation
time, Solitaire could irreversibly shed various privileges the moment it's
installed, which severely limits or simply destroys its usefulness to an
attacker were it taken over.

The OLPC XO laptops provide just such a facility. Program installation does
not occur through the simple execution of the installer, which is yet another
program, but through a system installation service which knows how to install
XO program bundles. During installation, the installer service will query
the bundle for the program's desired security permissions, and will notify
the system Security Service accordingly. After installation, the
per-program permission list is only modifiable by the user through a
graphical interface.

A benign program such as Solitaire would simply not request any special
permissions during installation, and if taken over, would not be able to
perform anything particularly damaging, such as the actions from the above
list.

It must be noted here that this system _only_ protects benign software. The
problem still remains of intentionally malicious software, which might request
all available permissions during installation in order to abuse them
arbitrarily when run. We address this by making certain initially-requestable
permissions mutually exclusive, in effect making it difficult for malicious
software to request a set of permissions that easily allow malicious action.
Details on this mechanism are provided later in this document.

As a final note, programs cryptographically signed by OLPC or the
individual countries may bypass the permission request limits, and request
any permissions they wish at installation time.




6. Software execution: problem statement
========================================

The threat model that we are trying to address while the machine is running
normally is a difficult one: we wish to have the ability to execute generally
untrusted code, while severely limiting its ability to inflict harm to the
system.

Many computer devices that are seen or marketed more as embedded or managed
computers than personal laptops or desktops (one example is AMD's [[PIC
communicator -> http://www.amdboard.com/pic.html]]) purport to dodge the
issue of untrusted code entirely, while staving off viruses, malware and
spyware by only permitting execution of code cryptographically signed by the
vendor. In practice, this means the user is limited to executing a very
restricted set of vendor-provided programs, and cannot develop her own software
or use software from third party developers. While this approach to security
certainly limits available attack vectors, it should be noted it is pointedly
not a silver bullet. A computer that is not freely programmable represents a
tremendous decrease in utility from what most consumers have come to expect
from their computers -- but even if we ignore this and focus merely on the
technical qualifications of such a security system, we must stress that almost
always, cryptographic signatures for binaries are checked at load time, not
continually during execution. Thus exploits for vendor-provided binaries are
still able to execute and harm the system. Similarly, this system fails to
provide any protection against macro attacks.

As we mention in the introduction, this severely restricted execution model is
absolutely not an option for the XO laptops. What's more, we want to explicitly
encourage our users, the children, to engage in a scenario certain to give
nightmares to any security expert: easy code sharing between computers.

As part of our educational mission, we're making it very easy for children to
see the code of the programs they're running -- we even provide a View
Source key on the keyboard for this purpose -- and are making it similarly easy
for children to write their own code in Python, our programming language of
choice. Given our further emphasis on collaboration as a feature integrated
directly into the operating system, the scenario where a child develops some
software and wishes to share it with her friends becomes a natural one, and one
that needs to be well-supported.

Unfortunately, software received through a friend or acquaintance is completely
untrusted code, because there's no trust mapping between people and software:
trusting a friend isn't, and cannot be, the same as trusting code coming from
that friend. The friend's machine might be taken over, and may be attempting to
send malicious code to all her friends, or the friend might be trying to execute
a prank, or he might have written -- either out of ignorance or malice --
software that is sometimes malicious.

It is against this background that we've constructed security protections for
software on the laptop. A one-sentence summary of the intent of our complete
software security model is that it "tries to prevent software from doing bad
things". The next chapter explains the five categories of 'bad things' that
malicious software might do, and the chapter after that our protections
themselves. Chapter 9 explains how each protection addresses the threat model.




7. Threat model: bad things that software can do
==================================================

There are five broad categories of "bad things" that running software could do,
for the purposes of our discussion. In no particular order, software can attempt
to damage the machine, compromise the user's privacy, damage the user's
information, do "bad things" to people other than the machine's user, and
lastly, impersonate the user.



7.1. Damaging the machine
-------------------------

Software wishing to render a laptop inoperable has at least five attack
vectors.  It may try to ruin the machine's BIOS, preventing it from booting. It
may attempt to run down the NAND chip used for primary storage, which -- being
a flash chip -- has a limited number of write/erase cycles before ceasing to
function properly and requiring replacement. Successful attacks on the BIOS or
NAND cause hard damage to the machine, meaning such laptops require trained
hardware intervention, including part replacement, to restore to operation. The
third vector, deleting or damaging the operating system, is an annoyance that
would require the machine to be re-imaged and reactivated to run.

Two other means of damaging the machine cause soft damage: they significantly
reduce its utility. These attacks are performance degradation and battery
drainage (with the side note that variants of the former can certainly cause the
latter.)

When we say performance degradation, we are referring to the over-utilization of
any system resource such as RAM, the CPU or the networking chip, in a way that
makes the system too slow or unresponsive to use for other purposes. Battery
drainage might be a side-effect of such a malicious performance degradation
(e.g. because of bypassing normal power saving measures and over-utilization of
power-hungry hardware components), or it might be accomplished through some
other means. Once we can obtain complete power measurements for our hardware
system, we will be aware of whether side channels exist for consuming large
amounts of battery power without general performance degradation; this section
will be updated to reflect that information.



7.2. Compromising privacy
-------------------------

We see two primary means of software compromising user privacy: the
unauthorized sending of user-owned information such as documents and images
over the network, and eavesdropping on the user via the laptops' built-in
camera and microphone.



7.3. Damaging the user's data
-----------------------------

A malicious program can attempt to delete or corrupt the user's documents,
create large numbers of fake or garbage-filled documents to make it difficult
for the user to find her legitimate ones, or attack other system services that
deal with data, such as the search service. Indeed, attacking the global
indexing service might well become a new venue for spam, that would thus show
up every time the user searched for anything on her system. Other attack
vectors undoubtedly exist.



7.4. Doing bad things to other people
-------------------------------------

Software might be malicious in ways that do not directly or strongly affect the
machine's owner or operator. Examples include performing Denial of Service
attacks against the current wireless or wired network (a feat particularly easy
on IPv6 networks, which our laptops will operate on by default), becoming a
spam relay, or joining a floodnet or other botnet.



7.5. Impersonating the user
---------------------------

Malicious software might attempt to abuse the digital identity primitives on
the system, such as digital signing, to send messages appearing to come from
the user, or to abuse previously authenticated sessions that the user might
have created to privileged resources, such as the school server.




8. Protections
==============

Here, we explain the set of protections that make up the bulk of the Bitfrost
security platform, our name for the sum total of the laptop's security systems.
Each protection listed below is given a concise uppercase textual label
beginning with the letter P. This label is simply a convenience for easy
reference, and stands for both the policy and mechanism of a given protection
system.

Almost all of the protections we discuss can be disabled by the user through a
graphical interface. While the laptop's protections are active, this interface
cannot be manipulated by the programs on the system through any means, be
it synthetic keyboard and mouse events or direct configuration file
modification.



8.1. P_BIOS_CORE: core BIOS protection
--------------------------------------

The BIOS on an XO laptop lives in a 1MB SPI flash chip, mentioned in Section
1.1. This chip's purpose is to hold manufacturing information about the machine
including its (SN, UUID) tuple, and the BIOS and firmware. Reflashing the
stored BIOS is strictly controlled, in such a way that only a BIOS image
cryptographically signed by OLPC can be flashed to the chip. The firmware will
not perform a BIOS reflashing if the battery level is detected as low, to avoid
the machine powering off while the operation is in progress.

A child may request a so-called developer key from OLPC. This key, bound to the
child's laptop's (SN, UUID) tuple, allows the child to flash any BIOS she
wishes, to accommodate the use case of those children who progress to be very
advanced developers and wish to modify their own firmware.



8.2. P_BIOS_COPY: secondary BIOS protection
-----------------------------------------------

The inclusion of this protection is uncertain, and depends on the final size of
the BIOS and firmware after all the desired functionality is included. The SPI
flash offers 1MB of storage space; if the BIOS and firmware can be made to fit
in less than 512KB, a second copy of the bundle will be stored in the SPI. This
secondary copy would be immutable (cannot be reflashed) and used to boot the
machine in case of the primary BIOS being unbootable. Various factors might
lead to such a state, primarily hard power loss during flashing, such as
through the removal of the battery from the machine, or simply a malfunctioning
SPI chip which does not reflash correctly. This section will be updated once it
becomes clear whether this protection can be included.



8.3. P_SF_CORE: core system file protection
-----------------------------------------------

The core system file protection disallows modification of the stored system
image on a laptop's NAND flash, which OLPC laptops use as primary storage.
While engaged, this protection keeps any process on the machine from altering
in any way the system files shipped as part of the OLPC OS build.

This protection may not be disabled without a developer key, explained in
Section 8.1.



8.4. P_SF_RUN: running system file protection
---------------------------------------------

Whereas P_SF_CORE protects the *stored* system files, P_SF_RUN protects the
*running* system files from modification. As long as P_SF_RUN is engaged, at
every boot, the running system is loaded directly from the stored system files,
which are then marked read-only.

When P_SF_RUN is disengaged, the system file loading process at boot changes.
Instead of loading the stored files directly, a COW (copy on write) image is
constructed from them, and system files from _that_ image are initialized as the
running system. The COW image uses virtually no additional storage space on the
NAND flash until the user makes modifications to her running system files, which
causes the affected files to be copied before being changed. These modifications
persist between boots, but only apply to the COW copies: the underlying system
files remain untouched.

If P_SF_RUN is re-engaged after being disabled, the boot-time loading of system
files changes again; the system files are loaded into memory directly with no
intermediate COW image, and marked read-only.

P_SF_CORE and P_SF_RUN do not inter-depend. If P_SF_CORE is disengaged and the
stored system files are modified, but P_SF_RUN is engaged, after reboot no
modification of the running system will be permitted, despite the fact that the
underlying system files have changed from their original version in the OLPC OS
build.



8.5. P_NET: network policy protection
-------------------------------------

Each program's network utilization can be constrained in the following
ways:

    * Boolean network on/off restriction
    * token-bucketed bandwidth throttling with burst allowance
    * connection rate limiting
    * packet destination restrictions by host name, IP and port(s)
    * time-of-day restrictions on network use
    * data transfer limit by hour or day
    * server restriction (can bind and listen on a socket), Boolean and
      per-port

Reasonable default rate and transfer limits will be imposed on all non-signed
programs. If necessary, different policies can apply to mesh and access point
traffic.  Additional restrictions might be added to this list as we complete
our evaluation of network policy requirements.



8.6. P_NAND_RL: NAND write/erase protection
-------------------------------------------

A token-bucketed throttle with burst allowance will be in effect for the JFFS2
filesystem used on the NAND flash, which will simply start delaying
write/erase operations caused by a particular program after its bucket is
drained. It is currently being considered that such a delay behaves as an
exponential backoff, though no decision has yet been made, pending some field
testing.

A kernel interface will expose the per-program bucket fill levels to
userspace, allowing the implementation of further userspace policies, such as
shutting down programs whose buckets remain drained for too long. These
policies will be maintained and enforced by the system Security Service, a
privileged userspace program.



8.7. P_NAND_QUOTA: NAND quota
-----------------------------

To prevent disk exhaustion attacks, programs are given a limited scratch
space in which they can store their configuration and temporary files, such as
various caches. Currently, that limit is 5MB. Additionally, limits will be
imposed on inodes and dirents within that scratch space, with values to be
determined.

This does not include space for user documents created or manipulated by the
program, which are stored through the file store. The file store is
explained in a later section.



8.8. P_MIC_CAM: microphone and camera protection
------------------------------------------------

At the first level, our built-in camera and microphone are protected by
hardware: an LED is present next to each, and is lit (in hardware, without
software control) when the respective component is engaged. This provides a
very simple and obvious indication of the two being used. The LEDs turning on
unexpectedly will immediately tip off the user to potential eavesdropping.

Secondly, the use of the camera and microphone require a special permission,
requested at install-time as described in Chapter 5, for each program
wishing to do so. This permission does not, however, allow a program to
instantly turn on the camera and microphone. Instead, it merely lets the
program _ask_ the user to allow the camera or microphone (or both) to be
turned on.

This means that any benign programs which are taken over but haven't
declared themselves as needing the camera or microphone cannot be used
neither to turn on either, NOR to ask the user to do so!

Programs which have declared themselves as requiring those privileges (e.g.
a VOIP or videoconferencing app) can instruct the system to ask the user for
permission to enable the camera and microphone components, and if the request
is granted, the program is granted a timed capability to manipulate the
components, e.g. for 30 minutes. After that, the user will be asked for
permission again.

As mentioned in Chapter 5, programs cryptographically signed by a
trusted authority will be exempt from having to ask permission to manipulate
the components, but because of the LEDs which indicate their status, the
potential for abuse is rather low.



8.9. P_CPU_RL: CPU rate limiting
--------------------------------

Foreground programs may use all of the machine's CPU power. Background
programs, however, may use no more than a fixed amount -- currently we're
looking to use 10% -- unless given a special permission by the user.

The Sugar UI environment on the XO laptops does not support overlapping
windows: only maximized application windows are supported. When we talk about
foreground and background execution, we are referring to programs that are, or
are not, currently displaying windows on the screen.



8.10. P_RTC: real time clock protection
---------------------------------------

A time offset from the RTC is maintained for each running program, and the
program is allowed to change the offset arbitrarily. This fulfills the need
of certain programs to change the system time they use (we already have a
music program that must synchronize to within 10ms with any machines with
which it co-plays a tune) while not impacting other programs on the system.



8.11. P_DSP_BG: background sound permission
-------------------------------------------

This is a permission, requestable at install-time, which lets the program
play audio while it isn't in the foreground. Its purpose is to make benign
programs immune to being used to play annoying or embarrassing loud sounds
if taken over.



8.12. P_X: X window system protection
-------------------------------------

When manually assigned to a program by the user through a graphical
security interface, this permission lets a program send synthetic mouse
X events to another program. Its purpose is to enable the use of
accessibility software such as an on-screen keyboard. The permission is NOT
requestable at install-time, and thus must be manually assigned by the user
through a graphical interface, unless the software wishing to use it is
cryptographically signed by a trusted authority.

Without this permission, programs cannot eavesdrop on or fake one another's
events, which disables key logging software or sophisticated synthetic event
manipulation attacks, where malicious software acts as a remote control for
some other running program.



8.13. P_IDENT: identity service
-------------------------------

The identity service is responsible for generating an ECC key pair at first
boot, keeping the key pair secure, and responding to requests to initiate
signed or encrypted sessions with other networked machines.

With the use of the identity service, all digital peer interactions or
communication (e-mails, instant messages, and so forth) can be
cryptographically signed to maintain integrity even as they're routed through
potentially malicious peers on the mesh, and may also be encrypted in countries
where this does not present a legal problem.



8.14. P_SANDBOX: program jails
----------------------------------

A program on the XO starts in a fortified chroot, akin to a BSD jail,
where its visible filesystem root is only its own constrained scratch space. It
normally has no access to system paths such as /proc or /sys, cannot see other
programs on the system or their scratch spaces, and only the libraries it needs
are mapped into its scratch space. It cannot access user documents directly,
but only through the file store service, explained in the next section.

Every program scratch space has three writable directories, called 'tmp',
'conf', and 'data'. The program is free to use these for temporary,
configuration, and data (resource) files, respectively. The rest of the scratch
space is immutable; the program may not modify its binaries or core
resource files. This model ensures that a program may be restored to its
base installation state by emptying the contents of the three writable
directories, and that it can be completely uninstalled by removing its bundle
(scratch space) directory.



8.15. P_DOCUMENT: file store service
------------------------------------

Unlike with traditional machines, user documents on the XO laptop are not
stored directly on the filesystem. Instead, they are read and stored through
the file store service, which provides an object-oriented interface to user
documents. Similar in very broad terms to the Microsoft WinFS design, the file
store allows rich metadata association while maintaining traditional UNIX
read()/write() semantics for actual file content manipulation.

Programs on the XO may not use the open() call to arbitrarily open user
documents in the system, nor can they introspect the list of available
documents, e.g. through listing directory contents.  Instead, when a program
wishes to open a user document, it asks the system to present the user with a
'file open' dialog. A copy-on-write version of the file that the user selects
is also mapped into this scratch space -- in effect, the file just "appears",
along with a message informing the program of the file's path within the
scratch space.

Unix supports the passing of file descriptors (fds) through Unix domain
sockets, so an alternative implementation of P_DOCUMENT would merely pass in
the fd of the file in question to the calling program. We have elected not to
pursue this approach because communication with the file store service does not
take place directly over Unix domain sockets, but over the D-BUS IPC mechanism,
and because dealing with raw fds can be a hassle in higher-level languages.

Benign programs are not adversely impacted by the need to use the file store
for document access, because they generally do not care about rendering their
own file open dialogs (with the rare exception of programs which create
custom dialogs to e.g. offer built-in file previews; for the time being, we
are not going to support this use case).

Malicious programs, however, lose a tremendous amount of ability to violate
the user's privacy or damage her data, because all document access requires
explicit assent by the user.



8.16. P_DOCUMENT_RO
-------------------

Certain kinds of software, such as photo viewing programs, need access to
all documents of a certain kind (e.g. images) to fulfill their desired
function. This is in direct opposition with the P_DOCUMENT protection which
requires user consent for each document being opened -- in this case, each
photo.

To resolve the quandary, we must ask ourselves: "from what are we trying to
protect the user?". The answer, here, is a malicious program which requests
permission to read all images, or all text files, or all e-mails, and then
sends those documents over the network to an attacker or posts them publicly,
seriously breaching the user's privacy.

We solve this by allowing programs to request read-only permissions for one
type of document (e.g. image, audio, text, e-mail) at installation time, but
making that permission (P_DOCUMENT_RO) mutually exclusive with asking for any
network access at all. A photo viewing program, in other words, normally
has no business connecting to the Internet.

As with other permissions, the user may assign the network permission to a
program which requested P_DOCUMENT_RO at install, bypassing the mutual
exclusion.



8.17. P_DOCUMENT_RL: file store rate limiting
---------------------------------------------

The file store does not permit programs to store new files or new versions
of old files with a frequency higher than a certain preset, e.g. once every 30
seconds.



8.18. P_DOCUMENT_BACKUP: file store backup service
--------------------------------------------------

When in range of servers that advertise themselves as offering a backup
service, the laptop will automatically perform incremental backups of user
documents which it can later retrieve. Because of the desire to avoid having to
ask children to generate a new digital identity if their laptop is ever lost,
stolen or broken, by default the child's ECC keypair is also backed up to the
server. Given that a child's private key normally has no password protection,
stealing the primary backup server (normally the school server) offers the
thief the ability to impersonate any child in the system.

For now, we deem this an acceptable risk. We should also mention that the
private key will only be backed up to the primary backup server -- usually in
the school -- and not any server that advertises itself as providing backup
service. Furthermore, for all non-primary backup servers, only encrypted
version of the incremental backups will be stored.



8.19. P_THEFT: anti-theft protection
------------------------------------

The OLPC project has received very strong requests from certain countries
considering joining the program to provide a powerful anti-theft service that
would act as a theft deterrent against most thieves.

We provide such a service for interested countries to enable on the laptops. It
works by running, as a privileged process that cannot be disabled or
terminated even by the root user, an anti-theft daemon which detects Internet
access, and performs a call-home request -- no more than once a day -- to the
country's anti-theft servers. In so doing, it is able to securely use NTP to
set the machine RTC to the current time, and then obtain a cryptographic lease
to keep running for some amount of time, e.g. 21 days. The lease duration is
controlled by each country.

A stolen laptop will have its (SN, UUID) tuple reported to the country's OLPC
oversight body in charge of the anti-theft service. The laptop will be marked
stolen in the country's master database.

A thief might do several things with a laptop: use it to connect to the
Internet, remove it from any networks and attempt to use it as a standalone
machine, or take it apart for parts.

In the former case, the anti-theft daemon would learn that the laptop is stolen
as soon as it's connected to the Internet, and would perform a hard shutdown
and lock the machine such that it requires activation, described previously, to
function.

We do not expect the machines will be an appealing target for part resale. Save
for the custom display, all valuable parts of the XO laptops are soldered onto
the motherboard.

To address the case where a stolen machine is used as a personal computer but
not connected to the Internet, the anti-theft daemon will shut down and lock
the machine if its cryptographic lease ever expires. In other words, if the
country operates with 21-day leases, a normal, non-stolen laptop will get the
lease extended by 21 days each day it connects to the Internet. But if the
machine does not connect to the Internet for 21 days, it will shut down and
lock.

Since this might present a problem in some countries due to intermittent
Internet access, the leases can either be made to last rather long (they're
still an effective theft deterrent even with a 3 month duration), or they can
be manually extended by connecting a USB drive to the activation server. For
instance, a country may issue 3-week leases, but if a school has a satellite
dish failure, the country's OLPC oversight body may mail a USB drive to the
school handler, which when connected to the school server, transparently
extends the lease of each referenced laptop for some period of time.

The anti-theft system cannot be bypassed as long as P_SF_CORE is enabled (and
disabling it requires a developer key). This, in effect, means that a child is
free to do any modification to her machine's userspace (by disabling P_SF_RUN
without a developer key), but cannot change the running kernel without
requesting the key. The key-issuing process incorporates a 14-day delay to
allow for a slow theft report to percolate up through the system, and is only
issued if the machine is not reported stolen at the end of that period of time.



8.21. P_SERVER_AUTH: transparent strong authentication to trusted server
------------------------------------------------------------------------

When in wireless range of a trusted server (e.g. one provided by OLPC or the
country), the laptop can securely respond to an authentication challenge with
its (SN, UUID) tuple. In addition to serving as a means for the school to
exercise network access control -- we know about some schools, for instance,
that do not wish to provide Internet access to alumni, but only current
students -- this authentication can unlock extra services like backup and
access to a decentralized digital identity system such as OpenID.

[[OpenID -> http://en.wikipedia.org/wiki/OpenID]] is particularly appealing
to OLPC, because it can be used to perpetuate passwordless access even on sites
that normally require authentication, as long as they support OpenID. The most
common mode of operation for current OpenID identity providers is to request
password authentication from the user. With an OpenID provider service running
on the school server (or other trusted servers), logins to OpenID-enabled sites
will simply succeed transparently, because the child's machine has been
authenticated in the background by P_SERVER_AUTH.



8.21. (For later implementation) P_PASSWORD: password protection
----------------------------------------------------------------

It is unclear whether this protection will make it in to generation 1 of the XO
laptops. When implemented, however, it will allow the user to set a password to
be used for her digital identity, booting the machine, and accessing some of
her files.




9. Addressing the threat model
==============================

We look at the five categories of "bad things" software can do as listed in
Chapter 7, and explain how protections listed in Chapter 8 help. The following
sections are given in the same order as software threat model entries in
Chapter 7.



9.1. Damaging the machine
-------------------------

P_BIOS_CORE ensures the BIOS can only be updated by BIOS images coming from
trusted sources. A child with a developer key may flash whichever BIOS she
pleases, though if we are able to implement P_BIOS_COPY, the machine will
remain operational even if the child flashes a broken or garbage BIOS.
Programs looking to damage the OS cannot do so because of P_SANDBOX and
P_SF_RUN. Should a user with P_SF_RUN disabled be tricked into damaging her OS
or do so accidentally, P_SF_CORE enables her to restore her OS to its initial
(activated) state at boot time.

Programs trying to trash the NAND by exhausting write/erase cycles are
controlled through P_NAND_RL, and disk exhaustion attacks in the scratch space
are curbed by P_NAND_QUOTA. Disk exhaustion attacks with user documents are
made much more difficult by P_DOCUMENT_RL.

CPU-hogging programs are reined in with P_CPU_RL. Network-hogging programs are
controlled by policy via P_NET.



9.2. Compromising privacy
-------------------------

Arbitrary reading and/or sending of the user's documents over the network is
curbed by P_DOCUMENT, while tagging documents with the program that created
them addresses the scenario in which a malicious program attempts to spam
the search service. Search results from a single program can simply be
hidden (permanently), or removed from the index completely.

P_DOCUMENT_RO additionally protects the user from wide-scale privacy breaches
by software that purports to be a "viewer" of some broad class of documents.

P_MIC_CAM makes eavesdropping on the user difficult, and P_X makes it very hard
to steal passwords or other sensitive information, or monitor text entry from
other running programs.



9.3. Damaging the user's data
-----------------------------

File store does not permit programs to overwrite objects such as e-mail and
text which aren't opaque binary blobs. Instead, only a new version is stored,
and the file store exposes a list of the full version history. This affords a
large class of documents protection against deletion or corruption at the hands
of a malicious program -- which, of course, had to obtain the user's
permission to look at the file in question in the first place, as explained in
P_DOCUMENT.

For binary blobs -- videos, music, images -- a malicious program in which
the user specifically opens a certain file does have the ability to corrupt or
delete the file. However, we cannot protect the user from herself. We point
out that such deletion is constrained to _only_ those files which the user
explicitly opened. Furthermore, P_DOCUMENT_BACKUP allows a final way out even
in such situations, assuming the machine came across a backup server (OLPC
school servers advertise themselves as such).



9.4. Doing bad things to other people
-------------------------------------

XO laptops will be quite unattractive as spam relays or floodnet clients due to
network rate and transfer limits imposed on all non-signed programs by
P_NET. Despite the appeal of the XO deployment scale for spamming or flooding,
we expect that a restriction to generally low-volume network usage for
untrusted software -- coupled with the great difficulty in writing worms or
self-propagating software for XO machines -- will drastically reduce this
concern.



9.5. Impersonating the user
---------------------------

The design of the identity service, P_IDENT, does not allow programs to
ever come in direct contact with the user's cryptographic key pair, nor to
inject information into currently-open sessions which are using the identity
service for signing or encryption.



9.6. Miscellaneous
------------------

In addition to the protections listed above which each address some part of the
threat model, permissions P_RTC and P_THEFT combine to offer an anti-theft
system that requires non-trivial sophistication (ability to tamper with
on-board hardware) to defeat, and P_DSP_BG provides protection against certain
types of annoying malware, such as the infamous 1989 Yankee Doodle virus.



9.7. Missing from this list
---------------------------

At least two problems, commonly associated with laptops and child computer
users respectively, are not discussed by our threat model or protection
systems: hard drive encryption and objectionable content filtering / parental
controls.


=== 9.7.1. Filesystem encryption ===

While the XO laptops have no hard drive to speak of, the data encryption
question applies just as well to our flash primary storage. The answer consists
of two parts: firstly, filesystem encryption is too slow given our hardware.
The XO laptops can encrypt about 2-4 MB/s with the AES-128 algorithm in CBC
mode, using 100% of the available CPU power. This is about ten times less than
the throughput of the NAND flash chip. Moving to a faster algorithm such as RC4
increases encryption throughput to about 15 MB/s with large blocks at 100% CPU
utilization, and is hence still too slow for general use, and provides
questionable security. Secondly, because of the age of our users, we have
explicitly designed the Bitfrost platform not to rely on the user setting
passwords to control access to her computer. But without passwords, user data
encryption would have to be keyed based on unique identifiers of the laptop
itself, which lends no protection to the user's documents in case the laptop is
stolen.

Once the Bitfrost platform supports the P_PASSWORD protection, which might not
be until the second generation of the XO laptops, we will provide support for
the user to individually encrypt files if she enabled the protection and set a
password for herself.


=== 9.7.2. Objectionable content filtering ===

The Bitfrost platform governs system security on the XO laptops. Given that
"objectionable content" lacks any kind of technical definition, and is instead
a purely social construct, filtering such content lies wholly outside of the
scope of the security platform and this document.




10. Laptop disposal and transfer security
=========================================

The target lifetime of an XO laptop is five years. After this time elapses, the
laptop's owner might wish to dispose of the laptop. Similarly, for logistical
reasons, a laptop may change hands, going from one owner to another.

A laptop re-initialization program will be provided which securely erases the
user's digital identity and all user documents from a laptop. When running in
"disposal" mode, that program could also be made to permanently disable the
laptop, but it is unclear whether such functionality is actually necessary, so
there are no current plans for providing it.




11. Closing words
=================

In Norse mythology, Bifröst is the bridge which keeps mortals, inhabitants of
the realm of Midgard, from venturing into Asgard, the realm of the gods. In
effect, Bifröst is a powerful security system designed to keep out unwanted
intruders.

This is not why the OLPC security platform's name is a play on the name of the
mythical bridge, however. What's particularly interesting about Bifröst is a
story that 12th century Icelandic historian and poet Snorri Sturluson tells in
the first part of his poetics manual called the Prose Edda. Here is the
relevant excerpt from the 1916 translation by Arthur Gilchrist Brodeur:

    Then said Gangleri: "What is the way to heaven from earth?"

    Then Hárr answered, and laughed aloud: "Now, that is not wisely asked; has
    it not been told thee, that the gods made a bridge from earth, to heaven,
    called Bifröst? Thou must have seen it; it may be that ye call it rainbow.'
    It is of three colors, and very strong, and made with cunning and with more
    magic art than other works of craftsmanship. But strong as it is, yet must
    it be broken, when the sons of Múspell shall go forth harrying and ride it,
    and swim their horses over great rivers; thus they shall proceed."

    Then said Gangleri: "To my thinking the gods did not build the bridge
    honestly, seeing that it could be broken, and they able to make it as they
    would."

    Then Hárr replied: "The gods are not deserving of reproof because of this
    work of skill: a good bridge is Bifröst, but nothing in this world is of
    such nature that it may be relied on when the sons of Múspell go
    a-harrying."

This story is quite remarkable, as it amounts to a 13th century recognition of
the idea that there's no such thing as a perfect security system.

To borrow Sturluson's terms, we believe we've imbued the OLPC security system
with cunning and more magic art than other similar works of craftmanship -- but
not for a second do we believe we've designed something that cannot be broken
when talented, determined and resourceful attackers go forth harrying. Indeed,
this was not the goal. The goal was to significantly raise the bar from the
current, deeply unsatisfactory, state of desktop security. We believe Bitfrost
accomplishes this, though only once the laptops are deployed in the field will
we be able to tell with some degree of certainty whether we have succeeded.

If the subject matter interests you, please join the OLPC security mailing
list, share your thoughts, and join the discussion.





END