IT/Computer Science 128

[정보보안] MDC / MAC의 차이점

MDC(modification detection code)는 메세지의 변경, 즉 무결성과 관련된 코드이다. 반면 MAC(message authentication code)는 메세지의 인증과 연관되어 있는 코드이다. MDC에서는 해당 메세지가 변경되지 않았다는 것을 보장하기 위하여 메세지와 MDC(메세지 다이제스트)를 함께 진행한다. 단방향 해시함수를 사용하여 Hash시 메세지와 키를 같이 hashing한다는 점이 특징이다. 반면 MAC에서는 대칭키 암호 기술을 사용하여 메세지에 대한 인증 코드를 생성한다. 주로 무결성 검증과 함께 메세지의 출처를 인증하는 데에 이용한다. Q1) MDC를 써서 메세지의 무결성을 보장하고자 할 때, 메세지는 보안되지 않은 채널로 보내도 되지만 MDC는 보안된 채널로 보내야 ..

IT/Computer Science 2023.12.18

[정보보안] DES에서 쇄도효과(avalanche effect) 와 완비성(completeness)에 관하여

블록암호가 지녀야 할 2가지 성질로 쇄도효과(avalanche effect)와 완비성(completeness)가 있다. 쇄도효과는 평문에서 작은 변화가 암호문에서 상당한 변화를 야기함을 뜻한다. 완비성은 암호문의 각 비트는 평문의 많은 비트들에 의존할 필요가 있음을 의미한다. 이 관점에서 DES를 평가해보자면, 쇄도효과는 또한 DES의 취약점을 간과하게 만들었다. DES의 키 길이가 56비트로 제한되어 있는 점은, 시간이 지남에 따라 컴퓨팅 능력의 증가로 쉽게 해독될 수 있는 위험에 처하게 되는데 일조하였다. 완비성 측면에서 DES를 평가하자면, 56비트 키 길이는 현대의 컴퓨팅 능력에 의해 쉽게 깨질 수 있는 수준이 되었다. 이는 AES의 등장 배경이 되는 데에 기여하였으며, 실제로 DES는 현대 암호..

IT/Computer Science 2023.12.17

[정보보안] P-box(Permutation Box) & S-box(Substitution Box)에 대한 비교

P-Box (Permutation box)와 S-Box (Substitution box)는 암호학에서 데이터를 암호화하는 데 사용되는 두 가지 주요 구성 요소이다. 이들은 특히 블록 암호에서 중요한 역할을 한다. 각각의 특징과 차이점을 중심으로 살펴보자. - P-box (Permutation Box) 기능: P-box의 주요 기능은 데이터 비트의 위치를 재배열하는 것이다. 이것은 데이터의 비트 패턴을 변경하지 않고 위치만 변경한다. 목적: P-box는 데이터에 대한 혼돈을 만들어 암호화 과정의 복잡성을 증가시킵니다. 이는 암호를 더 안전하게 만드는 데 도움이 됩니다. 작동 방식: 데이터 블록 내의 비트들이 재배열되어 새로운 패턴을 형성한다. 이 과정은 고정된 패턴이나 암호화 키에 의해 결정된 규칙에 따라..

IT/Computer Science 2023.12.16

[정보보안] 암호학적 해시함수의 3가지 충족기준(프리이미지 저항성, 제 2 프리이미지 저항성, 충돌저항성)

암호학적 해시함수는 3가지 기준을 충족해야 한다. 프리이미지 저항성: h(M)이 주어졌을 떄, 그것이 어떤 M으로부터 나왔는 지 찾기 어려워야 한다 제 2 프리이미지 저항성: M과 같은 hash값을 갖는 M'를 찾기 어려워야 한다 충돌 저항성: 같은 hash값을 갖는 메세지 쌍(M,M')를 찾기 어려워야 한다. >> 각각 M, M' (M,M')를 찾기 힘들도록 설계해야 한다는 의미이다.

IT/Computer Science 2023.12.15

[정보보안] RSA Structure에 대하여(키 생성, 암호화, 복호화)

RSA는 비대칭키 암호화 시스템으로, 공개키와 개인키를 이용하여 암호화 및 복호화를 진행하는 알고리즘 시스템이다. RSA structure에서 공개키와 개인 키는 한 쌍을 이루는데, 공개키로 암호화 된 내용은 개인키로 해독되고, 개인키로 암호화된 내용은 공개키로 해독이 된다. key는 다음과 같은 과정을 통해 생성된다. 먼저 소수 p,q를 고른다. n= p * q 이고, q(n) = (p-1) * (q-1) 로 설정한다. e는 p-1과 q-1에게 서로소인 수를 설정하며, d = e^-1 mod q(n)이 된다. key 설정에서 n,e,d를 제외한 나머지 인수들은 사용하지 않는다. RSA structure에서 암호화는 x = a^e(modN)을 통해 이루어지고, 반대로 복호화 과정 a' = x^d (mod..

IT/Computer Science 2023.12.14

[정보보안] AES(Advanced Encryption Standard)에 대하여

AES(Advanced Encryption Standard)는 2001년 미국 국립기술표준원에서 공표한 대칭키 암호 알고리즘이다. AES의 선정기준으로는 안전성, 비용, 구현 효율성이 있다. AES는 128비트 평문을 128비트 암호문으로 출력하는 알고리즘으로서, non-feistal 알고리즘에 속한다. 10,12,14라운드를 사용하며, 각 라운드는 128,192,256비트 키 크기를 가지고 있다.(마스터키 기준, 라운드 키는 모두 128비트로 일정하다) AES 암호화 과정은 다음과 같이 이루어진다.키 확장(Key Expansion): 사용자의 암호키를 받아 내부적으로 사용될 여러 라운드 키로 확장한다.초기 라운드(Initial Round): 평문에 첫 번째 라운드 키를 적용한다.반복 라운드(Repeat..

IT/Computer Science 2023.12.10

[정보보안] DES(Data Encryption Standard)에 대하여

DES(Data Encryption Standard)는 대칭키 블록암호로 미국 기술표준원에서 공표했다. DES의 구조를 그림으로 그려보면 다음과 같다. 1) 암호화(Encrpytion) DES의 암호화 과정은 두 개의 치환(P-box)과 16개의 Feistel 라운드 함수로 구성된다. 초기 치환과 최종 치환의 경우 모두 64비트를 입력받아 미리 정의된 규칙에 재배열한다. 각 치환은 역의 관계를 가지며, 단순 치환이다(p-box) DES에서 사용하는 라운드 함수는 이전 라운드 함수의 출력값 L_I-1과 R_I-1을 입력받아 다음 라운드에 사용될 L_I와 R_I를 생성한다. 2) 복호화(Decryption) DES의 복호화 과정은 암호화 과정의 역순으로 이루어진다. 초기 치환후, 16라운드를 처리하고, 라운..

IT/Computer Science 2023.12.09

[자료구조] AVL tree 개념과 연산

AVL tree란 Adelson-Velskii와 Landis에 의해 1962년에 제안된 트리로, 모든 노드의 왼쪽과 오른쪽 서브트리의 높이 차가 1이하인 이진탐색트리를 의미한다. AVL tree의 연산과정은 다음과 같다. 탐색 연산 : 이진 탐색 트리와 동일하다. 값들을 비교하며 내려가는 구조이다. 삽입,삭제 연산: 삽입-삭제 위치에서 루트까지의 경로에 있는 조상 노드들의 균형 인수에 영향을 받는다. LL type 혹은 RR type을 맞추기 위해 rotation을 진행한다.

IT/Computer Science 2023.12.08

[자료구조] 이진 탐색 트리에서의 연산(탐색 연산, 삽입 연산, 삭제 연산)

BST(Binary Search Tree)란 탐색을 효율적으로 하기 위한 자료구조이다. 이진탐색트리는 다음과 같은 특징을 가진다. 1) 이진트리이며 모든 원소는 서로 다른 유일한 키를 가짐 2) 왼쪽 서브트리의 key값< 루트의 key값< 오른쪽 서브트리의 key값 3) 왼쪽 서브트리와 오른쪽 서브트리도 이진 탐색 트리 -이진탐색 트리의 연산 1) 탐색(searchBST()) 연산 루트에서 시작, 탐색할 키값 X를 루트노드의 키값과 비교한다. 키값이 루트노드의 키값과 같으면 탐색 성공, 크거나 작으면 각각 오른쪽, 왼쪽으로 위치시켜 다시 탐색연산 수행 -탐색 방법: 반복적 방법, 순환적 방법(재귀적으로 수행) 2) 삽입(insertBST())연산 탐색연산이 모두 완료된 이후에 진행된다. 탐색이 실패한 위..

IT/Computer Science 2023.12.07

[선형대수] python으로 행렬의 성분을 부분 출력하기, 행렬 성분의 일부를 변경하는 방법

행렬의 성분을 부분적으로 출력하는 것과, 행렬의 일부 값을 변경하여 출력하는 예제이다. numpy를 import 한 후, np.array에 행렬을 삽입한다. 1행 3열의 성분을 출력하기 위해 E[0,2] 를 1행 3열의 값으로 지정한다. (**행렬의 저장공간은 0번부터 시작!) 마찬가지로 2행 1열의 성분은 E[1,0] 이 된다. 그리고 부분행렬을 출력한다. 2행 1열 성분을 변경하는 것은 E[1,0] = -1로 재 설정하면 된다. 그리고 행렬을 출력하면 정상적으로 변경된 값으로 출력됨을 볼 수 있다.

IT/Computer Science 2023.12.06
반응형