Ctypto Basic

암호화

Posted by Damin on September 6, 2019

Crypto Basics

암호학(Cryptology)

  • “비밀 코드”를 만들거나 해독하는 과학.

암호 생산(Cryptography)

  • “비밀코드”를 만드는 것.

암호 분석(Cryptoanalysis)

  • “비밀코드”를 해독하는 것.

암호(Crypto)

  • 상기한 모든 것 또는 그 이상

암호체계는 평문을 암호화 하는데 사용한다.

Plain text를 암호화 하는 과정 = Encrypt

Plain text를 복호화 하는 과정 = Decrypt

암호체계는 평문을 암호화 하는데 사용한다.

Key는 암호체계를 만드는데 사용한다.

Symmetric key 암호체계 = 같은 키를 “암호화”와 “복호화”를 위해 사용한다.

Public key 암호체계 = 암호화, Private key = 복호화(서명) 에 사용 된다.

Crypto

CryptoSystem에서 중요한 것에는 알고리즘도 있지만,

Key가 정말 중요하다!!

알고리즘 같은 경우에는 Not Secret

Kerckhoffs Principle

암호체계의 안전성은 키의 비밀성에만 의존해야 한다.

다르게 말하면, 정보를 비밀스럽게 코딩하고 전송하는 방법은

그것이 어떻게 동작하는지 모든 사람에게 알려지더라도 “안전”해야 한다.

허술한 보안을 하는 것은 보안을 아예 하지 않은 것보다 더 위험하다.

Trudy입장에서 보안 없는 정보는 중요하지 않게 생각할 수 있는데 보안이 조금이라도 있다면, 공격받기 쉽다.

Trudy 입장에서 전수조사를 할 때 특정 시간이 지나면(복호화 하는데 오래걸리면) “Secure”하다고 말할 수 있다.

Trudy 입장에서 전수조사를 하지 않고, 복호화를 한다면 그것은 “Insecure”하다고 말할 수 있다.

Secure 하다고 안전한건 아니다. 왜?

  • 100% 안전한건 없다. 언젠간 시간이 지나면 break 할 수 있다.

  • Key의 길이가 한정적이기 때문.

Insecure system 이 Secure System 보다 break 하는게 더 어려울 수 있다.

Secure System 의 Key의 길이가 짧을때!!

One - time Pad Encryption

Key 와 Plaintext 를 Exclusive or = Ciphertext

Ciphertext 와 Key 를 Exclusive or = Plaintext

단점

  • Key 가 Plaintext 길이 만큼의 길이를 가져야 한다.

  • 한번 쓰고 버려야 한다.

이중첩자

  • 자신이 Key를 알고 있다면, 자신이 불리할때 좋은쪽으로 바꿀 수 있다.

Kill hitler 에서 Heil hitler

  • 다른 사람이 Key를 이용해 바꾼다면 불리해진다.

Heil hitler 에서 Kill hitler

One-time Pad 정리

Provably Secure -> 제대로 사용되어 진다면.

  • Ciphertext 는 Plaintext 에 관해 아무런 정보를 주면 안된다.

  • Pad는 무조건 Random 이어야 하고, 1번 쓰고 버려야 한다.

  • Pad는 Receiver 와 Sender 둘다 알아야 한다.

  • Pad 는 message의 크기와 같아야 한다.

  • Message의 무결성이 보장되지 않는다.

치명적인 단점

  • Receiver 와 Sender 둘 다 알고 있다고 가정하에 하는데(키는 절대 공개되지 않아야 한다)

그러면, 그 방식으로 메세지를 보내지 왜 One-time Pad를 사용하냐?

Confusion = Plaintext 와 Ciphertext 의 관계를 모호하게 한다. (단어들은 그대로 하는데, 관계를 모호하게)

  • One-time Pad

Diffusion = Plaintext 를 여기저기 퍼트려서 Cyphertext 를 만든다. (단어들을 뒤죽박죽)

  • Double transposition