COMP 2711H: Lecture 25

Date: 2024-10-28 18:04:17

Reviewed:

Topic / Chapter:

summary

❓Questions

Notes

Symmetric Encryption
  • Symmetric encryption

    • Alice: want to send message to Bob
    • Eve: can check what's being sent on channel
    • encryption scheme
      • s.t.
    • public: encrypted text, length of original / encrypted text
    • old ways: maintaining algorithms private
      • problem: leakage requires complete redesign of algorithm
      • thus: let based on shared key of Alice and Bob
    • algorithm: called symmetric as same key is used for both encryption & decryption
  • One-time pad

    • : binary seq. of length
      • same for
    • let
      • then
        • given , all have the same chance of appearing!
    • let
      • then
        • has the same property
    • reusing : should be avoided (provides statistical data)
      • use RNG from previous value for
    • but, how can we have shared key in the first place?
      • Diffie-Hellman-Merkle key exchange!
  • Diffie-Hellman-Merkle key exchange

    • procedure: (can be done by either Alice / Bob)
      1. choose a large prime number (~= 1000 digits), and publish
        • from now on: all computation are
      2. choose a primitive root , and announce
        • : p.r. if
        • e.g. : primitive root for
graph LR
         1((1));2((2));3((3))
         4((4));5((5));6((6))
         7((7));8((8));9((9))
         10((10))
         2-->4;
         4-->8;8-->5;5-->10;
         10-->9;9-->7;7-->3;
         3-->6;6-->1;1-->2
   - finding primitive root: fairly easy
     - choose random number, and check if it is a primitive root
3. Alice and Bob: chooses secret <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">a</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">b</span></span></span></span> respectively
4. Alice: publishes <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.9444em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6644em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">a</span></span></span></span></span></span></span></span><span class="mord">%</span><span class="mord mathnormal">p</span></span></span></span>, Bob publishes <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0435em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8491em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">b</span></span></span></span></span></span></span></span><span class="mord">%</span><span class="mord mathnormal">p</span></span></span></span>
   - system: based on discrete logarithm problem
     - which no one knows efficient algorithm
       - 👨‍🏫 yet mathematicians didn't prove it so far
     - problem: given <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8588em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6644em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">a</span></span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span></span></span></span>, compute <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">a</span></span></span></span>
5. Alice: computes <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0435em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8491em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ab</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1.0991em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8491em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">b</span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6644em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">a</span></span></span></span></span></span></span></span><span class="mord">%</span><span class="mord mathnormal">p</span></span></span></span>
   - and Bob <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0991em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6644em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">a</span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8491em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">b</span></span></span></span></span></span></span></span><span class="mord">%</span><span class="mord mathnormal">p</span></span></span></span>
   - Eve: cannot compute <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0435em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8491em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ab</span></span></span></span></span></span></span></span></span></span></span></span> efficiently
     - Diffie-Hellman-Merkle "assumption"
   - <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1.0435em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8491em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ab</span></span></span></span></span></span></span></span></span></span></span></span>
Public Key Cryptography
  • Public key cryptography

    • aka asymmetric encryption
    • different keys are used for encryption & decryption
    • Bob: with key
      • : public key, for encryption
      • : private key, for decryption
      • s.t.
    • new protocol: ElGamal encryption
      • Bob: chooses a prime , and primitive root , secret value
        • and computes
        • publishes:
          • anyone: can lookup and evaluate
          • 👨‍🏫 non-interactive!
      • Alice: to send to Bob
        • choose secret , compute
        • compute
        • sends the result:
        • 👨‍🏫 notice, many people can send message to Bob
          • without additional interaction (except decryption)
      • Bob: decrypts message by:
        • compute
        • and subtract it from
  • RSA

    • 👨‍🏫: why not make keys simpler?
    • let
    • s.t.
      • and
    • idea: choose random s.t. MMI exist
    • Bob: choose
      • publish
    • Alice: send
    • and
    • problem:
      • thus computing is easy!
      • 👨‍🏫 anyone can decrypt! useless encryption scheme!