Security
💡
2024년 4월 17일 (수) 18:30 ~ 20:00
- Goal
- understand principles of network security
- cryptography and its many uses beyond "confidentiality"
- Authentication
- message integrity
- Security in practice
- firewalls
- security in application, transport, network, link layers
- understand principles of network security
Cryptography
m
- plaintext messageK_A(M)
- ciphertext, encrypted message with keyK_A
- m = K_B(K_A(m))
Symmetric key cryptography (대칭키 암호화)
plaintext -> encryption algorithm -> ciphertext -> decryption algorithm -> plaintext
양쪽에서 같은 키를 사용한다.
- Substitution ciphers : 원본 키와 암호화 키가 1:1 대응
- Block Encryption : 철자를 하나 보내는거긴 한데, 블록 단위로 암호화
- 2^64개의 키가 있으면, 2^64개의 블록이 있음 (너무 많음)
- 그래서 64비트 input이 있을 때 8비트씩 쪼개서 암호화를 하고, 그걸 합쳐서 scramble한 값을 output으로 내보냄
- 문제는, Same input blocks, then generate same output blocks!
- Adding randomness!
- Problem : Overhead가 커짐
- Solve : CBC (Cipher Block Chaining)
- 이전 블록의 암호화 결과를 다음 블록에 넣어줌
- 이전 블록의 암호화 결과를 XOR해서 넣어줌
- Initialization Vector (IV) : 첫 블록에 넣어줄 값
- DES, AES (128, 192, 256 bits)
Public key cryptography (공개키 암호화)
- 1976년에 Diffie-Hellman, 1978년에 RSA 알고리즘이 나옴
- Public key cryptography revolutionized 2000-year-old cryptography!
- RSA가 제일 많이 쓰임
- encrypting a message is equivalent to encrypting a number
- RSA : Creating public/private key pair
- Choose two large prime numbers
p
andq
- Compute
n = pq
- Compute
phi(n) = (p-1)(q-1)
- Choose
e
such that1 < e < phi(n)
andgcd(e, phi(n)) = 1
- Compute
d
such thated = 1 mod phi(n)
- Public key :
(e, n)
, Private key :(d, n)
- Choose two large prime numbers
- RSA encryption
c = m^e mod n
- RSA decryption
m = c^d mod n
- Very Useful! : Digital signatures, key exchange, secure email, secure web browsing
- K_A(K_B(m)) = m = K_B(K_A(m))
근데 RSA 방식의 공개키 암호화는 너무 느리다.
... 나중에 보충
Authentication & Message Integrity
- Authentication: ap1.0 ->
Authentication
Message Integrity
- Digital Signature