블록체인

[블록체인] 정리2

윤밥밥 2023. 10. 26. 19:16
  • Cryptology
    • 암호학. 비밀스러운 communication을 위해 개발 되었다.
    • 이를 세분화하면
      • Cryptography: 공격에 대한 방어를 공부하는 학문
      • Ctyptanalysis: 공격하는 것에 대해 공부하는 학문
  • Cryptographic goals
      1. 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를 이용한 암호 시스템
      1. Data integrity
        • 이용되는 곳
          • Arbitrary length hash functions
            • 너무 긴 데이터가, 서버에 있는 것과 같은 지 확인하려면 많은 시간이 소모된다.
            • 이에 따라 이를 hash functions에 넣어 값을 넣고, 이 두 값이 같은 지를 확인
          • Message Authentication codes (MACs)
            • 메세지 내용이 바뀌지 않았다 증명하기 위해 사용되는 코드
          • Digital signatures
            • 디지털 서명은 Hash와 signature로 이루어진다.
            • 서명하는 대상이 너무 길면, 비용이 크게 발생한다.
            • 이에 따라 대상을 hash하고 서명하여 비용을 줄인다.
      1. Authentication
        • 권한확인 하는 것
          • Entity authentication
            • 상대방 사이트가 유효한 지 확인하기 위해, 알려진 public key로 상대방 사이트가 보낸 서명을 확인한다.
      1. Non-repudation
        • 부인 봉쇄
        • Digital signature등이 존재
        • 대칭키 시스템을 사용한다면 Bob이 주식을 사놓고, 내가 안 샀다고 주장했을때,
        • 기관이 이길 수 있나? -> 안돼 왜? 기관도 같은 키를 갖고 있기에,
        • 따라서 private key를 이용하여 서명을 하게 된다면 이 키는 Bob만 가지고 있기에 책임은 Bob한테 가고, 이를 분실했다 하더라도 분실 책임은 Bob에게 있다.
  • 암호학에 대한 기본 개념
    • Cipher(= cryptosystem)
      • 이는 plaintext를 encrypt(암호화하다)하기 위해 사용된다.
    • plain text
      • 내가 암호화하고 싶은 문장
    • cipher text
      • 암호화한 결과물
    • decrypt
      • cipher text를 plaintext로 되돌리는 것.
    • Key는 암호화, 복호화하는 데에 사용되는 것.
    • Key에 대한 분류
      • 0개의 key
        • hash함수가 있다.
      • 1개의 key
        • symmetric key
          • 이는 암호화, 복호화 하는데 모두 symmetric key를 사용한다.
      • 2개의 key
        • public key, private key
          • 암호화하는 데에 public key를 사용하고
          • 복호화하는 데에 private key를 사용한다.
  • 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를 통해 유효성을 검사할 수 있다.
  • Hash fuction
    • 기존 해쉬 함수는 임의의 길이의 입력을 주면 특정길이의 출력을 내보내지만 중복, 즉 출력이 같은 경우가 생긴다.
    • Cryptographic Hash Function
      • 대표적으로 sha 256, sha 512가 있다.
      • 기존 해쉬함수를 이용했지만, 다르다.
      • 특징
        • collision resistance
          • 두 입력에 대해 같은 결과를 나와 충돌이 생기지 않아야한다.
        • preimage resistance
          • 결과를 통해 입력을 알 수 없어야한다.
        • second preimage resistance
          • 한 입력과, 그에 대한 출력을 알았을때, 같은 출력을 나오게 하는 입력을 찾기 어려워야한다.
      • Cryptographic hash function이 가져야 하는 요구사항
        • Compression
          • output의 길이가 짧아야한다.
        • Efficiency
          • 입력에 대한 출력 계산이 빨라야 한다.
        • Oneway
          • 출력을 통해 입력을 알 수 없어야 한다.
        • Weak collision resistance
          • second collision resistance
          • 즉 한 입력과 그에 대한 출력이 주어졌을 때, 다른 입력을 찾기 어려워야 한다.
        • Hard collision resistance
          • collision resistance
          • 두 입력이 같은 결과를 내어 충돌하지 않아야 한다.
  • Collision resistance계산하기
    • Pre-Birthday Problem
      • 만약 N명이 모였을 때, 나와 같은 생일의 사람이 한명이라도 있는 확률이 2분의 1 이상이려면 최소 몇명이 필요할까?
        • 여사건 이용
        • 1/2 = 1 - (364/365)^N
        • N = 253
    • 그럼 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들을 확인해야 겨우 같은 쌍하나 나온다.
  • 사용되는 Cryptographic Hashes
    • MD5
      • 128bit를 이용하므로 2^64만 확인하면 찾을 수 있다
    • SHA-256
  • 로그인할 때도 crypto hash를 사용한다.
    • db에서password를 직접 가지고 있는 것은 보안에 불리하다.
    • 그래서 password를 해쉬한 값을 db가 가지고 있고, 사용자가 로그인 시도하면, password를 해쉬한 후, db에 있는 값과 일치하는 지 체크한다.
  • random generator는 seed를 필요로 하고, 실제 진짜 난수 발생기는 아니다. 실제 난수 발생기는 적은 숫자의 난수를 발생시킨다. 이를 random generator에 넣는다
    • TRNG(True random number generator)
      • 실제 난수 발생기는 자연을 이용한다.(마우스 휠, 소리등)
    • PRNG(psedo random number generator)
      • seed를 통해 난수처럼 보이는 값을 준다.
  • Advanced Encryption Standard(AES)
    • 여러 암호화 방법이 나오고 발전하고 있다.
    • Rain Doll(Rhine Doll)이라는 Rihndeal Algorithm이 승자.
    • 대체로 128, 192, 256bits의 key를 사용한다.
  • singer가 메세지와, 메세지를 private keyㄹ 서명했다면, 이를 public key로 검증한다.