A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>The End of Safe Harbor and a Scary Path Forward (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="http://lucumr.pocoo.org/2015/10/6/end-of-safe-harbor/">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. The End of Safe Harbor and a Scary Path Forward (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="http://lucumr.pocoo.org/2015/10/6/end-of-safe-harbor/">Source originale du contenu</a></h3>
  445. <p>In the Austrian internets <a class="reference external" href="http://www.politico.eu/wp-content/uploads/2015/10/schrems-judgment.pdf">the news about the end of the safe harbor act</a>
  446. has been universally welcomed it seems. Especially from non technical
  447. folks that see this as a big win for their privacy. Surprisingly many
  448. technical people also welcomed this ruling. And hey, if Snowden says
  449. that's a good ruling, who will argue against.</p>
  450. <p>I'm very torn about this issue because from a purely technical point of
  451. view it is very tricky to follow the ruling and by keeping to the current
  452. state of our data center environments in the light of some other rulings.</p>
  453. <p>I'm as disappointed as everybody else that government agencies are
  454. operating above what seems reasonable from a privacy point of view, but we
  455. should be careful about what how this field develops. Fundamentally
  456. sharing information on the internet and the right to privacy stand in
  457. conflict to each other and the topic is a lot more complex than to just
  458. demand more privacy without considering what this means on a technical
  459. level.</p>
  460. <div class="section" id="what-was-safe-harbor">
  461. <h2>What Was Safe Harbor?</h2>
  462. <p>The US-EU Safe Harbor laws declared US soil as a safe location for user
  463. data to fulfill the European Privacy Directive. In a nutshell: this was
  464. the only reason any modern internet service could keep their primary user
  465. data in the United States on services like Amazon EC2 or Heroku.</p>
  466. <p>In essence Safe Harbor was a self assessment that an American company
  467. could sign to make itself subject to the European Data Protection
  468. Directive. At least in principle. Practically very few US companies
  469. cared about privacy which is probably a big reason why we ended up in this
  470. situation right now. The second one is the NSA surveillance but I want to
  471. cover this in particular separately a bit later.</p>
  472. </div>
  473. <div class="section" id="what-changed">
  474. <h2>What Changed?</h2>
  475. <p>Maximillian Schrems, an Austrian citizen, has started an investigation
  476. into Facebook and it's data deletion policies a while ago and been
  477. engaging with the Irish authorities on that matter ever since. The Irish
  478. rejected the complaint because they referred to the Safe Harbor act. What
  479. changed now is that the European Court of Justice ruled the following:</p>
  480. <blockquote>
  481. <p>In today’s judgment, the Court of Justice holds that the existence of
  482. a Commission decision finding that a third country ensures an adequate
  483. level of protection of the personal data transferred cannot eliminate
  484. or even reduce the powers available to the national supervisory
  485. authorities under the Charter of Fundamental Rights of the European
  486. Union and the directive.</p>
  487. <p>[…]</p>
  488. <p><strong>For all those reasons, the Court declares the Safe Harbour Decision
  489. invalid</strong>. This judgment has the consequence that the Irish supervisory
  490. authority is required to examine Mr Schrems’ complaint with all due
  491. diligence and, at the conclusion of its investigation, is to decide
  492. whether, pursuant to the directive, transfer of the data of Facebook’s
  493. European subscribers to the United States should be suspended on the
  494. ground that that country does not afford an adequate level of
  495. protection of personal data.</p>
  496. </blockquote>
  497. <p>The detailed ramifications of this are a bit unclear, but if you were
  498. relying on Safe Harbor so far, you probably have to move servers now.</p>
  499. </div>
  500. <div class="section" id="why-was-safe-harbor-useful">
  501. <h2>Why Was Safe Harbor Useful?</h2>
  502. <p>So if you take the internet three years ago (before the Ukrainian
  503. situation happened) the most common of legally running an international
  504. internet platform as a smallish startup was to put the servers somewhere
  505. in the US and fill out the safe harbor self assessment every 12 months.</p>
  506. <p>To understand why that was a common setup you need to consider why it was
  507. chosen in the first place. The European Data Protection Directive came
  508. into effect quite a long time ago. It's dated for the end of 1995 and
  509. required user data to be either stored in EFTA states or optionally in
  510. another country if it can be ensured that the same laws are upheld. This
  511. is what safe harbor did. In absence of this, all data from European
  512. citizens must be stored on European soil.</p>
  513. <p>After the Ukrainian upraising and after Crimea fell to the Russian
  514. Federation a few things changed. International sanctions were put up
  515. against Russia and Russia decided to adopt the same provision as the
  516. European Union: Russian citizen's data has to be stored on Russian
  517. servers. This time however without an option to get exceptions to this
  518. rule.</p>
  519. <p>It's true that the US do not yet have a provision that requires US citizen
  520. data to be stored in the States, but this is something that has been
  521. discussed in the past and it's a requirement for working with the
  522. government already. However with both Russia and Europe we now have two
  523. large international players that set the precedent and it can only get
  524. worse from here.</p>
  525. </div>
  526. <div class="section" id="privacy-vs-data-control">
  527. <h2>Privacy vs Data Control</h2>
  528. <p>The core of the issue currently is that data is considered power and
  529. privacy is a secondary issue there. While upholding privacy is an
  530. important and necessary goal, we need to be careful to not forget that
  531. the European countries are not any better. While it's nice to blame the
  532. NSA for world wide surveillance programs, we Europeans have our own
  533. governmental agencies that act with very little supervision and especially
  534. in the UK operate on the same invasiveness as in the US.</p>
  535. <p>A European cloud provider will have to comply with local law enforcement
  536. just as much as an American cloud provider will have to be with federal US
  537. one. The main difference just being the institutions involved.</p>
  538. <p>The motivation for the Russian government is most likely related to law
  539. enforcement over privacy. I'm almost sure they care more about keeping
  540. certain power over companies doing business in Russia to protect
  541. themselves against international sanctions than their citizens privacy.</p>
  542. </div>
  543. <div class="section" id="data-locality-and-personal-data">
  544. <h2>Data Locality and Personal Data</h2>
  545. <p>So what exactly is the problem with storing European citizens data in
  546. Europe, data of Americans in the states and the data of Russians somewhere
  547. in the Russian Federation? Unsurprisingly this is a very hard problem to
  548. solve if you want to allow people from those different countries to
  549. interact with each other.</p>
  550. <p>Let's take a hypothetical startup here that wants to build some sort of
  551. Facebook for climbers. They have a very niche audience but they attract
  552. users from all over the world. Users of the platform can make
  553. international friendships, upload their climbing trips, exchange messages
  554. with each other and also purchase subscriptions for "pro" features like
  555. extra storage.</p>
  556. <p>So let's say we want to identify Russians, Americans and Europeans to keep
  557. the data local to each of their jurisdictions. The easy part is to set up
  558. some servers in all of those countries and make them talk to each other.
  559. The harder part is to figure out which user belongs to which jurisdiction.
  560. One way would be to make users upload their passport upon account creation
  561. and determine their main data center by their citizenship. This obviously
  562. would not cover dual citizens. A Russian-American might fall into two
  563. shards on a legal basis but they would only opt into one of them. So
  564. let's ignore those outliers. Let's also ignore what happens if the
  565. citizenship of a user changes because that process is quite involved and
  566. usually takes a few years and does not happen all that commonly.</p>
  567. <p>Now that we know where users are supposed to be stored, the question is
  568. how users are supposed to interact with each other. While distributed
  569. databases exist, they are not magic. Sending information from country to
  570. country takes a lot of time so operations that affect two users from
  571. different regions will involve quite a bit of delay. It also requires
  572. that the data temporarily crosses into another region. So if an American
  573. user sends data to a Russian user, that information will have to be
  574. processed somewhere.</p>
  575. <p>The problem however is if the information is not temporarily in flux. For
  576. instance sending a message from Russia to America could be seen as falling
  577. as being a duplicated message that is both intended for the American and
  578. Russian jurisdiction. Tricker it gets with information that cannot be
  579. directly correlated to a user. For instance what your friends are.
  580. Social relationships can only be modelled efficiently if the data is
  581. sufficiently local. We do not have magic in computing and we are bound to
  582. the laws of physics. If your friends are on the other side of the world
  583. (which nowadays the most likely are) it becomes impossible to handle.</p>
  584. <p>Credit card processing also falls in to this. Just because you are
  585. British does not mean your credit card is. Many people live in other
  586. countries and have many different bank accounts. The data inherently
  587. flows from system to system to clear the transaction. Our world is very
  588. connected nowadays and the concept of legal data locality is very much at
  589. odds with the realities of our world.</p>
  590. <p>The big cloud services are out, because they are predominantly placed in
  591. the US. Like it or not, Silicon Valley is many, many years ahead of what
  592. European companies can do. While there are some tiny cloud service
  593. providers in Europe, they barely go further than providing you with
  594. elastically priced hardware. For European startups this is a significant
  595. disadvantage over their American counterparts when they can no longer use
  596. American servers.</p>
  597. </div>
  598. <div class="section" id="privacy-not-data-locality">
  599. <h2>Privacy not Data Locality</h2>
  600. <p>The case has been made that this discussion is not supposed to be about
  601. data locality but about privacy. That is correct for sure, but
  602. unfortunately data centers fall into the jurisdiction of where they are
  603. placed. Unless we come up with a rule where data centers are placed on
  604. international soil where they computers within them are out of
  605. government's reach, a lot of this privacy discussion is dishonest.</p>
  606. <p>What if the bad player are the corporates and now the governments? Well
  607. in that case that was the whole point of safe harbor to begin with: to
  608. enforce stricter privacy standards on foreign corporations for European
  609. citizens.</p>
  610. </div>
  611. <div class="section" id="how-to-comply">
  612. <h2>How to Comply?</h2>
  613. <p>Now the question is how to comply with what this is going into. These new
  614. rules are more than implementable for Facebook size corporations, but it
  615. is incredibly hard to do for small startups. It's also not quite clear
  616. what can and what cannot be done with data now. At which point data is
  617. considered personal and at which point it is not, is something that
  618. differs from country to country and is in some situations even not
  619. entirely clear. For instance according to the UK DPA user relationships
  620. are personal information if they have "biographical significance".</p>
  621. </div>
  622. <div class="section" id="a-disconnected-world">
  623. <h2>A Disconnected World</h2>
  624. <p>What worries me is that we are taking a huge step back from an
  625. interconnected world where people can share information with each other,
  626. to more and more incompatible decentralization. Computer games
  627. traditionally have already enforced shards where people from different
  628. countries could not play together because of legal reasons. For instance
  629. many of my Russian friends could never play a computer game with me,
  630. because they are forced to play in their own little online world.</p>
  631. <p>Solutions will be found, and this ruling will probably have no significance
  632. for the average user. Most likely companies will ignore the ruling
  633. entirely anyways because nobody is going to prosecute anyone unless they
  634. are Facebook size. However that decisions of this magnitude are made
  635. without considering the technical feasibility is problematic.</p>
  636. </div>
  637. <div class="section" id="the-workaround">
  638. <h2>The Workaround</h2>
  639. <p>For all intents and purposes nothing will really change for large
  640. companies like Facebook anyways. They will have their lawyers argue that
  641. their system cannot be implemented in a way to comply with forcing data to
  642. live in Europe and as such will refer to Article 26 of the Data Protection
  643. Directive which states that personal data to an untrusted third country on
  644. either a user given consent to this or there being a technical necessity
  645. for fulfilling the contract between user and service provider. The TOS
  646. will change, the lawyers will argue and in the end the only one who will
  647. really have to pick up the shards are small scale companies which are
  648. already overwhelmed by all the prior rules.</p>
  649. <p>Today does not seem to be a good day for small cloud service providers.</p>
  650. </div>
  651. </article>
  652. </section>
  653. <nav id="jumpto">
  654. <p>
  655. <a href="/david/blog/">Accueil du blog</a> |
  656. <a href="http://lucumr.pocoo.org/2015/10/6/end-of-safe-harbor/">Source originale</a> |
  657. <a href="/david/stream/2019/">Accueil du flux</a>
  658. </p>
  659. </nav>
  660. <footer>
  661. <div>
  662. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  663. <p>
  664. Bonjour/Hi!
  665. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  666. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  667. </p>
  668. <p>
  669. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  670. </p>
  671. <p>
  672. Voici quelques articles choisis :
  673. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  674. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  675. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  676. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  677. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  678. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  679. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  680. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  681. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  682. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  683. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  684. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  685. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  686. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  687. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  688. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  689. </p>
  690. <p>
  691. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  692. </p>
  693. <p>
  694. Je ne traque pas ta navigation mais mon
  695. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  696. conserve des logs d’accès.
  697. </p>
  698. </div>
  699. </footer>
  700. <script type="text/javascript">
  701. ;(_ => {
  702. const jumper = document.getElementById('jumper')
  703. jumper.addEventListener('click', e => {
  704. e.preventDefault()
  705. const anchor = e.target.getAttribute('href')
  706. const targetEl = document.getElementById(anchor.substring(1))
  707. targetEl.scrollIntoView({behavior: 'smooth'})
  708. })
  709. })()
  710. </script>