302 |
302 |
303 \end{frame} |
303 \end{frame} |
304 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
304 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
305 |
305 |
306 |
306 |
307 |
307 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
308 |
308 \begin{frame}[c] |
309 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
309 \frametitle{The Bell/LaPadula Model} |
310 \mode<presentation>{ |
310 |
311 \begin{frame}[c] |
311 \begin{itemize} |
312 \frametitle{Setuid and Setgid} |
312 \item Formal policy model for mandatory access control in a military multi-level security environment. |
313 |
313 All subjects (processes, users, terminals) and data objects (files, directories, windows, connections) are labeled with a confidentiality level, e.g. |
314 The solution is that unix file permissions are 9 + \underline{2 Bits}: |
|
315 \alert{Setuid} and \alert{Setgid} Bits |
|
316 |
|
317 \begin{itemize} |
|
318 \item When a file with setuid is executed, the resulting process will assume the UID given to the owner of the file. |
|
319 \item This enables users to create processes as root (or another user).\bigskip |
|
320 |
|
321 \item Essential for changing passwords, for example. |
|
322 \end{itemize} |
|
323 |
|
324 \begin{center} |
314 \begin{center} |
325 \texttt{chmod 4755 fobar\_file} |
315 unclassified < confidential < secret < top secret. |
326 \end{center} |
316 \end{center} |
327 |
317 |
|
318 \item |
|
319 The system policy automatically prevents the flow of information from high-level objects to lower levels. A process that reads top secret data becomes tagged as top secret by the operating system, as will be all files into which it writes afterwards. |
|
320 %Each user has a maximum allowed confidentiality level specified and cannot receive data beyond that level. A selected set of trusted subjects is allowed to bypass the restrictions, in order to permit the declassification of information. |
|
321 \end{itemize} |
|
322 |
|
323 \end{frame} |
|
324 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
325 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
326 \mode<presentation>{ |
|
327 \begin{frame}[c] |
|
328 \frametitle{Bell-LaPadula} |
|
329 \small |
|
330 |
|
331 \begin{itemize} |
|
332 \item \alert{Read Rule}: A principal \bl{$P$} can read an object \bl{$O$} if and only if |
|
333 \bl{$P$}'s security level is at least as high as \bl{$O$}'s. |
|
334 \item \alert{Write Rule}: A principal \bl{$P$} can write an object \bl{$O$} if and only if |
|
335 \bl{$O$}'s security level is at least as high as \bl{$P$}'s.\medskip |
|
336 |
|
337 \item Meta-Rule: All principals in a system should have a sufficiently high security level |
|
338 in order to access an object. |
|
339 \end{itemize}\bigskip |
|
340 |
|
341 This restricts information flow $\Rightarrow$ military\bigskip\bigskip\pause |
|
342 |
|
343 Bell-LaPadula: {\bf `no read up'} - {\bf `no write down'} |
|
344 |
|
345 \end{frame}} |
|
346 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
347 % |
|
348 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
349 \mode<presentation>{ |
|
350 \begin{frame}[c] |
|
351 \frametitle{\begin{tabular}{c}Principle of\\[-2mm] Least Privilege\end{tabular}} |
|
352 |
|
353 \begin{tikzpicture} |
|
354 \draw (0,0) node[inner sep=2mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] |
|
355 {\normalsize\color{darkgray} |
|
356 \begin{minipage}{10cm}\raggedright |
|
357 A principal should have as few privileges as possible to access a resource. |
|
358 \end{minipage}}; |
|
359 \end{tikzpicture}\bigskip\bigskip |
|
360 \small |
|
361 |
|
362 \begin{itemize} |
|
363 \item Bob ($T\!S$) and Alice ($S$) want to communicate |
|
364 \item[] $\Rightarrow$ Bob should lower his security level |
|
365 \end{itemize} |
|
366 |
|
367 \end{frame}} |
|
368 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
369 % |
|
370 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
371 \mode<presentation>{ |
|
372 \begin{frame}[c] |
|
373 \frametitle{Biba Policy} |
|
374 \small |
|
375 |
|
376 Data Integrity (rather than data confidentiality) |
|
377 |
|
378 \begin{itemize} |
|
379 \item Biba: {\bf `no read down'} - {\bf `no write up'} |
|
380 \item \alert{Read Rule}: A principal \bl{$P$} can read an object \bl{$O$} if and only if |
|
381 \bl{$P$}'s security level is lower or equal than \bl{$O$}'s. |
|
382 \item \alert{Write Rule}: A principal \bl{$P$} can write an object \bl{$O$} if and only if |
|
383 \bl{$O$}'s security level is lower or equal than \bl{$P$}'s. |
|
384 \end{itemize}\bigskip\bigskip\pause |
|
385 |
|
386 E.g.~Generals write orders to officers; officers write oders to solidiers\\ |
|
387 Firewall: you can read from inside the firewall, but not from outside\\ |
|
388 Phishing: you can look at an approved PDF, but not one from a random email\\ |
|
389 |
|
390 \end{frame}} |
|
391 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
392 % |
|
393 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
394 \mode<presentation>{ |
|
395 \begin{frame}[c] |
|
396 \frametitle{Shared Access Control} |
|
397 |
|
398 \begin{center} |
|
399 \includegraphics[scale=0.7]{pics/pointsplane.jpg} |
|
400 \end{center} |
|
401 |
|
402 \begin{textblock}{11}(10.5,10.5) |
|
403 \small |
|
404 To take an action you\\[-1mm] |
|
405 need at least either: |
|
406 \begin{itemize} |
|
407 \item 1 CEO\\[-5mm] |
|
408 \item 2 MDs, or\\[-5mm] |
|
409 \item 3 Ds |
|
410 \end{itemize} |
|
411 \end{textblock} |
|
412 |
|
413 \end{frame}} |
|
414 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
415 |
|
416 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
417 \mode<presentation>{ |
|
418 \begin{frame}[c] |
|
419 \frametitle{Lessons from Access Control} |
|
420 |
|
421 Not just restricted to Unix: |
|
422 |
|
423 \begin{itemize} |
|
424 \item if you have too many roles (i.e.~too finegrained AC), then |
|
425 hierarchy is too complex\\ |
|
426 \textcolor{gray}{you invite situations like\ldots let's be root}\bigskip |
|
427 |
|
428 \item you can still abuse the system\ldots |
|
429 |
|
430 \end{itemize} |
|
431 |
|
432 \end{frame}} |
|
433 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
434 |
|
435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
436 \mode<presentation>{ |
|
437 \begin{frame}[t] |
|
438 \frametitle{Protocols} |
|
439 |
|
440 \mbox{} |
|
441 |
|
442 \begin{tabular}{l} |
|
443 {\Large \bl{$A\;\text{sends}\; B : \ldots$}}\\ |
|
444 \onslide<2->{\Large \bl{$B\;\text{sends}\; A : \ldots$}}\\ |
|
445 \onslide<2->{\Large \;\;\;\;\;\bl{$:$}}\bigskip |
|
446 \end{tabular} |
|
447 |
|
448 \begin{itemize} |
|
449 \item by convention \bl{$A$}, \bl{$B$} are named principals \bl{Alice\ldots}\\ |
|
450 but most likely they are programs, which just follow some instructions (they are more like roles)\bigskip |
|
451 \item<2-> indicates one ``protocol run'', or session, which specifies some |
|
452 order in the communication |
|
453 \item<2-> there can be several sessions in parallel (think of wifi routers) |
|
454 \end{itemize} |
|
455 |
|
456 \end{frame}} |
|
457 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
458 |
|
459 |
|
460 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
461 \mode<presentation>{ |
|
462 \begin{frame}[c] |
|
463 \frametitle{A mutual authentication protocol} |
|
464 |
|
465 \begin{center} |
|
466 \begin{tabular}{ll} |
|
467 \bl{$A \rightarrow B$:} & \bl{$N_a$}\\ |
|
468 \bl{$B \rightarrow A$:} & \bl{$\{N_a, N_b\}_{K_{ab}}$}\\ |
|
469 \bl{$A \rightarrow B$:} & \bl{$N_b$}\\ |
|
470 \end{tabular} |
|
471 \end{center} |
|
472 |
|
473 Explain how an attacker \bl{$B'$} can launch an impersonation attack by |
|
474 intercepting all messages for \bl{$B$} and make \bl{$A$} decrypt her own challenges. |
|
475 |
328 \end{frame}} |
476 \end{frame}} |
329 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
477 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
330 |
478 |
|
479 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
480 \mode<presentation>{ |
|
481 \begin{frame}[c] |
|
482 \frametitle{Nonces} |
|
483 |
|
484 \begin{enumerate} |
|
485 \item I generate a nonce (random number) and send it to you encrypted with a key we share |
|
486 \item you increase it by one, encrypt it under a key I know and send |
|
487 it back to me |
|
488 \end{enumerate} |
|
489 |
|
490 |
|
491 I can infer: |
|
492 |
|
493 \begin{itemize} |
|
494 \item you must have received my message |
|
495 \item you could only have generated your answer after I send you my initial |
|
496 message |
|
497 \item if only you and me know the key, the message must have come from you |
|
498 \end{itemize} |
|
499 |
|
500 \end{frame}} |
|
501 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
502 |
|
503 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
504 \mode<presentation>{ |
|
505 \begin{frame}[c] |
|
506 |
|
507 \begin{center} |
|
508 \begin{tabular}{l} |
|
509 \bl{$A \rightarrow S :$} \bl{$A, B, N_A$}\\ |
|
510 \bl{$S \rightarrow A :$} \bl{$\{N_A, B, K_{AB},\{K_{AB}, A\}_{K_{BS}} \}_{K_{AS}}$}\\ |
|
511 \bl{$A \rightarrow B :$} \bl{$\{K_{AB}, A\}_{K_{BS}} $}\\ |
|
512 \bl{$B \rightarrow A :$} \bl{$\{N_B\}_{K_{AB}}$}\\ |
|
513 \bl{$A \rightarrow B :$} \bl{$\{N_B-1\}_{K_{AB}}$}\pause\\ |
|
514 \hspace{5cm}compromise \bl{$K_{AB}$}\pause\\ |
|
515 \bl{$A \rightarrow S :$} \bl{$A, B, N'_A$}\\ |
|
516 \bl{$S \rightarrow A :$} \bl{$\{N'_A, B, K'_{AB},\{K'_{AB}, A\}_{K_{BS}} \}_{K_{AS}}$}\pause\\ |
|
517 \bl{$I(A) \rightarrow B :$} \bl{$\{K_{AB}, A\}_{K_{BS}} $}\hspace{0.5cm} replay of older run\pause\\ |
|
518 \bl{$B \rightarrow I(A) :$} \bl{$\{N'_B\}_{K_{AB}}$}\\ |
|
519 \bl{$I(A) \rightarrow B :$} \bl{$\{N'_B-1\}_{K_{AB}}$}\ |
|
520 \end{tabular} |
|
521 \end{center}\pause |
|
522 |
|
523 \bl{$B$} believes it is following the correct protocol, |
|
524 intruder \bl{$I$} can form the correct response because it knows \bl{$K_{AB}$} and |
|
525 talks to \bl{$B$} masquerading as \bl{$A$} |
|
526 \end{frame}} |
|
527 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
331 |
528 |
332 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
529 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
333 \mode<presentation>{ |
530 \mode<presentation>{ |
334 \begin{frame}[c] |
531 \begin{frame}[c] |
335 \frametitle{\begin{tabular}{c}Privilege Separation in\\ OpenSSH\end{tabular}} |
532 \frametitle{\begin{tabular}{c}Privilege Separation in\\ OpenSSH\end{tabular}} |