ocx 프로그래밍을 하다가, visual studio 버전을 올리다 보면, 

ocx가 포함된 dialog를 열다가 exception이 나는데 알고 보면 occcont.cpp의 925번째 라인 오류라고 나올 때가 있다.


나의 경우는 빈번하게 발생해서 여기에 적어둔다.


해결책은 command line으로 가서 해당 ocx를 

regsvr32 /u my_ocx.ocx 이런식으로 unregister해주고 나서 

regsvr32 my_ocx.ocx 이런식으로 다시 register해주면 된다.


관리자 권한이 아닐경우 친절하지 않게 이상한 오류가 발생할 수 있으니 반드시 comand 창을 관리자 권한으로 열자

반응형

'Programming > Visual studio' 카테고리의 다른 글

visual studio 단축키  (0) 2017.11.12

딥러닝 개념을 공부하면서 python으로 만들어 본 구현체


아래 코드에는 XOR를 학습시키는 코드까지 함께 들어있다.


github(https://gist.github.com/sevity/)에서도 코드를 볼 수 있다.





반응형

'AI, ML > ML' 카테고리의 다른 글

Standardization vs normalization  (0) 2019.01.04
Gym  (0) 2018.11.07
크로스엔트로피 손실함수  (0) 2018.10.02
credit assignment problem  (0) 2018.09.27
exploit - explore dilemma  (0) 2018.09.27

MD5

 

md5는 암호화 해시 함수의 일종이다.

해시함수(http://sevity.tistory.com/21) 및 암호화해시함수(http://sevity.tistory.com/22)에 대해서는 각각의 링크를 참조해주시기 바랍니다.

 

다음 그림과 같이 어떤 길이의 인풋이 들어오더라도 128bit의 해시값으로 만들어준다.

 

 

인풋의 길이와 상관없이 128비트의 해시값을 생성한다(위의 DFDD등은 16진수로 표기한것이며, 위 샘플은 해시값의 길이가 128비트가 아니어서 정확히 md5 예제는 사실아님에 유의, 위는 계산하면 160비트다 그리고 그렇다면 SHA가 되겠다 ㅎㅎ)

 

글자하나가 미묘하게 바뀌어도 결과값이 크게 달라지는 난수화 효과가 발생함을 알 수 있다. (이래야 역공학이 힘들다)

 

MD5의 내부 구현기술은 여기(https://ko.wikipedia.org/wiki/MD5)를 참조하면 되는데, 

 

실제 구현시에는 #include <openssl/md5.h> 등으로 쉽게 라이브러리를 쓸 수 있어서, 학습용이 아니면 반드시 직접 구현할 필요는 없다.

 

 

linux 머신에서 다음과 같이 간단한 방법으로 md5 값을 확인할 수 있다.

 

$ echo -n "sevity" | md5sum

34208682f4f71b1cc3a87bbaad4af709

 

 

나중에 새로 나온 SHA에 비해서 보안에 취약하다는 약점이 있다.

 

SHA

 

MD5랑 개념적으로는 암호화 해시의 일종이라는 점에서 같고, 어떤 길이의 인풋이 오더라도 160bit의 해시값으로 만들어 준다.

MD5와 마찬가지로 내부 디테일까지 꿰고 있을 필요는 없어보인다.

MD5보다는 좀 더 역상 공격하기 힘들게 설계되어 있다. 

 

미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정

 

SHA버전별 정보는 위키피디아에서 가져온 아래 표 참조

 

 

 
필드에서는 SHA-256이 많이 쓰이고 있는 상황인 것 같다.
 
linux 머신에서 다음과 같이 간단한 방법으로 SHA값을 확인할 수 있다.
 
echo -n sevity | sha256sum
3334da01eb032a81a83e89d1b60198910647fcb698f47a81bdd61c0719212309  -
 
 

 

 

 

 

반응형

'비트코인' 카테고리의 다른 글

비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31
비트코인 분석 연재를 시작하며  (0) 2017.12.10
암호화 해시 함수(cryptographic hash function)  (0) 2017.12.10
hash 기초  (0) 2017.12.10

티커심볼


한국에서는 숫자 6자리로 된 종목코드를 일반적으로 쓰는 것 처럼, 미국에서는 알파벳으로 구성된 한글자에서 네글자 정도의 종목코드를 사용하고 이를 티커라고 한다.

티커는 거래소에서 중복이 없도록 나름대로 정의한거라 거래소 의존적인 값이고, 따라서 거래소 마다 특색이 있다.

NYSE 거래소에서는 한글자에서 세글자 사이로 정의되고, 

Nasdaq 거래소에서는 네글자로 구성되는 식이다.


근데 CRD.A, CRD.B 처럼 뒤에 A또는 B suffix가 붙는 경우가 있다. (RIC에서 붙이는 suffix랑은 다른 개념임에 주의)

이는 어떤 종목이 우리나라 우선주, 보통주처럼 class A, class B 주식이 있을 경우이다.

class A는 보통 class B보다 많은 의결권을 갖는다.

문제는 CRD.A로 표기하는 경우도 있고(주문낼때), CRD/A로 표기하는 경우도 있고(블룸버그 시세), CRD-A로 표기하는 경우도 있다는 것이다(야후시세)

이런걸 보면 미국 주식 시스템이 좀 엉망진창이다.


RIC(Reuters Instrument Code)


티커는 거래소 의존적이기 때문에 ABC라는 티커가 있을때 거래소별로 다른 종목을 의미하는 불상사가 일어날 수 있다.

따라서 로이터에서는 거래소 티커뒤에 거래소 suffix를 붙이는 식으로 나름 유니크한 코드를 만들고 이를 RIC라고 명명했다.


예를 들면 WMT.N 는 New York Stock Exchange (N)에 상장된 Wal-Mart(WMT)종목이라는 의미다.




반응형

'재무 금융' 카테고리의 다른 글

위험조정수익률(risk-adjusted return)  (0) 2018.01.26
z-score, Sharpe's ratio(샤프 비율)  (0) 2018.01.25
선물  (0) 2018.01.21
펀드 이해하기  (0) 2017.11.24
수익률  (0) 2017.11.21

비트코인에 쓰인 알고리즘에 대해서 피상적으로는 해시함수나 블록체인 기술이 사용됨을 알고 있지만,

세부적인 내용에 대해서는 잘 모르기에, 그 내용을 파악해 가면서 관련 글을 연재해볼까 합니다.


일단 시작은 해시 함수에 대한 내용이 될 것 같습니다.


해시함수 기초: http://sevity.tistory.com/21

함호화 해시함수: http://sevity.tistory.com/22

반응형

'비트코인' 카테고리의 다른 글

비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31
md5, sha  (0) 2017.12.12
암호화 해시 함수(cryptographic hash function)  (0) 2017.12.10
hash 기초  (0) 2017.12.10

해시함수의 기본적인 내용에 대해서는 이전 글(http://sevity.tistory.com/21) 참조


자세한 설명에 들어가기전에 다음 예제를 살펴보자.

철수는 영희에게 중요한 문서를 전달할 예정이다.

그런데 누군가 중간에서 그 문서의 내용을 해킹으로 바꿀 수 있기 때문에, 문서내용에 대해서

(string to int) hash function을 적용해서 오프라인으로 해시값을 알려주기로 했다. 

이 해시값을 42라고 해보자.

영희는 문서를 전달받은다음, 철수와 동일한 hash function을 적용해서 42라는 값을 얻었고, 문서가 해킹당하지 않았음을 확신했다.


위와 같은 시나리오로 보안에서 해시가 사용되는 거시다.


그런데 만약 해시값인 42로 부터 원본 문서의 내용을 일부라도 유추할 수 있다면 어떻게 될까..

예를 들어 해시값이 4로 시작하면 원본 문서의 내용에 money라는 단어가 들어간다던가..

이런일이 있으면 안되기 때문에 해시값으로 부터 원본의 내용을 찾는게 계산상 어렵도록 hash function을 설계해야 한다.

이러한 공격을 제1역상 공격이라 하며, 이에 저항하기 위해 hash function이 가져야 하는 성질을 제1역상저항성(preimage resistance)이라 한다.


그런데, 또 다른 예를 살펴보자.

해커가 제1역상 공격을 통해 원본 내용을 찾는것은 불가능하더라도, 

여러가지 문서들을 hash function에 넣어보면서 42라는 같은 결과가 나오는 전혀다른 문서를 찾는다면 어떻게 될까?

이런게 가능하다면 영희는 해시값이 42로 동일하기 때문에 문서내용이 바뀌어도 모를 수 있을 것이다.

(단 이런 공격을 시도 하려면 hash function이 공개되어 철수/영희가 사용하는 것과 해커가 사용하는게 같아야 한다는 전재조건이 붙는다)

위와 같은 공격을 제2역상공격이라 하며, 이를 막기위해 입력의 해시 값을 바꾸지 않으면서 입력을 변경하는 것이 계산상 어렵도록 hash 함수를 설계해야 하며 이를 제2역상저항성(second preimage resistance)이라 한다.


위의 제2역상 공격은 사실 해시 함수의 충돌(collision)이라는 약점을 파고드는 것인데,

해시 함수는 더 큰 인풋(문서내용)을 더 작은 아웃풋(숫자하나)로 바꾸는 과정이기 때문에 충돌이 아예 없을수는 없다.

하지만 같은 해시 값을 생성하는 두 개의 입력값을 찾는 것이 계산상 어려워야 하며 이를 충돌 저항성(collision resistance)이라 부른다.

즉, 입력값과 해시 값에 대해서, 해시 값을 망가뜨리지 않으면서 입력값을 수정하는 공격에 대해 안전해야 한다. 이러한 성질을 가지는 해시 값은 원래 입력값을 의도적으로 손상시키지 않았는지에 대한 검증 장치로 사용할 수 있다.


좀더 알기쉽게 표현하자면 인풋의 일부만 바뀌어도 결과값이 크게 바뀔때 위의 속성들을 만족하는 좋은 해시라고 보통 표현을 하게된다.


또다른 예로는 패스워드를 암호화하는 것을 들 수 있다.

일방향이고 리버스 엔지니어링이 힘들다는 역상저항성을 활용해서, 주민번호나 패스워드를 직접 DB에 저장하는 대신 해시값을 저장하게 되면,

운영자에게 비밀번호나 주민번호를 노출하지는 않으면서도 로그인 보안은 구현할 수 있게 된다.

(물론 여기서도 전혀다른 비밀번호가 같은 해시값을 도출하게되는 제2역상공격이 성공하게 되면 큰일이다)

반응형

'비트코인' 카테고리의 다른 글

비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31
md5, sha  (0) 2017.12.12
비트코인 분석 연재를 시작하며  (0) 2017.12.10
hash 기초  (0) 2017.12.10

hash라고 했을때 헷갈리는 이유는 

자료구조로서 hash map (hash table) 과 

핵심함수인 hash function 이 헷갈려서 그런 이유가 크다.


비트코인에는 hash function이 내부적으로 사용된다.



자료구조로서 hash map은

key와 value가 있는데, key를 주면 value를 빠르게 토해내는 컨테이너..

기능으로 보자면 stl map이나 python dict 등과 비슷하다고 볼 수 있다.

단 map이나 dict는 보통 tree(그 중에서도 레드-블랙트리가 일반적)로 구현된다.

tree는 O(log N)의 복잡도를 가져서 hash의 O(1)보다 느리지만, 사용량에 따라 가변적으로 메모리를 할당하기 유리하기 때문.

거꾸로 말하면 hash는 미리 상당한 양의 메모리를 덩어리째 할당해야하는 구조라 trade-off가 있다고 볼 수 있다.

 

hash map은 O(1)의 속도를 위해서 쓰는것은 자명한데.. 어떤것이 빠른거냐.

Insert,Update,Delete,Search

위 네 가지 연산 모두 O(1)이다.

(물론 메모리공간을 처음에 충분히 할당한 경우이며, worst case 시나리오에서 collision이 발생하면 실제로는 이보다 느려질 수 있음)


c++에서는 stl map 을 쓰면 내부구현에 tree가 보통 사용되고, 내부적으로 tree가 아닌 hash가 사용되도록 하고 싶으면 unordered_map을 쓰면된다.



핵심함수인 hash function은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 

이게 무슨 뚱딴지 같은 소리인가 하겠지만.. 

일단 이해를 돕기위해 string to int hash function의 예를 들어보자.

임의의 string이 들어왔을때 1024이하의 숫자하나로 매핑이 된다고 해보자.

예를 들면 "Kim Wonil"이 들어왔을때 42로 매핑이 되고,

"Lee Hana"가 들어왔을때 27이 매핑되는 식이다.

이런걸 만들어서 어따가 쓸까..

1. hash map 자료구조를 hash function을 통해서 만들면 O(1)로 매우 빠른 자료구조를 만들수 있다.

2. 긴 길이의 데이터를 짧은 길이의 숫자로 바꿔주는 구조로 인해서 변경내용이 있는지 확인하는데 쓸 수 있다.

예를 들어서 겉보기에는 매우 비슷한 소스코드 두 개가 있다고 해보자.

그런데 둘의 내용이 일치하는지 아닌지 확실하지 않다고 해보자.

그러면 나이브한 방법으로는 두 파일을 바이트 단위로 비교하는 방법이 있을 것이다.

그런데 이렇게 나이브하게 하지 않고, 두 파일의 내용에 대해 각각 (string to int) hash function을 적용한다음 결과로 나온 숫자를 비교하는 방법도 있다.

예를 들어 첫번째 파일에서는 내용으로 해시한 결과값이 42인데 두번째 파일로 나온 값은 27이라면 두 파일의 내용은 확실히 다르다고 판정할 수 있다.

단, 해시값이 예를 들어 42로 동일하다고 해도 반드시 두 파일의 내용이 같다고 역으로 보장해주지 않는다.

이는, 큰 숫자를 작은숫자로 매핑하는 과정에서 반드시 충돌이 발생할 수 있다는 점을 상기해 보면 쉽게 이해가 된다.


이를 다시 적어보면 다음과 같다.

두 해시 값이 다르다면 그 해시값에 대한 원래 데이터도 달라야 한다. (역은 성립하지 않는다)

해시 함수의 가장 기본적인 성질은 두 해시 값이 다르다면 원래의 데이터도 다르다는 것이다. 이 특징은 해시 함수가 결정적이기 때문이다. 

위의 내용중 바이트 단위로 비교한다는 나이브 접근이 심각해보이지 않을 수도 있는데, 

단 두개의 문서를 비교할때는 심각성이 크지 않을 수 있지만,

예를 들어 특정폴더에 있는 파일중 내용이 같은파일이 있는지 검사하는 프로그램을 짠다고 해보자.

나이브한 방법으로는 파일의 갯수가 n개라면 모든 pair에 대해서 n(n-1)/2번 비교를 해야 중복파일 여부를 알 수 있다. 즉 $O(n^2)$

그런데 위의 해시함수를 사용한 방법으로는 해시함수값 끼리만 숫자비교를 하면 되기 때문에 $O(n)$ 으로 수행속도를 줄일 수 있다.


3. 함호학이나 비트코인에서 사용되는 해시 함수는 관련글(http://sevity.tistory.com/22) 참조

 

http://www.partow.net/programming/hashfunctions/index.html

위링크에 가보면 엄청 많은 종류의 해시펑션을 제공함..

반응형

'비트코인' 카테고리의 다른 글

비트코인 논문 리뷰  (0) 2021.08.31
블럭체인의 원리  (0) 2020.07.31
md5, sha  (0) 2017.12.12
비트코인 분석 연재를 시작하며  (0) 2017.12.10
암호화 해시 함수(cryptographic hash function)  (0) 2017.12.10

sudo su로 먼저 root권한을 얻는다.


firewall-cmd --permanent --zone=public --add-port=80/tcp  이걸로 원하는 리슨포트를 추가한다.
firewall-cmd --reload 이거 해주면 반영 된다.

설정된 값 확인은
vi /etc/firewalld/zones/public.xml 이걸로 할 수 있다.


CentOS 6는 아래 확인

https://blog.miyam.net/7



반응형

'Programming > Linux' 카테고리의 다른 글

crontab  (0) 2019.09.27
리눅스 계정 관리  (0) 2019.09.19
리눅스 port 확인  (0) 2017.12.04
sudo 관련  (0) 2017.11.07
디스크/폴더 사용량, 남은용량 확인  (0) 2017.11.07

서버의 특정 포트가 열려있는지 확인하려면 다음 명령어를 사용하면 된다 


nc

예전에는 nc -z가 유용했는데 -z옵션이 없어져버림

nc -z 대신에 nc --send-only </dev/null  {ip} {port} 하면 connect 여부를 확인할 수 있다.

바로 다음 커멘드라인 떨어지면 connect 성공한거고 connect가 안되면 hang이 걸린다.


nc -v {ip} {port} 이걸로 되는것 같기도 하다.


nmap

nmap -Pn -p80 naver.com


위처럼 하면 naver.com에서 80포트가 열려있는지 확인할 수 있다.

열려있다면 다음처럼 보인다.


$ nmap -Pn -p80 naver.com


Starting Nmap 7.01 ( https://nmap.org ) at 2017-12-04 13:26 KST

Nmap scan report for naver.com (125.209.222.142)

Host is up (0.0044s latency).

Other addresses for naver.com (not scanned): 202.179.177.21 202.179.177.22 125.209.222.141

PORT   STATE SERVICE

80/tcp open  http


Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds



위에서 open 또는 closed로 겁색되면 접근자체는 되는것인데 filtered로 검색되면 방화벽 등에서 접근을 차단한 것이다!


telnet


telnet naver.com 80

반응형

'Programming > Linux' 카테고리의 다른 글

crontab  (0) 2019.09.27
리눅스 계정 관리  (0) 2019.09.19
CentOS 7 방화벽  (0) 2017.12.04
sudo 관련  (0) 2017.11.07
디스크/폴더 사용량, 남은용량 확인  (0) 2017.11.07

펀드: 뮤추얼 펀드 + 수익증권인데 복잡하니 이 글에서는 뮤추얼 펀드를 생략하도록 하자.


주식: 직접투자

펀드: 간접투자



운용: 투자신탁운용
판매: 투자신탁증권, 증권사, 은행
수탁회사: 은행
대략 상식적으로 이해 잘되는 그림인데. 중요한건 판매와 운용, 그리고 수탁이 분리되어 있다는 것.
예를 들면 미래에셋디스커버리주식형펀드의 경우 미래에셋증권에서 판매하고 미래에셋자산운용에서 운용하는 식
(앞으로 자산통합법이 발효되면 운용사에서도 판매가 가능해진다고 한다)
수탁회사는 운용사가 고객 돈을 남용하는걸 방지하기 위해 존재(은행에 넣고 관리 감독)



수익증권: 펀드에 가입하면 주는 증권

수익증권을 세는 단위는 '좌'이다. 주식이 '주' 인것과 비슷


배당과 기준가 개념

배당

배당으로 인해 순자산가치는 하락하게됨(응?)


기준가(NAV : Net Asset Value) = (총순자산가치-수수료)/잔존수량 x 1000좌

총순자산가치가 상승하면 기준가도 상승하는 공식임을 알 수 있다.

펀드는 증권시장에서 주식 및 채권 등에 투자하는 자금의 집합체로서 ‘기준가’는 이러한 운용의 결과가 녹아있는 ‘펀드의 적정가격’입니다. 

또 기준가는 투자자들이 펀드에 투자 또는 환매할 때 거래의  '기준'이 되는 '가격'이기도 합니다.

예로 들어보면, 기준가격이 1,500원인 수익증권 펀드에 1,500만원을 투자하게 되면, 해당 고객은 1천만좌의 수익증권을 매입하게 되는 것입니다. 

이 펀드의 기준가격이 2,000원이 되면 해당 고객은 2,000만원(세금 납부 전)을 되찾게 됩니다. 

이 기준가격은 장 중에 주가가 변하더라도 변동하지 않으며 당일 증권시장 종료 후 당일 거래내역 등을 감안해 저녁 늦게 사무관리회사(혹은 자산운용사)가 펀드의 기준가를 다시 계산하고 다음날 아침에 공시하게 됩니다(공휴일 제외)

전일종가: 주식시장 오후 3시, 채권시장 오후 5시


익일매입방식

펀드의 매입제도가 과거 당일 매입방식에서 익일매입방식으로 변경됐습니다. 

매입가격을 모르고 투자한다고 해서 이를 '블라인드-Blind 매매방식'이라고 합니다. 

이 같은 펀드매입제도는 펀드가 주식처럼 단타매매 대상이 되는 것을 방지하고 이미 해당펀드에 투자한 가입자를 보호하기 위한 차원에서 마련됐습니다.

주가는 외부 쇼크로 급락하게 되면 다음날 곧바로 반등하는 사례가 많습니다. 따라서 다음날 주가가 강하게 오를 것이 뻔한 상황에서 주식시장이 종료된 3~5시쯤 판매사 창구를 통해 펀드에 투자해 두면 다음날 주가반등 차익을 고스란히 얻을수 있을 것입니다. 이외에도 증시의 대형호재가 장종료후 발표되는 경우에도 동일한 결과가 발생하게 됩니다.

이에 따라 정부는 주식이 50%이상 편입되는 펀드에 한해 오후 3시 이전 가입청약자와 이후 가입청약자로 구분하고 이전 청약자는 익일기준가격으로, 이후 청약자는 이틀후 기준가격으로 매입하도록 제도를 변경한 것입니다. 


펀드의 가격 계산

어떤 펀드가 발생 됐다고 해보자. 

처음 자산이 총 100만원이라고 하면 1원에 1좌이므로 총 100만좌가 발행된다.

기준가는 1000좌당 가격이므로 천원이된다.



기준가가 결정되는 시점

판매회사에서는 보통 16:30까지 펀드 매입 신청을 받음

이때 적용되는 기준가는 전일 종가임


주식과 펀드의 차이

주가는 하루종일 변하지만 펀드의 가격은 장 종료시 한번만 변함

펀드를 매수하면 전일종가로 사게됨




총 순자산가치


기준가: '주가'와 비슷

펀드는 주로 주식이나 채권에 투자하지만, 보유 주식이나 채권을 직접 나눠 주는 것이 아님.

개별 투자종목의 소유권을 갖는게 아님


펀드를 하나만들면 처음 1좌의 가격은 1원

1좌의 가치가 1원에서 2원으로 오르면 두배버는 것

근데 1좌는 주식에 비해 너무 단위가 작아 불편함. 그래서 1000좌단위로 묶어서 표시하고 이를 '기준가'라고 함


여기서 중요한 개념이 등장하는데..

펀드의 기준가는 매년 실시하는 결산 때 그간 번 돈을 배당하는 식으로 대부분 1000원에서 다시 출발!


좋은펀드는 결산때 배당을 많이 한 펀드라고 볼 수 있음



수익률 계산


펀드(수익증권)의 수익률을 계산하는 방법을 보면, "펀드수익률 = 현재의 기준가/ 가입시점의 기준가 -1"가 됩니다. (단순 수익률)

그러나 펀드의 경우에는 중간에 결산을 통해 배당을 실시하고 기준가를 낮추는 경우가 있습니다. 

이러한 경우에는 실제 투자금액을 기준으로 수익률을 계산하는 것이 정확합니다. 

즉, "펀드수익률 = 현재의 기준가 x 현재보유좌수 / 가입금액 -1"으로 계산하는 것이 정확한 수익률이 됩니다.

(배당을 하는 경우 추가로 수익증권을 받게됩니다.



자본이득배분, 재투자


외부링크

모닝스타..괜찮게 정리된듯하다.

http://www.morningstar.co.kr/fundSchool/ViewCourseArticle.asp?ctype=F&cseq=103&csub=1&Cnum=1&tab=6&subTap=1


반응형

'재무 금융' 카테고리의 다른 글

위험조정수익률(risk-adjusted return)  (0) 2018.01.26
z-score, Sharpe's ratio(샤프 비율)  (0) 2018.01.25
선물  (0) 2018.01.21
미국 Ticker Symbol 시스템 정리  (0) 2017.12.12
수익률  (0) 2017.11.21

+ Recent posts