일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- mutate()
- dplyr
- AES
- filter()
- distinct()
- sample_n()
- summarize()
- select()
- proc contents
- 대칭형 알고리즘
- arrange()
- groupe_by()
- samp;e_frac()
- Today
- Total
목록암호 (19)
Gae Ko's Blog
블록 암호화 방법 중 어떤 방법이 빠를까? aes_256_cbc, seed_cbc, des_cbc. 3des_cbc 이 세 암호알고리즘을 사용하여 암호화하는 데에 걸린 시간 비교하고자 한다.그래서 64MB, 256MB, 500MG, 1GB, 3GB 처럼 크기의 종류가 5개의 파일을 각 방법마다 암호화하고 걸린 시간을 기록하도록 해보도록 한다, 각 방법의 암호알고리즘 소스는 앞에서 포스팅한 aes-256-cbc 암호화알고리즘 소스코드에서 EVP_CipherInit( )함수의 type 인수와 암호화하는 함수의 이름을 암호화방법에 맞게 변형해주면 된다. (des의 경우 IV값이 필요없으므로 EVP_CipherInit( )함수의 IV인수에 null ) 각 방법의 암호알고리즘 소스파일을 만들었다면 *스크립트 파일..
다음은 openssl을 사용한 aes_256_cbc 암호화 알고리즘 소스 코드이다. 소스코드를 보고 분석하여 보자. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485#include #include #include #include #include #include void aes_256_cbc(FILE *ifp, FILE *ofp, unsigned char *ckey, unsigned char *ivec){ const unsigned BUFSIZE = 4096; unsig..
※ SEED SEED 암호화 알고리즘은 민간 부분인 인터넷, 전자상거래, 무선 통신 등에서 공개시 민감한 영향을 미칠 수 있는 정보를 보호하기 위해 1999년 2월 한국정보보호진흥원을 중심으로 국내 암호 전문가들이 참여하여 순수 국내기술로 개발한 블록암호 알고리즘이다. SEED는 128비트의 암호화/복호화키를 이용하여 임의의 길이를 갖는 입력 메세지를 128비트의 블록단위로 처리하는 128비트 블록암호 알고리즘이다. 따라서 임의의 길이를 가지는 평문 메세지를 128비트씩 블록단위로 나누어 암호화하여 암호문을 생성한다. SEED 알고리즘 구조 SEED 알고리즘의 전체 구조는 Feistel(페이스텔) 구조로 이루어져 있으며, 128비트 키를 입력으로 사용하여 총 16라운드를 거쳐 128비트 암호문 블록을 출..
※ AES (Advanced Encryption Standard) AES란 표준 암호화 알고리즘으로 DES대신 aes로 대체하기 위해 암호 학계에서 제안을 요청하여 공모전을 개최하였는데Rijmen과 Daemen이 개발한 Rijndael 알고리즘이 AES공모에서 선정되면서 AES 암호화 표준이 되었다.AES도 DES와 같은 대칭 암호 알고리즘이다. DES에 비해 키 사이즈가 자유롭고, Triple-DES보다 효율적이고 안전하다.그리고 키 길이가 56비트 뿐인 DES와 달리 AES (Rijndael)의 키 길이는 128, 192, 256비트로 3가지 종류의 가변크기길이를 제공해준다.사용하는 암호화 키의 길이에 따라 암호화와 복호화에 필요한 라운드 수는 다음 표와 같이 정의된다. AES 암호화 과정은 DES와..
※ 블록암호의 운용모드 1. ECB (Electronic Code Book, 전자코드북) - 가장 단순하며 기본적인 모드 - 운용방식 중 가장 간단한 구조로, 암호화하려는 메세지를 여러 블록으로 나누어 각각 암호화하는 방식. - 각 블록이 독립적으로 동작하므로 한 블록에서 에러가 난다고 해도 다른 블록에 영향을 주지 않음 (암/복호화 모두 병렬처리 가능)- 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약.- 만약 암호화 메세지를 여러 부분으로 나누었을 때 두 불록이 같은 값을 가진다면, 암호화한 결과 역시 같음. 이는 공격자가 비슷한 메세지를 반복적으로 암호화하는 반복공격에도 취약. 2. CBC (Cipher Block Chaining, 암호 블록 체인) - 블록암호 운용모드 중에서 가장 보안..
c언어를 사용하여 XOR 블록암호 구현 각각의 평문블록이 주어진 키와 XOR하여 암호블록 생성 ( 요구사항 1. 블록암호의 블록 사이즈는 64bit로 설정한다.2. xor키는 "thisiski"이다.3. 평문은 'Incryptographyablockcipherisadeterministicalgorithmoperatingonfi'이다 (64바이트)4. 결과는 hex값으로 출력// printf("%.2x",ciphertext[index]); 123456789101112131415161718192021#include #include int main(void){ char plaintext[]="Incryptographyablockcipherisadeterministicalgorithmoperatingonfi";..
DES 알고리즘이 뭔지 알기 전에 블록암호와 블록암호의 구조에 대해 생각하여 보자. 블록암호는 주로 단순한 함수를 반복적으로 적용해서 암호학적으로 강한 함수를 만드는 과정으로 개발된다.이때 반복되는 함수를 라운드 함수라고 하고, 라운드 함수에 적용되는 키는 라운드키라고 한다. 라운드키 자체도 독립적으로 생성하는 것이 좋지만, 여러가지 관리상 문제 등등으로 보통은 키(비밀키)를 기반으로라운드키를 발생시켜 사용한다. 이러한 것을 키 스케줄이라고 한다. 블록암호는 라운드 함수를 적용하는 방법에 따라 Feistel Cipher과 SPN(Substitution-Paermutataion Network)방식으로 나뉘어 진다.DES는 Feistel 방식을 사용하고 AES는 SPN방식을 사용한다. ※ DES(Data E..
※ 블록암호(block cipher) 블록암호는 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭.각각 블록형태로 묶여서 암호화가 되는데 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용모드가 사용되는데 ECB, CBC, OFB, CFB, CTR 등이 존재. (운용모드에 관해서 '블록암호의 운용모드'에 정리) 블록암호 구조에는 페스탈(Feistel)구조와 SPN구조가 있다.페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap)단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야한다는 단점이 있다. 대표적인 암호로 DES가 있고 Single DES는 안전성 문제로 현재 사용하고 있지 않다.(한국에서는 개발된 ..