본문 바로가기

728x90

반도체보안

(10)
린겐 서명 암호, Lattice Signature 린겐 서명은 격자 기반 암호화의 한 형태로 양자 암호화의 한 종류다. privateKey 생성: GeneratePrivateKey 함수는 주어진 크기와 모듈러 값에 따라 무작위 개인키를 생성한다. 개인키의 각 요소는 0부터 q-1까지의 값을 가지게 된다. publicKey 생성: GeneratePublicKey 함수는 개인키와 격자의 차원, 모듈러 값을 사용하여 공개키를 생성한다. 각 공개키 요소는 개인키의 요소들과 함께 계산되는데(이 때 특정한 수식과 계산 방식을 사용한다.). 공개키의 각 요소는 개인키의 요소를 활용하여 계산되며, 이때 격자의 차원에 따라 계산이 이루어진다. 이 과정이 린겐 서명의 핵심적인 계산 과정 중 하나가 된다. 아래 코드는 린겐 서명의 개념을 실험적으로 볼 수 있다. 개념적으로..
5개의 조, 그리고 6개의 번호, 연금복권 오해가 없길 바란다. 아래의 코드는 숫자를 좋아하고 암호에 흥미를 갖는 학생이나 일반인에게 흥미를 가질 수 있도록 만든 프로그래밍 소스 코드다. 실제로 로또나 연금복권의 숫자를 맞출 수 없으며 확률적으로도 불가능에 가깝다. 연금복권은 1,2,3,4,5 중에 1개의 조를 고르고 0,1,2,3,4,5,6,7,8,9를 조합해서 6자리 번호를 선택한다. 로또와는 달리 숫자가 중복될 수 있다. using System; using System.Text; namespace RandomNumberGenerator { class Program { static void Main(string[] args) { Random random = new Random(); // 1부터 5까지의 임의의 숫자 선택 int selected..
로또 번호 6개, 15, 17, 27...... 로또는 45개의 숫자들 중에서 6개 숫자를 선택하고 그 숫자가 추첨되면 상금을 지급받는 복권이다. 로또는 매주 토요일 8시에 추첨된다. 로또 추첨은 무작위로 선택된 숫자 6개가 일치해야 한다. 온라인에서는 5천원 이내의 금액만 구입할 수 있다. 이번 주 로또 추첨을 위해 무작위로 추출되는 로또 번호를 만들어보자. using System; using System.Collections.Generic; namespace RandomNumberGenerator { class Program { static void Main(string[] args) { List numbers = new List(); for (int i = 1; i
숫자 전치 암호, 짐 캐리의 <넘버23> 9161938535 2007년에 나온 영화 23쌍의 염색체로 이루어진 인간의 세포, 적혈구가 인간의 몸 한 바퀴를 도는 데 걸리는 시간은 23초, 유클리드 기하학의 정의 23개, 중세 템플기사단 역대 수장 23명, 악마의 연회일 6월 23일, 시저 황제 23번 찔림, 주요 테러사건 발생일(2001년 9월 11일)의 합 23, 타이타닉 침몰일(1912년 4월 15일)의 합 23, 일본 히로시마에 원폭이 투하된 시간(오전 8시 15분)의 합 23, 체르노빌 원전폭발 사고가 새벽 1시 23분에 발생 지구 자전축은 23.5도 기울어져 있고, 마야 문명은 2012년 12월 23일이 종말이었다. 게다가 영화 주인공과 관련된 모든 숫자도 23이었다. "전치 암호(Transposition Cipher)"는 숫자만을 위한 암호화이다. 이 ..
한글 문자 대체 암호, '가장맛있는음식은' 한글 대체 방식 암호는 한글 문자를 다른 한글 문자나 기호로 대체하여 암호화하는 방식을 말한다. 이 방식은 한글 문자를 읽기 어렵게 만들고 특정 정보를 숨기는 용도로 사용된다. 한글 대체 방식 암호화의 기본 아이디어는 원래의 한글 문자를 대체 문자로 바꾸는 것이다. 이때, 대체 문자들의 매핑은 미리 정해진 규칙에 따라서만 완성된다. 암호화된 문자열을 복호화하려면 암호화 시에 사용된 대체 문자들의 1:1 매핑 정보를 알고 있어야 원래 문자열을 알 수 있다. 따라서, 매핑정보 자체가 암호가 된다. 예를 들어, '서해안'이 원문이고 '동중국'이 매칭문이라면 매핑정보가 담긴 책자를 별도로 제공하고 암호를 받은 날짜에 해당하는 페이지를 찾아 매칭을 하는 방법도 있다. using System; class Progr..
그림색에 RGB로 심은 암호, ANSAN RGB는 "Red, Green, Blue"의 약어로, 빛의 색상을 나타내는 가장 일반적인 방법이다. 이 세 가지 기본 색상을 다양한 비율로 섞어 다양한 색상을 생성할 수 있다. RGB는 컴퓨터 그래픽스 분야, 디지털 이미지 처리 분야, 모니터 및 TV 디스플레이, 디지털 카메라 등 다양한 분야에서 사용된다. RGB는 빛의 추가적인 빛을 이용하여 색상을 혼합하는 가산혼합 방식을 나타낸다. 빨간색(Red), 초록색(Green), 파란색(Blue) 세 가지 색상이 각각 다양한 강도로 결합됨으로써 다양한 색상을 생성할 수 있습니다. 이렇게 생성된 RGB 값은 일반적으로 0에서 255 사이의 숫자로 표현된다. 예를 들어, (255, 0, 0)은 빨간색을, (0, 255, 0)은 초록색을, (0, 0, 255)는 ..
기호 픽토그램 암호, #&#*#☆★#&&* 픽토그램 암호는 그림이나 상징을 사용하여 단어나 문장을 나타내는 방법이다. 각각의 그림은 특정한 단어나 숫자 또는 자음이나 모음, 알파벳을 의미하고 나타내며, 이러한 그림들을 조합하여 메시지를 구성할 수 있다. 이 방법은 간단하면서도 효과적인 암호화 방법 중 하나다. 아래는 C#으로 코딩한 숫자 픽토그램 암호의 예시다. 숫자 픽토그램 암호는 각 숫자를 나타내는 기호를 사용해서 표현한다. 예를 들어 123을 표현한다면 1은 하트, 2는 꽃, 3은 별모양과 같이 대체한다. using System; using System.Text; class Program { static void Main() { string numericCode = "01012345678"; string pictogramCode = Conv..
셔플링(Shuffling) 암호, 산이전삼나두세도느과 낮은 수준의 암호 개념으로 입력된 문자의 순서를 무작위로 섞는 방법이다. 이렇게 하면 원래 문장의 구조가 부서지기 때문에 글을 읽기 어려워진다(가독성이 없다.). 그렇지만, 무작위로 섞인 문자는 원래의 문장이나 단어를 알고 있는 사람에게는 어렵지 않다. 예를 들어, '낮말은새가듣고밤말은쥐가듣는다'를 셔플링해서 결과가 '듣가낮다쥐은말은밤는말새고듣가'로 나왔다면 당신은 이미 평문(원문)을 알고 있기때문에 어렵지 않게 맞출 수 있지만 외국인이나 속담을 모르는 사람은 맞추기 어렵다. using System; using System.Linq; using System.Text; class Program { static string ShuffleCharacters(string input) { // Convert th..

728x90