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!
- : binary seq. of length
-
Diffie-Hellman-Merkle key exchange
- procedure: (can be done by either Alice / Bob)
- choose a large prime number (~= 1000 digits), and publish
- from now on: all computation are
- choose a primitive root , and announce
- : p.r. if
- e.g. : primitive root for
- choose a large prime number (~= 1000 digits), and publish
- procedure: (can be done by either Alice / Bob)
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
- Bob: chooses a prime , and primitive root , secret value
-
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!