Identity from the perspective of authentication

In this video Stephen Downes, convener of the E-Learning 3.0 MOOC explains that in the future our safety and security online will be managed through the use of identification keys. We will each have a private key and a public key, which we will plug into our computers instead of signing on with a password.

Source of  image –  Yubico.com

In the future everyone will be logging in like this and passwords will become a thing of the past.

Why do we need two keys? This is to ensure maximum security and encryption.  The two keys act like a two-way security system. We can think of our private key as our ‘key’ and our public key as the ‘lock’, i.e. the one won’t work without the other. You can only get through the door if you have the right key and the right lock.

So, an example found on Quora  explains how you can use private and public keys to send and receive encrypted messages like this:

Robert wants to send Katie a file. Robert would request Katie’s public key to encrypt the file and then encrypt it with her public key. Robert would then send the file to Katie. Katie would then decrypt the file with her private key.

In this way, Katie’s public key is only used to encrypt but can never be used to decrypt, keeping the data safe. And Katie can only decrypt the data with her private key and would never exposes her private key to anyone, keeping her private key safe. (Source: https://www.quora.com/profile/Ken-Mafli-1)

Stephen in his video (starting at about 7.00 minutes in) explains this in more detail and makes it very clear that a signature on the sent encrypted message would be needed to make it absolutely secure, otherwise you couldn’t be sure who had the public key. The point is to be able to prove who you say you are and keep your communications online safe, without the use of passwords. Your digital identity (based on your identity graph/s) becomes your public key, which is unique to you, and your private key keeps you safe.

Stephen believes that in ten years’ time this is how we will all be accessing the internet. I wonder how straightforward this will be for the average user. I will be in my 80s in 10 years’ time. Will this make it easier for me and people like me, or, as Stephen asks elsewhere on the E-Learning 3.0 course site,

“Will we be lost in the sea of possibilities, unable to navigate through the complexities of defining for ourselves who we are, or will we be able to forge new connections, creating a community of interwoven communities online and in our homes?”

Hopefully there will be more courses like this one which will help us to keep abreast of developments and where we are headed.

This is only a brief summary of the key points in Stephen’s video, as I see them. You need to watch the 25 minute video to get a more complete picture.

And have a look at the Resources – provided by Stephen which I have copied below:

FIDO U2F
Yubico, 2018/11/15

As explained on the Yubico website, “U2F is an open authentication standard that enables internet users to securely access any number of online services with one single security key instantly and with no drivers or client software needed.  FIDO2 is the latest generation of the U2F protocol.”

Public-key cryptography
Wikipedia, 2018/11/15

Public-key cryptography, or asymmetric cryptography, is any cryptographic system that uses pairs of keys: public keys which may be disseminated widely, and private keys which are known only to the owner. This accomplishes two functions: authentication, where the public key verifies that a holder of the paired private key sent the message, and encryption, where only the paired private key holder can decrypt the message encrypted with the public key.

Keybase.io – Downes
Stephen DownesKeybase, 2018/11/15

This is my Keybase page. Here’s what Keybase says about itself: “Keybase is a new and free security app for mobile phones and computers. For the geeks among us: it’s open source and powered by public-key cryptography. Keybase is for anyone. Imagine a Slack for the whole world, except end-to-end encrypted across all your devices. Or a Team Dropbox where the server can’t leak your files or be hacked.” See also (very technical) Keybase for Everyone. And Keybase writing to the blockchain.

E-Learning 3.0 : Identity Graphs

We are now in the fourth week of this E-Learning 3.0 open course/MOOC. The task for this week is to create an Identity Graph, which Stephen Downes (convener of this course) has outlined as follows:

Identity – Create an Identity Graph

  • We are expanding on the marketing definition of an identity graph. It can be anything you like, but with one stipulation: your graph should not contain a self-referential node titled ‘me’ or ‘self’ or anything similar
  • Think of this graph as you defining your identity, not what some advertiser, recruiter or other third party might want you to define.
  • Don’t worry about creating the whole identity graph – focusing on a single facet will be sufficient. And don’t post anything you’re not comfortable with sharing. It doesn’t have to be a real identity graph, just an identity graph, however you conceive it.

Here is my graph, which I created using Matthias Melcher’s Think Tool – Thought Condensr, which is very quick and easy to use.

Like Matthias,  I puzzled over why Stephen required that the graph – “should not contain a self-referential node titled ‘me’ or ‘self’ or anything similar”. How could I avoid this if the graph is to be about my identity? In the event, it became obvious that not only is it possible to create the graph without referring to me, but also that doing this clearly demonstrates that knowledge of my identity is in the network rather than any specific node. My identity begins to emerge from the graph, without me having to specify it.

You can see from the graph that there are three links which don’t connect. I did this by simply cutting them off for the screenshot of the graph, because I wanted to suggest that this graph could, in fact, go on and on. This image provides only a glimpse of my identity. I could not only expand the graph, by making more links and connections, but I could also make more connections within this section of the graph. I am also aware that if I started afresh and drew this tomorrow it would be different because my identity and how I think of it is fluid and evolving.

I was also aware in drawing the graph that pretty much all of it is traceable online. It reminded me of the introductory task that was set on Etienne Wenger’s online course  Foundations of Communities of Practice that he ran with John Smith and Bron Stuckey in 2008. The task was based on the idea of six degrees of separation. “Six degrees of separation is the idea that all living things and everything else in the world are six or fewer steps away from each other so that a chain of “a friend of a friend” statements can be made to connect any two people in a maximum of six steps” (see Wikipedia). At the start of that course we were given the name of an unknown fellow participant and had to find out enough about them to be able to link to them in six steps and then share this information. This was a very good way of learning more about fellow participants at the start of the course, but also of recognising that we can easily connect to anyone across the world in just a few steps.

Stephen set some further optional questions for us to consider:

  • What is the basis for the links in your graph: are they conceptual, physical, causal, historical, aspirational?

They seem to be physical and historical, whereas Matthias’s graph seems to emphasise the conceptual. 

  • Is your graph unique to you? What would make it unique? What would guarantee uniqueness?

I think it must be unique. The nodes are not unique, but the relations between the nodes, whilst they might not be unique individually, as a whole must be unique. I think it would be impossible to guarantee its uniqueness if it remained static. Anyone could come along and copy or mimic it. Uniqueness can only be guaranteed if the graph is continually updating, evolving and new connections are being made. I am not sure whether old connections can be broken, or do they just become inactive and move way off to the edge of the graph?

  • How (if at all) could your graph be physically instantiated? Is there a way for you to share your graph? To link and/or intermingle your graph with other graphs?

I’m not sure if I have understood the question correctly? Isn’t the graph I have created using Matthias’s Think Tool, and posted here, a physical instantiation? Does physical instantiation have a specific meaning in relation to graphs? I think I might have missed the point – but I can see that it would be relatively easy to intermingle my graph with Matthias’s graph. It might be necessary for us both to add a few nodes and links, but not many, to be able to connect the two graphs fairly seamlessly (a bit like the six degrees of separation task described above).

  • What’s the ‘source of truth’ for your graph?

This is a big question as it raises the whole question of what we mean by truth. I have been grappling with this for quite a few months now. In my most recent blog post about ‘truth’ –  I reported that both Gandhi and Nietzsche have expressed the view that “human beings can only know partial and contingent truths and perspectives; there are a multiplicity of truths and perspectives.” So in these terms, the truth of my graph can only be partial or contingent. Even if I have not knowingly lied, I have selected what to include in the graph and therefore I have also selected what to leave out.

But Stephen’s question is about the ‘source of truth’. Is he asking about ‘source of truth’ as defined in information systems?  This is not a subject I know anything about.

In information systems design and theory, single source of truth (SSOT) is the practice of structuring information models and associated data schema such that every data element is stored exactly once. Any possible linkages to this data element (possibly in other areas of the relational schema or even in distant federated databases) are by reference only. Because all other locations of the data just refer back to the primary “source of truth” location, updates to the data element in the primary location propagate to the entire system without the possibility of a duplicate value somewhere being forgotten. https://en.wikipedia.org/wiki/Single_source_of_truth

In these terms I’m not sure how to answer Stephen’s question about ‘source of truth’. If someone could enlighten me that would be great.

Thinking of knowledge as a graph

This is a response to the E-Learning 3.0 task  for course participants created by Matthias Melcher. See https://x28newblog.wordpress.com/2018/11/09/el30-graph-task/

The task requires that we select from one of the topics of this course, and create a map from the list of keywords for the topic provided by Matthias. Matthias took the keywords from the synopsis for each topic written by Stephen Downes. The task is to connect and annotate the keywords.

Matthias provided links to two types of mapping tool – cmap.ihmc.us  and  a tool he has created himself – http://condensr.de/download-page/ . I have used both tools in the past, but I am more familiar with Matthias’ tool, so I used that.

I selected the ‘Cloud’ list of keywords, to create this map.

  • storage
  • electricity
  • server virtualization
  • vmware
  • docker
  • amazon web services
  • edx
  • coursera
  • yaml
  • vagrantfile
  • jupyter
  • redefine textbooks
  • experience
  • algorithm
  • containers
  • load-balancing

Creating the map

Since I have used this tool before (see A new mapping tool: useful for research purposes) I did not find it technically difficult.

Here is a screenshot of the map I created. Click on the image to enlarge it.

And here is a link to the interactive map, which is much more interesting, because by clicking on a node you can see the annotations – http://x28hd.de/tool/samples/JM%20Cloud%20Map.htm 

(I contacted Matthias to ask him to create this link for me. WordPress does not host .htm files; at least, as far as I am aware it does not)

Despite the lack of serious technical difficulties,  I did somehow manage to inadvertently make 4 copies of my map, one under the other. I found that it took a while to delete each node and link individually. And at another stage I managed to lose the map entirely (I think I swiped it off the screen). I have done this before, but I couldn’t remember how to get it back. I had saved the xml file though, so just uploaded it again. I know that Matthias is refining this tool all the time, so a block delete function sometime in the future would be great. (Update 13-11-18 – See http://condensr.de/2018/11/12/a-user-question/ for Matthias’s video explanation of how to overcome these minor difficulties that I had)

I created the map using the text from Stephen’s synopsis. This revealed the aspects of the topic that I still haven’t understood. I made a note of these in the text annotations (in italics). I did look up definitions and explanations of some terms and added text if an explanation wasn’t evident in Stephen’s text, e.g. algorithm. If I were to continue to develop the map, I would do more of this.

Thinking of knowledge as a graph

This is the real challenge, i.e. moving from thinking and seeing knowledge in a linear way to thinking and seeing knowledge as a network/graph.  I like lists, but in recent years I have come to appreciate that when you organise and categorise terms in lists you miss the richness of connections. Some terms need to be in more that one category. A map shows us how ideas are interconnected. A list cannot do this. Matthias explains this really well at the start of his video, which is posted on his website download page – http://condensr.de/download-page/

I know from my experience of using this tool, that my tendency is to use it as a repository for resources. It is actually great for this. I have used it for research purposes, as a place to store information and thoughts about related articles, but as Stephen writes

The graph, properly constructed, is not merely a knowledge repository, but a perceptual system that draws on the individual experiences and contributions of each node. This informs not only what we learn, but how we learn.

To develop my knowledge of the Cloud, to learn and understand more about it, I need to grow my connections and the links between them. The state of my knowledge can then be represented by the map. A  key affordance of Matthias’ Think Tool is that it is easy to ‘grow’ the map, adding nodes and links, and storing information about them, as this growth occurs.

A graph is a distributed representation of a state of affairs created by our interactions with each other. The graph is at once the ­outcome of these interactions and the source of truth about those states of affairs. The graph, properly constructed, is not merely a knowledge repository, but a perceptual system that draws on the individual experiences and contributions of each node. This informs not only what we learn, but how we learn. (Stephen Downes – https://el30.mooc.ca/cgi-bin/page.cgi?post=68472)

I do not yet fully understand the link that Stephen makes between graphs and the “source of truth”. I have yet to read the article he links to – Epistemology in the Cloud, which I think might help. Stephen has written

The source of truth, if there is any, lies in how those links are created and maintained ….. and that …. it’s not the individual idea that’s important, but rather how the entire graph grows and develops. It protects us from categorization errors and helps prevent things like confirmation bias.

This links to what Matthias says, at the beginning of his video, about the dangers of pigeon-holing things.

These ideas go beyond what Matthias asked for in his task, but I do see that in order to start thinking of knowledge as a graph, we probably need to start by creating graphs, and his Think Tool helps to make the shift from thinking of knowledge as a representational system to thinking of knowledge as a perceptual system.

And finally, I now realise, more than before, that I have already been thinking about this, implicitly, in my search for understanding what Iain McGilchrist means by ‘betweenness’, which I was writing about last month on this blog. See

‘Betweenness’ : a way of being in the world – https://jennymackness.wordpress.com/2018/10/02/betweenness-a-way-of-being-in-the-world/

Understanding ‘Betweenness’ – seeing beyond the parts – https://jennymackness.wordpress.com/2018/10/10/understanding-betweenness-seeing-beyond-the-parts/

Edusemiotics, the Divided Brain and Connectivism https://jennymackness.wordpress.com/2018/09/17/4436/

Resources

Matthias Melcher Thought Condensr website – http://condensr.de/

E-Learning 3.0, Part 3: Graph – https://el30.mooc.ca/cgi-bin/page.cgi?post=68472 and associated video https://youtu.be/WiaxHxiN_IA  (Stephen’s summary of the week)

E-Learning 3.0 : Graph

Graph is the Topic for Week 3 of Stephen Downes’ E-Learning 3.0 MOOC. Again, he has provided a good Synopsis – see https://el30.mooc.ca/cgi-bin/page.cgi?module=7. In the last three paragraphs in this synopsis he writes:

In connectivism we have explored the idea of thinking of knowledge as a graph, and of learning as the growth and manipulation of a graph. It helps learners understand that each idea connects to another, and it’s not the individual idea that’s important, but rather how the entire graph grows and develops.

It helps us see how a graph – and hence, knowledge – is not merely a representational system, but is rather a perceptual system, where the graph is not merely the repository, but a growing and dynamic entity shaped by – and shaping – the environment around itself.

Graphs and graph theory demonstrate in a concrete way how everything depends on something else, and helps us place our understanding of ourselves, or knowledge, and our work into a wider context. Hash graphs take this a step further by illustrating fundamental knowledge-creation mechanisms as cloning, forking, versioning and merging.

The task for this week requires creating a graph.

Task

I am not very familiar with graph theory. I know some of the language – vertices and edges – and I have seen graphs, but have not known until now that they are called graphs, e.g. I am familiar with the work of Aras Bozkurt @arasbozkurt.  See for example the dynamic graph he has created of Twitter activity on this course – https://twitter.com/arasbozkurt/status/1059543856394485760  That’s the limit of what I know about them, because, to be honest, graphs do not ‘light my fire’!

However, I have completed the task, at a novice’s level, so no need to read on unless you too are a novice, in which case you might be interested. I now know a bit more, and made some interesting discoveries, the most important one being that the graph is only as reliable/trustworthy as the data that is put in.

I will respond to each of the three parts of the task in turn.

  1. Create a model graph of some aspect of the E-Learning 3.0 course (it doesn’t have to be an actual graph, only a representation of what an actual graph might look like. We’ve already seen, eg., graphs on the relations between people in the course. Could there be other types of graphs?

This is my graph – hand drawn, which takes longer, but was good for making me think.

Before drawing this I first read the reading recommended in the newsletter – A Gentle Introduction to Graph Theory and watched a video that I found on YouTube – Graph Theory – An Introduction.

As yet I have only skimmed the other references in the reading list, but have copied them at the end of this post for future reference.

Below, I will describe the tortured way I went about this task.

I was interested in blog posts, the number of posts each participant (who has submitted their blog feed) has made and the number of comments they have received.

I went to my Feedly RSS reader where I have 20 blog posts in my EL30 category and went through all the blog posts relating to EL30, noting down the name of the blog, the name of the author, the number of posts made, and whether each post had received a comment or not, at the same time identifying who the comment was from. I then labelled each blog from V1 to V20. Having done this I was able to pull out all the blogs that have received comments, and identify in terms of V1 – V20, who these comments were from.

At this point I made a number of observations:

  • This graph will not represent the activity on the course, because a number of participants have made posts but not received any comments
  • I decided to only include comments from people in the EL30 course, whereas participants who already have an established network and blog, have received comments from people not participating in the course.
  • I had to decide whether an invited speaker counts as a course participant for this activity. I decided No.
  • I had to decide whether Stephen counts as a participant. I decided Yes.
  • For simplicity’s sake I did not record the number of times someone commented on a single post. I counted them all as one comment. My main objective was to see who was commenting on which blogs.

Later I skim read this article – https://medium.freecodecamp.org/i-dont-understand-graph-theory-1c96572a1401 and now think that some of these decisions were wrong, e.g. all participants should be in the graph even if they have not posted, or commented, on a blog.

  1. In your model, consider how the states of the entities in that graph might vary. Consider not only how nodes might vary (eg., a person might have a different height over time) but also how the edges might vary (eg., a person might have a different strength of relation (calculated how?) with another person over time).

At first, I interpreted this as how nodes might vary from each other and noted:

  • This might be a first-time blogger or a newly created blog
  • The participant might lack the confidence to comment on other blogs
  • The participant might be an introvert
  • The participant might have joined the course late
  • The participant might be a very experienced blogger
  • The participant might already have expertise in the topic
  • The participant might already be recognised as having expertise in the topic.
  • The participant might have more social power

But on second reading I realised that the question was about how individual nodes might vary over time. Presumably the significance of this is to show that the graph is dynamic rather than static. Of course, the graph I have drawn does not show this. It is static. I would have to draw a series of graphs over time to show it changing. This would then show that each node might vary over time by, for example, changing blogging practice, i.e. writing more or less posts thus increasing or decreasing the likelihood of receiving comments, commenting on other posts more or less (is this a function of the node or of the edge??), creating more than one blog, deleting a blog.

At this point I realised that it is easier to think of each node as a blog rather than as a participant, so the blog might become more or less active, over time, more or less connected over time.

How might the edges vary:

  • They can be bidirectional or unidirectional
  • They might represent a changing number of comments
  • New connections might form over time
  • Connections might break down over time
  1. In your model, consider how knowledge about the changes in states in the graph might be used.

At any one time the graph will show:

  • which nodes are interacting, and which are not
  • which nodes are commenting on other blogs and which are not
  • which are the most active nodes and which the least active
  • which nodes post comments but don’t receive them
  • which nodes receive comments but don’t post them

To get more out of this it would be necessary to:

  • include all participants, even those who at the time of creating this graph are not posting or commenting
  • consider how to represent a chain of interactions between the same people, i.e. a comment on a comment
  • consider whether to include comments from non-course participants

Obviously all this becomes more obvious and easier with a graph that is automatically updated and changes in front of your eyes.

An outstanding question I have is about the limits you put around a graph. For this graph I only looked at blogs and comments tagged #el30. But supposing there was suddenly no activity from any #el30 participant because they had all moved into new blogs and were now interacting with a different set of connections. How would we know that from this graph?

I’m not at all sure that I’ve completed this task correctly. Given that this is a public post, it would be good if any errors were pointed out so that others can see them.

Resources provided by Stephen Downes

A Gentle Introduction To Graph Theory
Vaidehi JoshiBaseCS, 2018/11/05

This is a gentle introduction to graph theory. Graphs are data structures in which entities – called ‘nodes’ – are connected to other entities via some sort of a link – called an ‘edge’. In graph theory there are no limits on what can be connected, nor how they can be connected. Defining graphs in specific ways, however, creates the structures that underlie most of the modern web.

The Neural Network Zoo
Fjodor van Veen, 2018/11/05

Neural Networks are types of graphs. In the past I have stated that in order to be a network, a change of state in one entity in a graph must be capable of producing a change of state in another entity. Neural networks are therefore dynamic and interactive graphs. This resource describes a bunch of different neural networks. Different neural networks have different capabilities, and today are playing an increasingly important role in artificial intelligence.

Types of Machine Learning Algorithms in One Picture
Vishakha JhaTechLeer, 2018/11/05

The diagram in this resource describes some different types of neural networks. Take a look at the specific tasks they perform – neural networks are good at things like classification and recognition, as well as regression (that is, finding a trend or regularity in data). I got this image from this page, which has more resources on neural networks. Web:

Graph Data Structure And Algorithms GeeksforGeeks, 2018/11/05

Graphs are important types of data structures. Instead of thinking of things in rows and columns (the way we would in a spreadsheet or a database) we think of things as nodes and edges. This page has a very brief description of a graph data structure and then a long list of things that can be done with graphs – cycling, sorting, spanning, searching. This page is meant to explore, not to learn – follow the links, try running some of the code (click on the r’run in IDE button’).

What college students should learn about Git
Christopher JefferyMedium, 2018/11/05

You may have heard of GitHub – the open source software repository that was recently acquired by Microsoft for $7.5 billion. GitHub is important because it allows authors to release related versions of their software, to incorporate and merge contributions from many authors, and to allow people to create their own version (or ‘fork’) any application. To do this, GitHub is structured as a Directed Acyclic Graph, creating a series of relationships among code libraries.