- Cryptology
- 암호학. 비밀스러운 communication을 위해 개발 되었다.
- 이를 세분화하면
- Cryptography: 공격에 대한 방어를 공부하는 학문
- Ctyptanalysis: 공격하는 것에 대해 공부하는 학문
- Cryptographic goals
-
- Confidentialitay
- 기밀성
- Syemmetric-key ciphers
- 대칭키(symmetric key)를 생성하여 이를 통해 데이터를 암호화/복호화 하는 방식
- 사용자가 대칭키(symmetric key)로 데이터를 암호화하고, 서버도 같은 대칭키(symmetric key)로 데이터를 복호화 함
- Block ciphers
- 기밀성있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템
- Stream ciphers
- Plain text와 이와 길이가 동일한 랜덤 난수를 xor하여 얻은 결과가 cipher text이다.
- 여기서 랜덤난수는 실제 랜덤이 아니라, seed를 넣으면 그에 대한 값이 나오는 것. 즉 랜덤하게 보이는 것이며, 따라서 같은 seed를 넣으면 같은 값이 나온다.
- Public key ciphers
- public key와 private key를 이용한 암호 시스템
- Confidentialitay
-
- Data integrity
- 이용되는 곳
- Arbitrary length hash functions
- 너무 긴 데이터가, 서버에 있는 것과 같은 지 확인하려면 많은 시간이 소모된다.
- 이에 따라 이를 hash functions에 넣어 값을 넣고, 이 두 값이 같은 지를 확인
- Message Authentication codes (MACs)
- 메세지 내용이 바뀌지 않았다 증명하기 위해 사용되는 코드
- Digital signatures
- 디지털 서명은 Hash와 signature로 이루어진다.
- 서명하는 대상이 너무 길면, 비용이 크게 발생한다.
- 이에 따라 대상을 hash하고 서명하여 비용을 줄인다.
- Arbitrary length hash functions
- 이용되는 곳
- Data integrity
-
- Authentication
- 권한확인 하는 것
- Entity authentication
- 상대방 사이트가 유효한 지 확인하기 위해, 알려진 public key로 상대방 사이트가 보낸 서명을 확인한다.
- Entity authentication
- 권한확인 하는 것
- Authentication
-
- Non-repudation
- 부인 봉쇄
- Digital signature등이 존재
- 대칭키 시스템을 사용한다면 Bob이 주식을 사놓고, 내가 안 샀다고 주장했을때,
- 기관이 이길 수 있나? -> 안돼 왜? 기관도 같은 키를 갖고 있기에,
- 따라서 private key를 이용하여 서명을 하게 된다면 이 키는 Bob만 가지고 있기에 책임은 Bob한테 가고, 이를 분실했다 하더라도 분실 책임은 Bob에게 있다.
- Non-repudation
-
- 암호학에 대한 기본 개념
- Cipher(= cryptosystem)
- 이는 plaintext를 encrypt(암호화하다)하기 위해 사용된다.
- plain text
- 내가 암호화하고 싶은 문장
- cipher text
- 암호화한 결과물
- decrypt
- cipher text를 plaintext로 되돌리는 것.
- Key는 암호화, 복호화하는 데에 사용되는 것.
- Key에 대한 분류
- 0개의 key
- hash함수가 있다.
- 1개의 key
- symmetric key
- 이는 암호화, 복호화 하는데 모두 symmetric key를 사용한다.
- symmetric key
- 2개의 key
- public key, private key
- 암호화하는 데에 public key를 사용하고
- 복호화하는 데에 private key를 사용한다.
- public key, private key
- 0개의 key
- Cipher(= cryptosystem)
- Crypto
- 암호화 시스템 자체는 attacker한테도 알려져 있다.
- 비밀로 유지해야 하는 것은 key이다.
- Type of cipher
- Random functions
- 이건 해시함수, 임의의 길이의 입력을 받아 일정한 길이의 결과물을 만들어준다.
- Random permutations
- block ciper
- 랜덤 순열
- 특정 길이의 입력을 주면, 같은 길이의 결과를 출력
- Ramdom generators
- stream ciper
- 짧은 길이의 입력(seed)가 주어지면 긴 길이의 출력 줌
- Public key encryption
- 아무나 public key로 암호화 가능하고, private key로만 복호 가능하다.
- digital signatures
- private key로 서명하면, public key를 통해 유효성을 검사할 수 있다.
- Random functions
- Hash fuction
- 기존 해쉬 함수는 임의의 길이의 입력을 주면 특정길이의 출력을 내보내지만 중복, 즉 출력이 같은 경우가 생긴다.
- Cryptographic Hash Function
- 대표적으로 sha 256, sha 512가 있다.
- 기존 해쉬함수를 이용했지만, 다르다.
- 특징
- collision resistance
- 두 입력에 대해 같은 결과를 나와 충돌이 생기지 않아야한다.
- preimage resistance
- 결과를 통해 입력을 알 수 없어야한다.
- second preimage resistance
- 한 입력과, 그에 대한 출력을 알았을때, 같은 출력을 나오게 하는 입력을 찾기 어려워야한다.
- collision resistance
- Cryptographic hash function이 가져야 하는 요구사항
- Compression
- output의 길이가 짧아야한다.
- Efficiency
- 입력에 대한 출력 계산이 빨라야 한다.
- Oneway
- 출력을 통해 입력을 알 수 없어야 한다.
- Weak collision resistance
- second collision resistance
- 즉 한 입력과 그에 대한 출력이 주어졌을 때, 다른 입력을 찾기 어려워야 한다.
- Hard collision resistance
- collision resistance
- 두 입력이 같은 결과를 내어 충돌하지 않아야 한다.
- Compression
- Collision resistance계산하기
- Pre-Birthday Problem
- 만약 N명이 모였을 때, 나와 같은 생일의 사람이 한명이라도 있는 확률이 2분의 1 이상이려면 최소 몇명이 필요할까?
- 여사건 이용
- 1/2 = 1 - (364/365)^N
- N = 253
- 만약 N명이 모였을 때, 나와 같은 생일의 사람이 한명이라도 있는 확률이 2분의 1 이상이려면 최소 몇명이 필요할까?
- 그럼 N명의 사람이 모였을 때, 생일이 같은 사람들이(즉 두명이상) 존재할 확률은?(이게 collision resistance 계산)
- 이건 23명이 모였을때 0.507의 확률로 존재한다.
- 이를 대략 적으로 계산하면
- 2명을 뽑았을 때 같은 확률이 2분의 1(사실 3명이같을 확률,4명이 같을 확률,...을 모두 더해야 한다.)
- nC2 * (1/365) = 1/2 (여기서 1/365는 한 사람입장에서 반대사람이 나랑 생일 같을 확률)
- n = 루트 365
- 이를 Hash함수에 적용해보면, N개의 bit가 있을 떄 2^N의 case가 존재하고 이는 365일과 일치한다. 또한 그럼 여기서 같은 쌍이 존재하게 되는 x는
- x = 2^(N - 1) 이 되므로, 이 만큼의 입력 x들을 확인해야 겨우 같은 쌍하나 나온다.
- Pre-Birthday Problem
- 사용되는 Cryptographic Hashes
- MD5
- 128bit를 이용하므로 2^64만 확인하면 찾을 수 있다
- SHA-256
- MD5
- 로그인할 때도 crypto hash를 사용한다.
- db에서password를 직접 가지고 있는 것은 보안에 불리하다.
- 그래서 password를 해쉬한 값을 db가 가지고 있고, 사용자가 로그인 시도하면, password를 해쉬한 후, db에 있는 값과 일치하는 지 체크한다.
- random generator는 seed를 필요로 하고, 실제 진짜 난수 발생기는 아니다. 실제 난수 발생기는 적은 숫자의 난수를 발생시킨다. 이를 random generator에 넣는다
- TRNG(True random number generator)
- 실제 난수 발생기는 자연을 이용한다.(마우스 휠, 소리등)
- PRNG(psedo random number generator)
- seed를 통해 난수처럼 보이는 값을 준다.
- TRNG(True random number generator)
- Advanced Encryption Standard(AES)
- 여러 암호화 방법이 나오고 발전하고 있다.
- Rain Doll(Rhine Doll)이라는 Rihndeal Algorithm이 승자.
- 대체로 128, 192, 256bits의 key를 사용한다.
- singer가 메세지와, 메세지를 private keyㄹ 서명했다면, 이를 public key로 검증한다.
'블록체인' 카테고리의 다른 글
[블록체인] 비트코인 메커니즘-난도조절, coinbase트랜잭션,hard fork, soft fork (0) | 2023.12.17 |
---|---|
[블록체인] 비트코인-머클트리(Merkle tree) (1) | 2023.12.17 |
[블록체인] 이더리움이란? (0) | 2023.11.24 |
[블록체인] 정리3 (1) | 2023.10.26 |
블록체인 정리1 (1) | 2023.10.26 |