암호학 15

23.04.28 [ZK] R1CS

zkSNARK 에 사용되는 R1CS 에 대해 이해한대로 정리해보았다. - what is zk-SNARK? zkSNARK 는 영지식증명 중에서도 비대화형으로 zcash 프로토콜에서 알고리즘으로 개발되어 사용되고 있다. zk 가 나오게 된 배경, optimistic-rollup vs zk-rollup, zkVM vs zkEVM, zk-SNARK vs zk-STARK 등의 개념은 따로 정리해야겠다. - what is R1CS? 영지식증명에서는 증명에 사용되는 복잡한 computational statements 를 산술 회로로 모델링하여 계산하는 과정이 필요하다. 따라서, 연산 과정을 최대한 단순화하여 모델링하기에 용이한 시스템으로 이해했다. 뒤에서 설명할 예시는 간단하지만 복잡한 시스템을 R1CS 로 모델링하..

암호학 2023.04.30

22.08.10 bcrypt 와 sha

SHA 알고리즘과 bcrypt 는 어떤 차이점이 있는지? SHA 알고리즘과 bcrypt 는 모두 해시 알고리즘이지만 두 알고리즘이 설계된 목적은 다르다. SHA 알고리즘은 메세지 송수신 시 무결성 검사를 빠르게 진행하기 위해 설계되었다. 그렇기 때문에 SHA 알고리즘을 사용했을 때 GPU를 이용한 연산 속도가 매우 빨라서 초당 수십억개의 해시를 계산할 수 있다. 하지만 이것이 무작위 암호 공격에는 더 취약하기 때문에 비밀번호를 암호화하는데는 권장하지 않는다고 한다. bcrypt 는 어떤 해시 알고리즘인가? bcrypt 는 비밀번호를 암호화하는데 최적화된 해시 알고리즘이다. bcrypt 를 구현하는데에는 SHA 해시 알고리즘을 사용하지 않고 "salt" 라고 불리는 랜덤 문자열을 섞어서 암호화하도록 구현했..

암호학 2022.08.11

22.07.18 배타적 논리합과 합동식

논리 연산 중에서 XOR (exclusive OR) 는 입력으로 들어온 두 인자가 다를 경우, 참을 반환하는 연산이다. ⊕이라는 기호를 쓰기도 한다. x⊕x=0 잘 몰랐던 것이 아래와 같은 예시에서 5와 7을 바로 비교하는 것이라고 생각했는데 너무 무지했다...ㅎㅎ 5와 7 각각을 이진수로 변환하고 이진수의 각 자리에 대한 논리 연산을 진행해야했다!! 따라서 답은 2인 것이 이제 이해가 간당 논리연산과 모듈러 연산에 관한 자료 http://www.ktword.co.kr/test/view/view.php?m_temp1=5779 mod-2 Modulo-2 연산, 법 n 연산, n을 법으로 하는, 모듈러-2 덧셈, 모듈러-2 곱셈, 모듈로 2 www.ktword.co.kr

암호학 2022.07.18

22.07.16 암호화와 인코딩

인코딩이란 심볼을 코드로 바꾸는 것이다. 심볼이란 뜻을 가진 무언가 이고, 코드는 뜻을 갖지 않은 무언가 이며 즉, 의미를 기호로 바꾸는 과정이다. 암호화와 인코딩은 데이터를 다른 형태로 변환한다는 점에서 비슷하다고 볼 수 있다. 하지만 인코딩은 데이터의 기밀성을 고려하지 않으며, 누구나 디코딩하여 원문을 구할 수 있다. 그리고 그 목적도 데이터를 숨기기 위한 것이 아니라 심볼들을 컴퓨터가 이해할 수 있는 숫자 code 로 매핑하기 위해서 또는 압축하여 크기를 줄이기 위함이며 또한, 그 과정에서 정보의 손실이 없다. 인코딩은 심볼을 어떻게 코드화하는지 그리고 어떻게 되돌리는지 규칙만 있으면 쉽게 만들 수 있다. ASCII code 아스키코드: 특수문자들을 1 byte 의 정수로 인코딩한다. UTF-8, ..

암호학 2022.07.16

22.03.07 [지갑] 멀티시그 월렛

흐름 1. submit Tx: submitTransaction을 실행하기 위한 message trasaction의 parameter를 이용하여 실제 토큰(Ether)을 받을 주소를 넣어준다. 이때, 토큰을 받을 대상이 다른 스마트 컨트랙트이고 트랜잭션 종류가 message transaction인 경우, 실행할 method와 parameter를 포함하는 data payload를 넣어준다. 2. confirm Tx: 위 메소드로 제출된 트랜잭션을 승인하는 단계이다. 컨트랙트에 등록된 승인 권한이 있는 EOA가 confirmTx을 통해 confirm하고 각 confirm 마다 등록된 조건(n 개의 confirm 필요)을 만족하는 confirm을 받았는지 체크한다. 3. execute Tx: confirmTx(..

암호학 2022.03.07

22.02.15 [지갑] HD wallet

안그래도 오늘 getHDWalletFromMnemonic 이라는 메서드를 썼는데 개발자 단톡에 올라왔길래 일단 정리 킵! http://wiki.hash.kr/index.php/HD_%EC%A7%80%EA%B0%91 HD 지갑 - 해시넷 HD 지갑(에이치디 지갑)이란 Hierarchical Deterministic Wallet의 약자로서, 하나의 마스터 시드(seed) 키를 사용하여 무수히 많은 주소를 생성할 수 있는 암호화폐 지갑이다. 계층적 결정 지갑이라고도 한 wiki.hash.kr

암호학 2022.02.15

21.12.17 카이사르 암호와 빈도 분석

삐가 댕에게 편지를 썼다. "Hey, Daeng! I'm Bbi. Let's Meet at 4 o'clock" "댕아 나랑 네시에 만나자 -삐" 삐는 댕과 만나는 것을 아무에게도 알리고 싶지 않았다. 지금이 2시반이었기 때문에 삐는 빨리 댕에게 편지를 보내야 했다. 삐는 지우고 다시 편지를 썼다. "KHB, GDHQJ! L'P EEL. OHW'V PHHW DW 4 R'FORFN" 알파벳을 세글자씩 미루어 쓴 문장이다. 음 이정도면 됐겠지?! 하고 생각했지만 아주 큰 착각이었다. 삐와 댕의 중간에 사는 구가 그 편지를 낚아채 삐와 댕이 4시에 만난다고 동네방네 떠들고 다녔다. 삐는 분했다... 삐는 시간을 좀 투자하더라도 다른 방법을 찾기로 했다. 삐가 사용한 암호화 방식은 약 기원전 100년경에 만들어져..

암호학 2021.12.17

21.12.11 블록 암호

기밀 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템 만약 암호화하려는 정보가 블록 길이보다 길 경우는 특정 운용 모드가 사용된다. 블록 암호에 대한 안전성 증명 방법으로는 선택평문 공격인 차분 공격 Differential Cryptanalysis 와 알려진 평문 공격인 선형 공격 Linear Cryptanalysis 등이 있다. 블록 암호 구조에는 페스탈 Feistel 구조와 SPN 구조가 있다. Feistel 페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현 시 스왑 단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다. DES가 대표적인 예이다. 한국에서 페스탈 구조 기반으로 설계된 암호는 SEED가 있다. SPN 구..

암호학 2021.12.11

21.12.11 암호 공격

1. 암호문 단독 공격 Ciphertext Only Attack 공격자가 암호문만 가지고 있는 상황에서 공격하는 유형 공격자는 암호문 이외의 어떤 정보도 가지고 있지 않기 때문에 공격자 입장에서 가장 어렵다. - 가능한 모든 값을 대입해보는 무차별 대입 공격(채굴과 비슷한 원리) - 암호문에 쓰인 문자의 빈도수 분석이나 문장의 특성 등을 추정하여 해독하는 방법 2. 알려진 평문 공격 Known Plaintext Attack 공격자가 일정 부분의 평문과 이에 대응하는 암호문을 가진 상태에서 공격하는 유형 단독 공격보다는 효과적 3. 선택 평문 공격 Closen Plaintext Attack 공격자가 암호화 프로그램에 접근! 공격자가 많은 수의 평문을 암호문으로 만들 수 있는 상태에서 공격하는 유형 공격자는..

암호학 2021.12.11